// 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  S3223C4_nt  {
  int s3223c4f0[2];
  void  mf3223c4(); // _ZN10S3223C4_nt8mf3223c4Ev
};
//SIG(-1 S3223C4_nt) C1{ m Fi[2]}


void  S3223C4_nt ::mf3223c4(){}

//skip512 S3223C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3223C3_nt  {
  int s3223c3f0;
  __tsi64 s3223c3f1;
  void *s3223c3f2[4];
  int s3223c3f3[2];
  void *s3223c3f4;
  ::S3223C4_nt s3223c3f5;
  void *s3223c3f6[2];
  virtual  ~S3223C3_nt(); // _ZN10S3223C3_ntD1Ev
  virtual void  v4(); // _ZN10S3223C3_nt2v4Ev
  virtual void  v5(); // _ZN10S3223C3_nt2v5Ev
  virtual void  v6(); // _ZN10S3223C3_nt2v6Ev
  virtual void  v7(); // _ZN10S3223C3_nt2v7Ev
  virtual void  v8(); // _ZN10S3223C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3223C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3223C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3223C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3223C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3223C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3223C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3223C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3223C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3223C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3223C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3223C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3223C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3223C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3223C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3223C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3223C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3223C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3223C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3223C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3223C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3223C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3223C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3223C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3223C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3223C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3223C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3223C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3223C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3223C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3223C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3223C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3223C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3223C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3223C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3223C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3223C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3223C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3223C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3223C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3223C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3223C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3223C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3223C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3223C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3223C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3223C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3223C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3223C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3223C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3223C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3223C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3223C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3223C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3223C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3223C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3223C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3223C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3223C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3223C3_nt3v67Ev
  S3223C3_nt(); // tgen
};
//SIG(-1 S3223C3_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]}


 S3223C3_nt ::~S3223C3_nt(){ note_dtor("S3223C3_nt", this);}
void  S3223C3_nt ::v4(){vfunc_called(this, "_ZN10S3223C3_nt2v4Ev");}
void  S3223C3_nt ::v5(){vfunc_called(this, "_ZN10S3223C3_nt2v5Ev");}
void  S3223C3_nt ::v6(){vfunc_called(this, "_ZN10S3223C3_nt2v6Ev");}
void  S3223C3_nt ::v7(){vfunc_called(this, "_ZN10S3223C3_nt2v7Ev");}
void  S3223C3_nt ::v8(){vfunc_called(this, "_ZN10S3223C3_nt2v8Ev");}
void  S3223C3_nt ::v9(){vfunc_called(this, "_ZN10S3223C3_nt2v9Ev");}
void  S3223C3_nt ::v10(){vfunc_called(this, "_ZN10S3223C3_nt3v10Ev");}
void  S3223C3_nt ::v11(){vfunc_called(this, "_ZN10S3223C3_nt3v11Ev");}
void  S3223C3_nt ::v12(){vfunc_called(this, "_ZN10S3223C3_nt3v12Ev");}
void  S3223C3_nt ::v13(){vfunc_called(this, "_ZN10S3223C3_nt3v13Ev");}
void  S3223C3_nt ::v14(){vfunc_called(this, "_ZN10S3223C3_nt3v14Ev");}
void  S3223C3_nt ::v15(){vfunc_called(this, "_ZN10S3223C3_nt3v15Ev");}
void  S3223C3_nt ::v16(){vfunc_called(this, "_ZN10S3223C3_nt3v16Ev");}
void  S3223C3_nt ::v17(){vfunc_called(this, "_ZN10S3223C3_nt3v17Ev");}
void  S3223C3_nt ::v18(){vfunc_called(this, "_ZN10S3223C3_nt3v18Ev");}
void  S3223C3_nt ::v19(){vfunc_called(this, "_ZN10S3223C3_nt3v19Ev");}
void  S3223C3_nt ::v20(){vfunc_called(this, "_ZN10S3223C3_nt3v20Ev");}
void  S3223C3_nt ::v21(){vfunc_called(this, "_ZN10S3223C3_nt3v21Ev");}
void  S3223C3_nt ::v22(){vfunc_called(this, "_ZN10S3223C3_nt3v22Ev");}
void  S3223C3_nt ::v23(){vfunc_called(this, "_ZN10S3223C3_nt3v23Ev");}
void  S3223C3_nt ::v24(){vfunc_called(this, "_ZN10S3223C3_nt3v24Ev");}
void  S3223C3_nt ::v25(){vfunc_called(this, "_ZN10S3223C3_nt3v25Ev");}
void  S3223C3_nt ::v26(){vfunc_called(this, "_ZN10S3223C3_nt3v26Ev");}
void  S3223C3_nt ::v27(){vfunc_called(this, "_ZN10S3223C3_nt3v27Ev");}
void  S3223C3_nt ::v28(){vfunc_called(this, "_ZN10S3223C3_nt3v28Ev");}
void  S3223C3_nt ::v29(){vfunc_called(this, "_ZN10S3223C3_nt3v29Ev");}
void  S3223C3_nt ::v30(){vfunc_called(this, "_ZN10S3223C3_nt3v30Ev");}
void  S3223C3_nt ::v31(){vfunc_called(this, "_ZN10S3223C3_nt3v31Ev");}
void  S3223C3_nt ::v32(){vfunc_called(this, "_ZN10S3223C3_nt3v32Ev");}
void  S3223C3_nt ::v33(){vfunc_called(this, "_ZN10S3223C3_nt3v33Ev");}
void  S3223C3_nt ::v34(){vfunc_called(this, "_ZN10S3223C3_nt3v34Ev");}
void  S3223C3_nt ::v35(){vfunc_called(this, "_ZN10S3223C3_nt3v35Ev");}
void  S3223C3_nt ::v36(){vfunc_called(this, "_ZN10S3223C3_nt3v36Ev");}
void  S3223C3_nt ::v37(){vfunc_called(this, "_ZN10S3223C3_nt3v37Ev");}
void  S3223C3_nt ::v38(){vfunc_called(this, "_ZN10S3223C3_nt3v38Ev");}
void  S3223C3_nt ::v39(){vfunc_called(this, "_ZN10S3223C3_nt3v39Ev");}
void  S3223C3_nt ::v40(){vfunc_called(this, "_ZN10S3223C3_nt3v40Ev");}
void  S3223C3_nt ::v41(){vfunc_called(this, "_ZN10S3223C3_nt3v41Ev");}
void  S3223C3_nt ::v42(){vfunc_called(this, "_ZN10S3223C3_nt3v42Ev");}
void  S3223C3_nt ::v43(){vfunc_called(this, "_ZN10S3223C3_nt3v43Ev");}
void  S3223C3_nt ::v44(){vfunc_called(this, "_ZN10S3223C3_nt3v44Ev");}
void  S3223C3_nt ::v45(){vfunc_called(this, "_ZN10S3223C3_nt3v45Ev");}
void  S3223C3_nt ::v46(){vfunc_called(this, "_ZN10S3223C3_nt3v46Ev");}
void  S3223C3_nt ::v47(){vfunc_called(this, "_ZN10S3223C3_nt3v47Ev");}
void  S3223C3_nt ::v48(){vfunc_called(this, "_ZN10S3223C3_nt3v48Ev");}
void  S3223C3_nt ::v49(){vfunc_called(this, "_ZN10S3223C3_nt3v49Ev");}
void  S3223C3_nt ::v50(){vfunc_called(this, "_ZN10S3223C3_nt3v50Ev");}
void  S3223C3_nt ::v51(){vfunc_called(this, "_ZN10S3223C3_nt3v51Ev");}
void  S3223C3_nt ::v52(){vfunc_called(this, "_ZN10S3223C3_nt3v52Ev");}
void  S3223C3_nt ::v53(){vfunc_called(this, "_ZN10S3223C3_nt3v53Ev");}
void  S3223C3_nt ::v54(){vfunc_called(this, "_ZN10S3223C3_nt3v54Ev");}
void  S3223C3_nt ::v55(){vfunc_called(this, "_ZN10S3223C3_nt3v55Ev");}
void  S3223C3_nt ::v56(){vfunc_called(this, "_ZN10S3223C3_nt3v56Ev");}
void  S3223C3_nt ::v57(){vfunc_called(this, "_ZN10S3223C3_nt3v57Ev");}
void  S3223C3_nt ::v58(){vfunc_called(this, "_ZN10S3223C3_nt3v58Ev");}
void  S3223C3_nt ::v59(){vfunc_called(this, "_ZN10S3223C3_nt3v59Ev");}
void  S3223C3_nt ::v60(){vfunc_called(this, "_ZN10S3223C3_nt3v60Ev");}
void  S3223C3_nt ::v61(){vfunc_called(this, "_ZN10S3223C3_nt3v61Ev");}
void  S3223C3_nt ::v62(){vfunc_called(this, "_ZN10S3223C3_nt3v62Ev");}
void  S3223C3_nt ::v63(){vfunc_called(this, "_ZN10S3223C3_nt3v63Ev");}
void  S3223C3_nt ::v64(){vfunc_called(this, "_ZN10S3223C3_nt3v64Ev");}
void  S3223C3_nt ::v65(){vfunc_called(this, "_ZN10S3223C3_nt3v65Ev");}
void  S3223C3_nt ::v66(){vfunc_called(this, "_ZN10S3223C3_nt3v66Ev");}
void  S3223C3_nt ::v67(){vfunc_called(this, "_ZN10S3223C3_nt3v67Ev");}
S3223C3_nt ::S3223C3_nt(){ note_ctor("S3223C3_nt", this);} // tgen

//skip512 S3223C3_nt

#else // __cplusplus

extern void _ZN10S3223C3_ntC1Ev();
extern void _ZN10S3223C3_ntD1Ev();
Name_Map name_map_S3223C3_nt[] = {
  NSPAIR(_ZN10S3223C3_ntC1Ev),
  NSPAIR(_ZN10S3223C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3223C3_nt[];
extern void _ZN10S3223C3_ntD1Ev();
extern void _ZN10S3223C3_ntD0Ev();
extern void _ZN10S3223C3_nt2v4Ev();
extern void _ZN10S3223C3_nt2v5Ev();
extern void _ZN10S3223C3_nt2v6Ev();
extern void _ZN10S3223C3_nt2v7Ev();
extern void _ZN10S3223C3_nt2v8Ev();
extern void _ZN10S3223C3_nt2v9Ev();
extern void _ZN10S3223C3_nt3v10Ev();
extern void _ZN10S3223C3_nt3v11Ev();
extern void _ZN10S3223C3_nt3v12Ev();
extern void _ZN10S3223C3_nt3v13Ev();
extern void _ZN10S3223C3_nt3v14Ev();
extern void _ZN10S3223C3_nt3v15Ev();
extern void _ZN10S3223C3_nt3v16Ev();
extern void _ZN10S3223C3_nt3v17Ev();
extern void _ZN10S3223C3_nt3v18Ev();
extern void _ZN10S3223C3_nt3v19Ev();
extern void _ZN10S3223C3_nt3v20Ev();
extern void _ZN10S3223C3_nt3v21Ev();
extern void _ZN10S3223C3_nt3v22Ev();
extern void _ZN10S3223C3_nt3v23Ev();
extern void _ZN10S3223C3_nt3v24Ev();
extern void _ZN10S3223C3_nt3v25Ev();
extern void _ZN10S3223C3_nt3v26Ev();
extern void _ZN10S3223C3_nt3v27Ev();
extern void _ZN10S3223C3_nt3v28Ev();
extern void _ZN10S3223C3_nt3v29Ev();
extern void _ZN10S3223C3_nt3v30Ev();
extern void _ZN10S3223C3_nt3v31Ev();
extern void _ZN10S3223C3_nt3v32Ev();
extern void _ZN10S3223C3_nt3v33Ev();
extern void _ZN10S3223C3_nt3v34Ev();
extern void _ZN10S3223C3_nt3v35Ev();
extern void _ZN10S3223C3_nt3v36Ev();
extern void _ZN10S3223C3_nt3v37Ev();
extern void _ZN10S3223C3_nt3v38Ev();
extern void _ZN10S3223C3_nt3v39Ev();
extern void _ZN10S3223C3_nt3v40Ev();
extern void _ZN10S3223C3_nt3v41Ev();
extern void _ZN10S3223C3_nt3v42Ev();
extern void _ZN10S3223C3_nt3v43Ev();
extern void _ZN10S3223C3_nt3v44Ev();
extern void _ZN10S3223C3_nt3v45Ev();
extern void _ZN10S3223C3_nt3v46Ev();
extern void _ZN10S3223C3_nt3v47Ev();
extern void _ZN10S3223C3_nt3v48Ev();
extern void _ZN10S3223C3_nt3v49Ev();
extern void _ZN10S3223C3_nt3v50Ev();
extern void _ZN10S3223C3_nt3v51Ev();
extern void _ZN10S3223C3_nt3v52Ev();
extern void _ZN10S3223C3_nt3v53Ev();
extern void _ZN10S3223C3_nt3v54Ev();
extern void _ZN10S3223C3_nt3v55Ev();
extern void _ZN10S3223C3_nt3v56Ev();
extern void _ZN10S3223C3_nt3v57Ev();
extern void _ZN10S3223C3_nt3v58Ev();
extern void _ZN10S3223C3_nt3v59Ev();
extern void _ZN10S3223C3_nt3v60Ev();
extern void _ZN10S3223C3_nt3v61Ev();
extern void _ZN10S3223C3_nt3v62Ev();
extern void _ZN10S3223C3_nt3v63Ev();
extern void _ZN10S3223C3_nt3v64Ev();
extern void _ZN10S3223C3_nt3v65Ev();
extern void _ZN10S3223C3_nt3v66Ev();
extern void _ZN10S3223C3_nt3v67Ev();
static  VTBL_ENTRY vtc_S3223C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3223C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3223C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v67Ev,
};
extern VTBL_ENTRY _ZTI10S3223C3_nt[];
VTBL_ENTRY *P__ZTI10S3223C3_nt = _ZTI10S3223C3_nt; 
extern  VTBL_ENTRY _ZTV10S3223C3_nt[];
Class_Descriptor cd_S3223C3_nt = {  "S3223C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3223C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3223C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3223C3_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  S3223C7_nt  {
  void *s3223c7f0;
  int s3223c7f1[2];
  void  mf3223c7(); // _ZN10S3223C7_nt8mf3223c7Ev
};
//SIG(-1 S3223C7_nt) C1{ m Fp Fi[2]}


void  S3223C7_nt ::mf3223c7(){}

//skip512 S3223C7_nt

#else // __cplusplus

Class_Descriptor cd_S3223C7_nt = {  "S3223C7_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  S3223C6_nt  : S3223C7_nt {
};
//SIG(-1 S3223C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3223C6_nt

#else // __cplusplus

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



//skip512 S3223C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
extern Class_Descriptor cd_S3223C6_nt;
static Base_Class bases_S3223C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3223C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3223C8_nt  {
  int s3223c8f0;
  void  mf3223c8(); // _ZN10S3223C8_nt8mf3223c8Ev
};
//SIG(-1 S3223C8_nt) C1{ m Fi}


void  S3223C8_nt ::mf3223c8(){}

//skip512 S3223C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3223C8_nt[];
VTBL_ENTRY *P__ZTI10S3223C8_nt = _ZTI10S3223C8_nt; 
Class_Descriptor cd_S3223C8_nt = {  "S3223C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3223C8_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  S3223C12  : S3223C7_nt {
};
//SIG(-1 S3223C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3223C12()
{
  extern Class_Descriptor cd_S3223C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3223C12, buf);
    S3223C12 &lv = *(new (buf) S3223C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3223C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3223C12)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S3223C12");
    test_class_info(&lv, &cd_S3223C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3223C12(Test_S3223C12, "S3223C12", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3223C11()
{
  extern Class_Descriptor cd_S3223C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3223C11, buf);
    S3223C11 &lv = *(new (buf) S3223C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3223C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3223C11)");
    check_base_class_offset(lv, (S3223C7_nt*)(S3223C12*), 0, "S3223C11");
    check_base_class_offset(lv, (S3223C12*), 0, "S3223C11");
    test_class_info(&lv, &cd_S3223C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3223C11(Test_S3223C11, "S3223C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
extern Class_Descriptor cd_S3223C12;
static Base_Class bases_S3223C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3223C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3223C11 = {  "S3223C11", // class name
  bases_S3223C11, 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  S3223C13_nt  {
  int s3223c13f0[3];
  void  mf3223c13(); // _ZN11S3223C13_nt9mf3223c13Ev
};
//SIG(-1 S3223C13_nt) C1{ m Fi[3]}


void  S3223C13_nt ::mf3223c13(){}

//skip512 S3223C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S3223C18()
{
  extern Class_Descriptor cd_S3223C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3223C18, buf);
    S3223C18 &lv = *(new (buf) S3223C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3223C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3223C18)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S3223C18");
    test_class_info(&lv, &cd_S3223C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3223C18(Test_S3223C18, "S3223C18", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3223C17()
{
  extern Class_Descriptor cd_S3223C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3223C17, buf);
    S3223C17 &lv = *(new (buf) S3223C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3223C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3223C17)");
    check_base_class_offset(lv, (S3223C7_nt*)(S3223C18*), 0, "S3223C17");
    check_base_class_offset(lv, (S3223C18*), 0, "S3223C17");
    test_class_info(&lv, &cd_S3223C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3223C17(Test_S3223C17, "S3223C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
extern Class_Descriptor cd_S3223C18;
static Base_Class bases_S3223C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3223C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3223C17 = {  "S3223C17", // class name
  bases_S3223C17, 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  S3223C2_nt  : S3223C3_nt {
  ::S3223C5_nt s3223c2f0;
  ::S3223C5_nt s3223c2f1;
  ::S3223C8_nt s3223c2f2;
  int s3223c2f3;
  char s3223c2f4[4];
  void *s3223c2f5[2];
  ::S3223C5_nt s3223c2f6;
  unsigned int s3223c2f7:1;
  unsigned int s3223c2f8:1;
  unsigned int s3223c2f9:1;
  unsigned int s3223c2f10:1;
  unsigned int s3223c2f11:1;
  unsigned int s3223c2f12:1;
  unsigned int s3223c2f13:1;
  unsigned int s3223c2f14:1;
  unsigned int s3223c2f15:1;
  unsigned int s3223c2f16:1;
  unsigned int s3223c2f17:1;
  unsigned int s3223c2f18:1;
  unsigned int s3223c2f19:1;
  unsigned int s3223c2f20:1;
  unsigned int s3223c2f21:1;
  unsigned int s3223c2f22:1;
  unsigned int s3223c2f23:1;
  unsigned int s3223c2f24:1;
  unsigned int s3223c2f25:1;
  unsigned int s3223c2f26:1;
  unsigned int s3223c2f27:1;
  unsigned int s3223c2f28:1;
  unsigned int s3223c2f29:1;
  unsigned int s3223c2f30:1;
  unsigned int s3223c2f31:1;
  unsigned int s3223c2f32:1;
  unsigned int s3223c2f33:1;
  unsigned int s3223c2f34:1;
  unsigned int s3223c2f35:1;
  unsigned int s3223c2f36:1;
  unsigned int s3223c2f37:1;
  unsigned int s3223c2f38:1;
  unsigned int s3223c2f39:1;
  unsigned int s3223c2f40:1;
  unsigned int s3223c2f41:1;
  unsigned int s3223c2f42:1;
  unsigned int s3223c2f43:1;
  unsigned int s3223c2f44:1;
  unsigned int s3223c2f45:1;
  unsigned int s3223c2f46:1;
  unsigned int s3223c2f47:1;
  unsigned int s3223c2f48:1;
  unsigned int s3223c2f49:1;
  unsigned int s3223c2f50:1;
  unsigned int s3223c2f51:1;
  unsigned int s3223c2f52:1;
  unsigned int s3223c2f53:1;
  unsigned int s3223c2f54:1;
  unsigned int s3223c2f55:1;
  unsigned int s3223c2f56:1;
  unsigned int s3223c2f57:1;
  unsigned int s3223c2f58:1;
  unsigned int s3223c2f59:1;
  unsigned int s3223c2f60:1;
  unsigned int s3223c2f61:1;
  unsigned int s3223c2f62:1;
  unsigned int s3223c2f63:1;
  unsigned int s3223c2f64:1;
  unsigned int s3223c2f65:1;
  unsigned int s3223c2f66:1;
  unsigned int s3223c2f67:1;
  unsigned int s3223c2f68:1;
  unsigned int s3223c2f69:1;
  unsigned int s3223c2f70:1;
  unsigned int s3223c2f71:1;
  unsigned int s3223c2f72:1;
  unsigned int s3223c2f73:1;
  unsigned int s3223c2f74:1;
  unsigned int s3223c2f75:1;
  unsigned int s3223c2f76:1;
  unsigned int s3223c2f77:1;
  unsigned int s3223c2f78:1;
  unsigned int s3223c2f79:1;
  unsigned int s3223c2f80:1;
  unsigned int s3223c2f81:1;
  unsigned int s3223c2f82:1;
  unsigned int s3223c2f83:1;
  int s3223c2f84[5];
  void *s3223c2f85[2];
  int s3223c2f86[3];
  ::S3223C4_nt s3223c2f87;
  ::S3223C4_nt s3223c2f88;
  ::S3223C4_nt s3223c2f89;
  ::S3223C11 s3223c2f90;
  ::S3223C11 s3223c2f91;
  int s3223c2f92;
  void *s3223c2f93[2];
  ::S3223C13_nt s3223c2f94;
  ::S3223C13_nt s3223c2f95;
  ::S3223C13_nt s3223c2f96;
  ::S3223C13_nt s3223c2f97;
  void *s3223c2f98;
  ::S3223C4_nt s3223c2f99;
  ::S3223C11 s3223c2f100;
  ::S3223C13_nt s3223c2f101;
  ::S3223C13_nt s3223c2f102;
  int s3223c2f103;
  ::S3223C13_nt s3223c2f104;
  ::S3223C13_nt s3223c2f105;
  void *s3223c2f106;
  int s3223c2f107;
  char s3223c2f108;
  ::S3223C13_nt s3223c2f109;
  ::S3223C13_nt s3223c2f110;
  void *s3223c2f111;
  int s3223c2f112;
  void *s3223c2f113;
  ::S3223C11 s3223c2f114;
  ::S3223C17 s3223c2f115;
  ::S3223C17 s3223c2f116;
  virtual  ~S3223C2_nt(); // _ZN10S3223C2_ntD1Ev
  virtual void  v68(); // _ZN10S3223C2_nt3v68Ev
  virtual void  v69(); // _ZN10S3223C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3223C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3223C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3223C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3223C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3223C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3223C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3223C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3223C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3223C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3223C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3223C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3223C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3223C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3223C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3223C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3223C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3223C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3223C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3223C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3223C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3223C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3223C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3223C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3223C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3223C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3223C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3223C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3223C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3223C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3223C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3223C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3223C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3223C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3223C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3223C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3223C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3223C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3223C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3223C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3223C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3223C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3223C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3223C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3223C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3223C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3223C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3223C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3223C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3223C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3223C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3223C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3223C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3223C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3223C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3223C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3223C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3223C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3223C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3223C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3223C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3223C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3223C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3223C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3223C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3223C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3223C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3223C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3223C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3223C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3223C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3223C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3223C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3223C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3223C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3223C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3223C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3223C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3223C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3223C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3223C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3223C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3223C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3223C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3223C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3223C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3223C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3223C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3223C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3223C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3223C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3223C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3223C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3223C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3223C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3223C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3223C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3223C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3223C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3223C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3223C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3223C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3223C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3223C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3223C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3223C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3223C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3223C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3223C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3223C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3223C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3223C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3223C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3223C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3223C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3223C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3223C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3223C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3223C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3223C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3223C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3223C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3223C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3223C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3223C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3223C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3223C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3223C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3223C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3223C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3223C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3223C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3223C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3223C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3223C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3223C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3223C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3223C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3223C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3223C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3223C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3223C2_nt4v210Ev
  S3223C2_nt(); // tgen
};
//SIG(-1 S3223C2_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}


 S3223C2_nt ::~S3223C2_nt(){ note_dtor("S3223C2_nt", this);}
void  S3223C2_nt ::v68(){vfunc_called(this, "_ZN10S3223C2_nt3v68Ev");}
void  S3223C2_nt ::v69(){vfunc_called(this, "_ZN10S3223C2_nt3v69Ev");}
void  S3223C2_nt ::v70(){vfunc_called(this, "_ZN10S3223C2_nt3v70Ev");}
void  S3223C2_nt ::v71(){vfunc_called(this, "_ZN10S3223C2_nt3v71Ev");}
void  S3223C2_nt ::v72(){vfunc_called(this, "_ZN10S3223C2_nt3v72Ev");}
void  S3223C2_nt ::v73(){vfunc_called(this, "_ZN10S3223C2_nt3v73Ev");}
void  S3223C2_nt ::v74(){vfunc_called(this, "_ZN10S3223C2_nt3v74Ev");}
void  S3223C2_nt ::v75(){vfunc_called(this, "_ZN10S3223C2_nt3v75Ev");}
void  S3223C2_nt ::v76(){vfunc_called(this, "_ZN10S3223C2_nt3v76Ev");}
void  S3223C2_nt ::v77(){vfunc_called(this, "_ZN10S3223C2_nt3v77Ev");}
void  S3223C2_nt ::v78(){vfunc_called(this, "_ZN10S3223C2_nt3v78Ev");}
void  S3223C2_nt ::v79(){vfunc_called(this, "_ZN10S3223C2_nt3v79Ev");}
void  S3223C2_nt ::v80(){vfunc_called(this, "_ZN10S3223C2_nt3v80Ev");}
void  S3223C2_nt ::v81(){vfunc_called(this, "_ZN10S3223C2_nt3v81Ev");}
void  S3223C2_nt ::v82(){vfunc_called(this, "_ZN10S3223C2_nt3v82Ev");}
void  S3223C2_nt ::v83(){vfunc_called(this, "_ZN10S3223C2_nt3v83Ev");}
void  S3223C2_nt ::v84(){vfunc_called(this, "_ZN10S3223C2_nt3v84Ev");}
void  S3223C2_nt ::v85(){vfunc_called(this, "_ZN10S3223C2_nt3v85Ev");}
void  S3223C2_nt ::v86(){vfunc_called(this, "_ZN10S3223C2_nt3v86Ev");}
void  S3223C2_nt ::v87(){vfunc_called(this, "_ZN10S3223C2_nt3v87Ev");}
void  S3223C2_nt ::v88(){vfunc_called(this, "_ZN10S3223C2_nt3v88Ev");}
void  S3223C2_nt ::v89(){vfunc_called(this, "_ZN10S3223C2_nt3v89Ev");}
void  S3223C2_nt ::v90(){vfunc_called(this, "_ZN10S3223C2_nt3v90Ev");}
void  S3223C2_nt ::v91(){vfunc_called(this, "_ZN10S3223C2_nt3v91Ev");}
void  S3223C2_nt ::v92(){vfunc_called(this, "_ZN10S3223C2_nt3v92Ev");}
void  S3223C2_nt ::v93(){vfunc_called(this, "_ZN10S3223C2_nt3v93Ev");}
void  S3223C2_nt ::v94(){vfunc_called(this, "_ZN10S3223C2_nt3v94Ev");}
void  S3223C2_nt ::v95(){vfunc_called(this, "_ZN10S3223C2_nt3v95Ev");}
void  S3223C2_nt ::v96(){vfunc_called(this, "_ZN10S3223C2_nt3v96Ev");}
void  S3223C2_nt ::v97(){vfunc_called(this, "_ZN10S3223C2_nt3v97Ev");}
void  S3223C2_nt ::v98(){vfunc_called(this, "_ZN10S3223C2_nt3v98Ev");}
void  S3223C2_nt ::v99(){vfunc_called(this, "_ZN10S3223C2_nt3v99Ev");}
void  S3223C2_nt ::v100(){vfunc_called(this, "_ZN10S3223C2_nt4v100Ev");}
void  S3223C2_nt ::v101(){vfunc_called(this, "_ZN10S3223C2_nt4v101Ev");}
void  S3223C2_nt ::v102(){vfunc_called(this, "_ZN10S3223C2_nt4v102Ev");}
void  S3223C2_nt ::v103(){vfunc_called(this, "_ZN10S3223C2_nt4v103Ev");}
void  S3223C2_nt ::v104(){vfunc_called(this, "_ZN10S3223C2_nt4v104Ev");}
void  S3223C2_nt ::v105(){vfunc_called(this, "_ZN10S3223C2_nt4v105Ev");}
void  S3223C2_nt ::v106(){vfunc_called(this, "_ZN10S3223C2_nt4v106Ev");}
void  S3223C2_nt ::v107(){vfunc_called(this, "_ZN10S3223C2_nt4v107Ev");}
void  S3223C2_nt ::v108(){vfunc_called(this, "_ZN10S3223C2_nt4v108Ev");}
void  S3223C2_nt ::v109(){vfunc_called(this, "_ZN10S3223C2_nt4v109Ev");}
void  S3223C2_nt ::v110(){vfunc_called(this, "_ZN10S3223C2_nt4v110Ev");}
void  S3223C2_nt ::v111(){vfunc_called(this, "_ZN10S3223C2_nt4v111Ev");}
void  S3223C2_nt ::v112(){vfunc_called(this, "_ZN10S3223C2_nt4v112Ev");}
void  S3223C2_nt ::v113(){vfunc_called(this, "_ZN10S3223C2_nt4v113Ev");}
void  S3223C2_nt ::v114(){vfunc_called(this, "_ZN10S3223C2_nt4v114Ev");}
void  S3223C2_nt ::v115(){vfunc_called(this, "_ZN10S3223C2_nt4v115Ev");}
void  S3223C2_nt ::v116(){vfunc_called(this, "_ZN10S3223C2_nt4v116Ev");}
void  S3223C2_nt ::v117(){vfunc_called(this, "_ZN10S3223C2_nt4v117Ev");}
void  S3223C2_nt ::v118(){vfunc_called(this, "_ZN10S3223C2_nt4v118Ev");}
void  S3223C2_nt ::v119(){vfunc_called(this, "_ZN10S3223C2_nt4v119Ev");}
void  S3223C2_nt ::v120(){vfunc_called(this, "_ZN10S3223C2_nt4v120Ev");}
void  S3223C2_nt ::v121(){vfunc_called(this, "_ZN10S3223C2_nt4v121Ev");}
void  S3223C2_nt ::v122(){vfunc_called(this, "_ZN10S3223C2_nt4v122Ev");}
void  S3223C2_nt ::v123(){vfunc_called(this, "_ZN10S3223C2_nt4v123Ev");}
void  S3223C2_nt ::v124(){vfunc_called(this, "_ZN10S3223C2_nt4v124Ev");}
void  S3223C2_nt ::v125(){vfunc_called(this, "_ZN10S3223C2_nt4v125Ev");}
void  S3223C2_nt ::v126(){vfunc_called(this, "_ZN10S3223C2_nt4v126Ev");}
void  S3223C2_nt ::v127(){vfunc_called(this, "_ZN10S3223C2_nt4v127Ev");}
void  S3223C2_nt ::v128(){vfunc_called(this, "_ZN10S3223C2_nt4v128Ev");}
void  S3223C2_nt ::v129(){vfunc_called(this, "_ZN10S3223C2_nt4v129Ev");}
void  S3223C2_nt ::v130(){vfunc_called(this, "_ZN10S3223C2_nt4v130Ev");}
void  S3223C2_nt ::v131(){vfunc_called(this, "_ZN10S3223C2_nt4v131Ev");}
void  S3223C2_nt ::v132(){vfunc_called(this, "_ZN10S3223C2_nt4v132Ev");}
void  S3223C2_nt ::v133(){vfunc_called(this, "_ZN10S3223C2_nt4v133Ev");}
void  S3223C2_nt ::v134(){vfunc_called(this, "_ZN10S3223C2_nt4v134Ev");}
void  S3223C2_nt ::v135(){vfunc_called(this, "_ZN10S3223C2_nt4v135Ev");}
void  S3223C2_nt ::v136(){vfunc_called(this, "_ZN10S3223C2_nt4v136Ev");}
void  S3223C2_nt ::v137(){vfunc_called(this, "_ZN10S3223C2_nt4v137Ev");}
void  S3223C2_nt ::v138(){vfunc_called(this, "_ZN10S3223C2_nt4v138Ev");}
void  S3223C2_nt ::v139(){vfunc_called(this, "_ZN10S3223C2_nt4v139Ev");}
void  S3223C2_nt ::v140(){vfunc_called(this, "_ZN10S3223C2_nt4v140Ev");}
void  S3223C2_nt ::v141(){vfunc_called(this, "_ZN10S3223C2_nt4v141Ev");}
void  S3223C2_nt ::v142(){vfunc_called(this, "_ZN10S3223C2_nt4v142Ev");}
void  S3223C2_nt ::v143(){vfunc_called(this, "_ZN10S3223C2_nt4v143Ev");}
void  S3223C2_nt ::v144(){vfunc_called(this, "_ZN10S3223C2_nt4v144Ev");}
void  S3223C2_nt ::v145(){vfunc_called(this, "_ZN10S3223C2_nt4v145Ev");}
void  S3223C2_nt ::v146(){vfunc_called(this, "_ZN10S3223C2_nt4v146Ev");}
void  S3223C2_nt ::v147(){vfunc_called(this, "_ZN10S3223C2_nt4v147Ev");}
void  S3223C2_nt ::v148(){vfunc_called(this, "_ZN10S3223C2_nt4v148Ev");}
void  S3223C2_nt ::v149(){vfunc_called(this, "_ZN10S3223C2_nt4v149Ev");}
void  S3223C2_nt ::v150(){vfunc_called(this, "_ZN10S3223C2_nt4v150Ev");}
void  S3223C2_nt ::v151(){vfunc_called(this, "_ZN10S3223C2_nt4v151Ev");}
void  S3223C2_nt ::v152(){vfunc_called(this, "_ZN10S3223C2_nt4v152Ev");}
void  S3223C2_nt ::v153(){vfunc_called(this, "_ZN10S3223C2_nt4v153Ev");}
void  S3223C2_nt ::v154(){vfunc_called(this, "_ZN10S3223C2_nt4v154Ev");}
void  S3223C2_nt ::v155(){vfunc_called(this, "_ZN10S3223C2_nt4v155Ev");}
void  S3223C2_nt ::v156(){vfunc_called(this, "_ZN10S3223C2_nt4v156Ev");}
void  S3223C2_nt ::v157(){vfunc_called(this, "_ZN10S3223C2_nt4v157Ev");}
void  S3223C2_nt ::v158(){vfunc_called(this, "_ZN10S3223C2_nt4v158Ev");}
void  S3223C2_nt ::v159(){vfunc_called(this, "_ZN10S3223C2_nt4v159Ev");}
void  S3223C2_nt ::v160(){vfunc_called(this, "_ZN10S3223C2_nt4v160Ev");}
void  S3223C2_nt ::v161(){vfunc_called(this, "_ZN10S3223C2_nt4v161Ev");}
void  S3223C2_nt ::v162(){vfunc_called(this, "_ZN10S3223C2_nt4v162Ev");}
void  S3223C2_nt ::v163(){vfunc_called(this, "_ZN10S3223C2_nt4v163Ev");}
void  S3223C2_nt ::v164(){vfunc_called(this, "_ZN10S3223C2_nt4v164Ev");}
void  S3223C2_nt ::v165(){vfunc_called(this, "_ZN10S3223C2_nt4v165Ev");}
void  S3223C2_nt ::v166(){vfunc_called(this, "_ZN10S3223C2_nt4v166Ev");}
void  S3223C2_nt ::v167(){vfunc_called(this, "_ZN10S3223C2_nt4v167Ev");}
void  S3223C2_nt ::v168(){vfunc_called(this, "_ZN10S3223C2_nt4v168Ev");}
void  S3223C2_nt ::v169(){vfunc_called(this, "_ZN10S3223C2_nt4v169Ev");}
void  S3223C2_nt ::v170(){vfunc_called(this, "_ZN10S3223C2_nt4v170Ev");}
void  S3223C2_nt ::v171(){vfunc_called(this, "_ZN10S3223C2_nt4v171Ev");}
void  S3223C2_nt ::v172(){vfunc_called(this, "_ZN10S3223C2_nt4v172Ev");}
void  S3223C2_nt ::v173(){vfunc_called(this, "_ZN10S3223C2_nt4v173Ev");}
void  S3223C2_nt ::v174(){vfunc_called(this, "_ZN10S3223C2_nt4v174Ev");}
void  S3223C2_nt ::v175(){vfunc_called(this, "_ZN10S3223C2_nt4v175Ev");}
void  S3223C2_nt ::v176(){vfunc_called(this, "_ZN10S3223C2_nt4v176Ev");}
void  S3223C2_nt ::v177(){vfunc_called(this, "_ZN10S3223C2_nt4v177Ev");}
void  S3223C2_nt ::v178(){vfunc_called(this, "_ZN10S3223C2_nt4v178Ev");}
void  S3223C2_nt ::v179(){vfunc_called(this, "_ZN10S3223C2_nt4v179Ev");}
void  S3223C2_nt ::v180(){vfunc_called(this, "_ZN10S3223C2_nt4v180Ev");}
void  S3223C2_nt ::v181(){vfunc_called(this, "_ZN10S3223C2_nt4v181Ev");}
void  S3223C2_nt ::v182(){vfunc_called(this, "_ZN10S3223C2_nt4v182Ev");}
void  S3223C2_nt ::v183(){vfunc_called(this, "_ZN10S3223C2_nt4v183Ev");}
void  S3223C2_nt ::v184(){vfunc_called(this, "_ZN10S3223C2_nt4v184Ev");}
void  S3223C2_nt ::v185(){vfunc_called(this, "_ZN10S3223C2_nt4v185Ev");}
void  S3223C2_nt ::v186(){vfunc_called(this, "_ZN10S3223C2_nt4v186Ev");}
void  S3223C2_nt ::v187(){vfunc_called(this, "_ZN10S3223C2_nt4v187Ev");}
void  S3223C2_nt ::v188(){vfunc_called(this, "_ZN10S3223C2_nt4v188Ev");}
void  S3223C2_nt ::v189(){vfunc_called(this, "_ZN10S3223C2_nt4v189Ev");}
void  S3223C2_nt ::v190(){vfunc_called(this, "_ZN10S3223C2_nt4v190Ev");}
void  S3223C2_nt ::v191(){vfunc_called(this, "_ZN10S3223C2_nt4v191Ev");}
void  S3223C2_nt ::v192(){vfunc_called(this, "_ZN10S3223C2_nt4v192Ev");}
void  S3223C2_nt ::v193(){vfunc_called(this, "_ZN10S3223C2_nt4v193Ev");}
void  S3223C2_nt ::v194(){vfunc_called(this, "_ZN10S3223C2_nt4v194Ev");}
void  S3223C2_nt ::v195(){vfunc_called(this, "_ZN10S3223C2_nt4v195Ev");}
void  S3223C2_nt ::v196(){vfunc_called(this, "_ZN10S3223C2_nt4v196Ev");}
void  S3223C2_nt ::v197(){vfunc_called(this, "_ZN10S3223C2_nt4v197Ev");}
void  S3223C2_nt ::v198(){vfunc_called(this, "_ZN10S3223C2_nt4v198Ev");}
void  S3223C2_nt ::v199(){vfunc_called(this, "_ZN10S3223C2_nt4v199Ev");}
void  S3223C2_nt ::v200(){vfunc_called(this, "_ZN10S3223C2_nt4v200Ev");}
void  S3223C2_nt ::v201(){vfunc_called(this, "_ZN10S3223C2_nt4v201Ev");}
void  S3223C2_nt ::v202(){vfunc_called(this, "_ZN10S3223C2_nt4v202Ev");}
void  S3223C2_nt ::v203(){vfunc_called(this, "_ZN10S3223C2_nt4v203Ev");}
void  S3223C2_nt ::v204(){vfunc_called(this, "_ZN10S3223C2_nt4v204Ev");}
void  S3223C2_nt ::v205(){vfunc_called(this, "_ZN10S3223C2_nt4v205Ev");}
void  S3223C2_nt ::v206(){vfunc_called(this, "_ZN10S3223C2_nt4v206Ev");}
void  S3223C2_nt ::v207(){vfunc_called(this, "_ZN10S3223C2_nt4v207Ev");}
void  S3223C2_nt ::v208(){vfunc_called(this, "_ZN10S3223C2_nt4v208Ev");}
void  S3223C2_nt ::v209(){vfunc_called(this, "_ZN10S3223C2_nt4v209Ev");}
void  S3223C2_nt ::v210(){vfunc_called(this, "_ZN10S3223C2_nt4v210Ev");}
S3223C2_nt ::S3223C2_nt(){ note_ctor("S3223C2_nt", this);} // tgen

//skip512 S3223C2_nt

#else // __cplusplus

extern void _ZN10S3223C2_ntC1Ev();
extern void _ZN10S3223C2_ntD1Ev();
Name_Map name_map_S3223C2_nt[] = {
  NSPAIR(_ZN10S3223C2_ntC1Ev),
  NSPAIR(_ZN10S3223C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C3_nt;
extern VTBL_ENTRY _ZTI10S3223C3_nt[];
extern  VTBL_ENTRY _ZTV10S3223C3_nt[];
static Base_Class bases_S3223C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3223C2_nt[];
extern void _ZN10S3223C2_ntD1Ev();
extern void _ZN10S3223C2_ntD0Ev();
extern void _ZN10S3223C3_nt2v4Ev();
extern void _ZN10S3223C3_nt2v5Ev();
extern void _ZN10S3223C3_nt2v6Ev();
extern void _ZN10S3223C3_nt2v7Ev();
extern void _ZN10S3223C3_nt2v8Ev();
extern void _ZN10S3223C3_nt2v9Ev();
extern void _ZN10S3223C3_nt3v10Ev();
extern void _ZN10S3223C3_nt3v11Ev();
extern void _ZN10S3223C3_nt3v12Ev();
extern void _ZN10S3223C3_nt3v13Ev();
extern void _ZN10S3223C3_nt3v14Ev();
extern void _ZN10S3223C3_nt3v15Ev();
extern void _ZN10S3223C3_nt3v16Ev();
extern void _ZN10S3223C3_nt3v17Ev();
extern void _ZN10S3223C3_nt3v18Ev();
extern void _ZN10S3223C3_nt3v19Ev();
extern void _ZN10S3223C3_nt3v20Ev();
extern void _ZN10S3223C3_nt3v21Ev();
extern void _ZN10S3223C3_nt3v22Ev();
extern void _ZN10S3223C3_nt3v23Ev();
extern void _ZN10S3223C3_nt3v24Ev();
extern void _ZN10S3223C3_nt3v25Ev();
extern void _ZN10S3223C3_nt3v26Ev();
extern void _ZN10S3223C3_nt3v27Ev();
extern void _ZN10S3223C3_nt3v28Ev();
extern void _ZN10S3223C3_nt3v29Ev();
extern void _ZN10S3223C3_nt3v30Ev();
extern void _ZN10S3223C3_nt3v31Ev();
extern void _ZN10S3223C3_nt3v32Ev();
extern void _ZN10S3223C3_nt3v33Ev();
extern void _ZN10S3223C3_nt3v34Ev();
extern void _ZN10S3223C3_nt3v35Ev();
extern void _ZN10S3223C3_nt3v36Ev();
extern void _ZN10S3223C3_nt3v37Ev();
extern void _ZN10S3223C3_nt3v38Ev();
extern void _ZN10S3223C3_nt3v39Ev();
extern void _ZN10S3223C3_nt3v40Ev();
extern void _ZN10S3223C3_nt3v41Ev();
extern void _ZN10S3223C3_nt3v42Ev();
extern void _ZN10S3223C3_nt3v43Ev();
extern void _ZN10S3223C3_nt3v44Ev();
extern void _ZN10S3223C3_nt3v45Ev();
extern void _ZN10S3223C3_nt3v46Ev();
extern void _ZN10S3223C3_nt3v47Ev();
extern void _ZN10S3223C3_nt3v48Ev();
extern void _ZN10S3223C3_nt3v49Ev();
extern void _ZN10S3223C3_nt3v50Ev();
extern void _ZN10S3223C3_nt3v51Ev();
extern void _ZN10S3223C3_nt3v52Ev();
extern void _ZN10S3223C3_nt3v53Ev();
extern void _ZN10S3223C3_nt3v54Ev();
extern void _ZN10S3223C3_nt3v55Ev();
extern void _ZN10S3223C3_nt3v56Ev();
extern void _ZN10S3223C3_nt3v57Ev();
extern void _ZN10S3223C3_nt3v58Ev();
extern void _ZN10S3223C3_nt3v59Ev();
extern void _ZN10S3223C3_nt3v60Ev();
extern void _ZN10S3223C3_nt3v61Ev();
extern void _ZN10S3223C3_nt3v62Ev();
extern void _ZN10S3223C3_nt3v63Ev();
extern void _ZN10S3223C3_nt3v64Ev();
extern void _ZN10S3223C3_nt3v65Ev();
extern void _ZN10S3223C3_nt3v66Ev();
extern void _ZN10S3223C3_nt3v67Ev();
extern void _ZN10S3223C2_nt3v68Ev();
extern void _ZN10S3223C2_nt3v69Ev();
extern void _ZN10S3223C2_nt3v70Ev();
extern void _ZN10S3223C2_nt3v71Ev();
extern void _ZN10S3223C2_nt3v72Ev();
extern void _ZN10S3223C2_nt3v73Ev();
extern void _ZN10S3223C2_nt3v74Ev();
extern void _ZN10S3223C2_nt3v75Ev();
extern void _ZN10S3223C2_nt3v76Ev();
extern void _ZN10S3223C2_nt3v77Ev();
extern void _ZN10S3223C2_nt3v78Ev();
extern void _ZN10S3223C2_nt3v79Ev();
extern void _ZN10S3223C2_nt3v80Ev();
extern void _ZN10S3223C2_nt3v81Ev();
extern void _ZN10S3223C2_nt3v82Ev();
extern void _ZN10S3223C2_nt3v83Ev();
extern void _ZN10S3223C2_nt3v84Ev();
extern void _ZN10S3223C2_nt3v85Ev();
extern void _ZN10S3223C2_nt3v86Ev();
extern void _ZN10S3223C2_nt3v87Ev();
extern void _ZN10S3223C2_nt3v88Ev();
extern void _ZN10S3223C2_nt3v89Ev();
extern void _ZN10S3223C2_nt3v90Ev();
extern void _ZN10S3223C2_nt3v91Ev();
extern void _ZN10S3223C2_nt3v92Ev();
extern void _ZN10S3223C2_nt3v93Ev();
extern void _ZN10S3223C2_nt3v94Ev();
extern void _ZN10S3223C2_nt3v95Ev();
extern void _ZN10S3223C2_nt3v96Ev();
extern void _ZN10S3223C2_nt3v97Ev();
extern void _ZN10S3223C2_nt3v98Ev();
extern void _ZN10S3223C2_nt3v99Ev();
extern void _ZN10S3223C2_nt4v100Ev();
extern void _ZN10S3223C2_nt4v101Ev();
extern void _ZN10S3223C2_nt4v102Ev();
extern void _ZN10S3223C2_nt4v103Ev();
extern void _ZN10S3223C2_nt4v104Ev();
extern void _ZN10S3223C2_nt4v105Ev();
extern void _ZN10S3223C2_nt4v106Ev();
extern void _ZN10S3223C2_nt4v107Ev();
extern void _ZN10S3223C2_nt4v108Ev();
extern void _ZN10S3223C2_nt4v109Ev();
extern void _ZN10S3223C2_nt4v110Ev();
extern void _ZN10S3223C2_nt4v111Ev();
extern void _ZN10S3223C2_nt4v112Ev();
extern void _ZN10S3223C2_nt4v113Ev();
extern void _ZN10S3223C2_nt4v114Ev();
extern void _ZN10S3223C2_nt4v115Ev();
extern void _ZN10S3223C2_nt4v116Ev();
extern void _ZN10S3223C2_nt4v117Ev();
extern void _ZN10S3223C2_nt4v118Ev();
extern void _ZN10S3223C2_nt4v119Ev();
extern void _ZN10S3223C2_nt4v120Ev();
extern void _ZN10S3223C2_nt4v121Ev();
extern void _ZN10S3223C2_nt4v122Ev();
extern void _ZN10S3223C2_nt4v123Ev();
extern void _ZN10S3223C2_nt4v124Ev();
extern void _ZN10S3223C2_nt4v125Ev();
extern void _ZN10S3223C2_nt4v126Ev();
extern void _ZN10S3223C2_nt4v127Ev();
extern void _ZN10S3223C2_nt4v128Ev();
extern void _ZN10S3223C2_nt4v129Ev();
extern void _ZN10S3223C2_nt4v130Ev();
extern void _ZN10S3223C2_nt4v131Ev();
extern void _ZN10S3223C2_nt4v132Ev();
extern void _ZN10S3223C2_nt4v133Ev();
extern void _ZN10S3223C2_nt4v134Ev();
extern void _ZN10S3223C2_nt4v135Ev();
extern void _ZN10S3223C2_nt4v136Ev();
extern void _ZN10S3223C2_nt4v137Ev();
extern void _ZN10S3223C2_nt4v138Ev();
extern void _ZN10S3223C2_nt4v139Ev();
extern void _ZN10S3223C2_nt4v140Ev();
extern void _ZN10S3223C2_nt4v141Ev();
extern void _ZN10S3223C2_nt4v142Ev();
extern void _ZN10S3223C2_nt4v143Ev();
extern void _ZN10S3223C2_nt4v144Ev();
extern void _ZN10S3223C2_nt4v145Ev();
extern void _ZN10S3223C2_nt4v146Ev();
extern void _ZN10S3223C2_nt4v147Ev();
extern void _ZN10S3223C2_nt4v148Ev();
extern void _ZN10S3223C2_nt4v149Ev();
extern void _ZN10S3223C2_nt4v150Ev();
extern void _ZN10S3223C2_nt4v151Ev();
extern void _ZN10S3223C2_nt4v152Ev();
extern void _ZN10S3223C2_nt4v153Ev();
extern void _ZN10S3223C2_nt4v154Ev();
extern void _ZN10S3223C2_nt4v155Ev();
extern void _ZN10S3223C2_nt4v156Ev();
extern void _ZN10S3223C2_nt4v157Ev();
extern void _ZN10S3223C2_nt4v158Ev();
extern void _ZN10S3223C2_nt4v159Ev();
extern void _ZN10S3223C2_nt4v160Ev();
extern void _ZN10S3223C2_nt4v161Ev();
extern void _ZN10S3223C2_nt4v162Ev();
extern void _ZN10S3223C2_nt4v163Ev();
extern void _ZN10S3223C2_nt4v164Ev();
extern void _ZN10S3223C2_nt4v165Ev();
extern void _ZN10S3223C2_nt4v166Ev();
extern void _ZN10S3223C2_nt4v167Ev();
extern void _ZN10S3223C2_nt4v168Ev();
extern void _ZN10S3223C2_nt4v169Ev();
extern void _ZN10S3223C2_nt4v170Ev();
extern void _ZN10S3223C2_nt4v171Ev();
extern void _ZN10S3223C2_nt4v172Ev();
extern void _ZN10S3223C2_nt4v173Ev();
extern void _ZN10S3223C2_nt4v174Ev();
extern void _ZN10S3223C2_nt4v175Ev();
extern void _ZN10S3223C2_nt4v176Ev();
extern void _ZN10S3223C2_nt4v177Ev();
extern void _ZN10S3223C2_nt4v178Ev();
extern void _ZN10S3223C2_nt4v179Ev();
extern void _ZN10S3223C2_nt4v180Ev();
extern void _ZN10S3223C2_nt4v181Ev();
extern void _ZN10S3223C2_nt4v182Ev();
extern void _ZN10S3223C2_nt4v183Ev();
extern void _ZN10S3223C2_nt4v184Ev();
extern void _ZN10S3223C2_nt4v185Ev();
extern void _ZN10S3223C2_nt4v186Ev();
extern void _ZN10S3223C2_nt4v187Ev();
extern void _ZN10S3223C2_nt4v188Ev();
extern void _ZN10S3223C2_nt4v189Ev();
extern void _ZN10S3223C2_nt4v190Ev();
extern void _ZN10S3223C2_nt4v191Ev();
extern void _ZN10S3223C2_nt4v192Ev();
extern void _ZN10S3223C2_nt4v193Ev();
extern void _ZN10S3223C2_nt4v194Ev();
extern void _ZN10S3223C2_nt4v195Ev();
extern void _ZN10S3223C2_nt4v196Ev();
extern void _ZN10S3223C2_nt4v197Ev();
extern void _ZN10S3223C2_nt4v198Ev();
extern void _ZN10S3223C2_nt4v199Ev();
extern void _ZN10S3223C2_nt4v200Ev();
extern void _ZN10S3223C2_nt4v201Ev();
extern void _ZN10S3223C2_nt4v202Ev();
extern void _ZN10S3223C2_nt4v203Ev();
extern void _ZN10S3223C2_nt4v204Ev();
extern void _ZN10S3223C2_nt4v205Ev();
extern void _ZN10S3223C2_nt4v206Ev();
extern void _ZN10S3223C2_nt4v207Ev();
extern void _ZN10S3223C2_nt4v208Ev();
extern void _ZN10S3223C2_nt4v209Ev();
extern void _ZN10S3223C2_nt4v210Ev();
static  VTBL_ENTRY vtc_S3223C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3223C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3223C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v210Ev,
};
extern VTBL_ENTRY _ZTI10S3223C2_nt[];
VTBL_ENTRY *P__ZTI10S3223C2_nt = _ZTI10S3223C2_nt; 
extern  VTBL_ENTRY _ZTV10S3223C2_nt[];
Class_Descriptor cd_S3223C2_nt = {  "S3223C2_nt", // class name
  bases_S3223C2_nt, 1,
  &(vtc_S3223C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3223C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3223C2_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  S3223C1  : S3223C2_nt {
  void *s3223c1f0[2];
  char s3223c1f1;
  int s3223c1f2[4];
  ::S3223C13_nt s3223c1f3;
  unsigned int s3223c1f4:1;
  unsigned int s3223c1f5:1;
  void *s3223c1f6[8];
  virtual  ~S3223C1(); // _ZN7S3223C1D1Ev
  virtual void  v1(); // _ZN7S3223C12v1Ev
  virtual void  v2(); // _ZN7S3223C12v2Ev
  virtual void  v3(); // _ZN7S3223C12v3Ev
  S3223C1(); // tgen
};
//SIG(1 S3223C1) 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 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 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 Fp[2] Fc Fi[4] FC11 Fi:1 Fi:1 Fp[8]}


 S3223C1 ::~S3223C1(){ note_dtor("S3223C1", this);}
void  S3223C1 ::v1(){vfunc_called(this, "_ZN7S3223C12v1Ev");}
void  S3223C1 ::v2(){vfunc_called(this, "_ZN7S3223C12v2Ev");}
void  S3223C1 ::v3(){vfunc_called(this, "_ZN7S3223C12v3Ev");}
S3223C1 ::S3223C1(){ note_ctor("S3223C1", this);} // tgen

static void Test_S3223C1()
{
  extern Class_Descriptor cd_S3223C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(87,129)];
    init_test(&cd_S3223C1, buf);
    S3223C1 *dp, &lv = *(dp=new (buf) S3223C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,512), "sizeof(S3223C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3223C1)");
    check_base_class_offset(lv, (S3223C3_nt*)(S3223C2_nt*), 0, "S3223C1");
    check_base_class_offset(lv, (S3223C2_nt*), 0, "S3223C1");
    check_field_offset(lv, s3223c1f0, ABISELECT(568,436), "S3223C1.s3223c1f0");
    check_field_offset(lv, s3223c1f1, ABISELECT(584,444), "S3223C1.s3223c1f1");
    check_field_offset(lv, s3223c1f2, ABISELECT(588,448), "S3223C1.s3223c1f2");
    check_field_offset(lv, s3223c1f3, ABISELECT(604,464), "S3223C1.s3223c1f3");
    set_bf_and_test(lv, s3223c1f4, ABISELECT(616,476), 0, 1, 1, "S3223C1");
    set_bf_and_test(lv, s3223c1f5, ABISELECT(616,476), 1, 1, 1, "S3223C1");
    check_field_offset(lv, s3223c1f6, ABISELECT(624,480), "S3223C1.s3223c1f6");
    test_class_info(&lv, &cd_S3223C1);
    dp->~S3223C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3223C1(Test_S3223C1, "S3223C1", ABISELECT(688,512));

#else // __cplusplus

extern void _ZN7S3223C1C1Ev();
extern void _ZN7S3223C1D1Ev();
Name_Map name_map_S3223C1[] = {
  NSPAIR(_ZN7S3223C1C1Ev),
  NSPAIR(_ZN7S3223C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C3_nt;
extern VTBL_ENTRY _ZTI10S3223C3_nt[];
extern  VTBL_ENTRY _ZTV10S3223C3_nt[];
extern Class_Descriptor cd_S3223C2_nt;
extern VTBL_ENTRY _ZTI10S3223C2_nt[];
extern  VTBL_ENTRY _ZTV10S3223C2_nt[];
static Base_Class bases_S3223C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3223C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3223C1[];
extern void _ZN7S3223C1D1Ev();
extern void _ZN7S3223C1D0Ev();
extern void _ZN10S3223C3_nt2v4Ev();
extern void _ZN10S3223C3_nt2v5Ev();
extern void _ZN10S3223C3_nt2v6Ev();
extern void _ZN10S3223C3_nt2v7Ev();
extern void _ZN10S3223C3_nt2v8Ev();
extern void _ZN10S3223C3_nt2v9Ev();
extern void _ZN10S3223C3_nt3v10Ev();
extern void _ZN10S3223C3_nt3v11Ev();
extern void _ZN10S3223C3_nt3v12Ev();
extern void _ZN10S3223C3_nt3v13Ev();
extern void _ZN10S3223C3_nt3v14Ev();
extern void _ZN10S3223C3_nt3v15Ev();
extern void _ZN10S3223C3_nt3v16Ev();
extern void _ZN10S3223C3_nt3v17Ev();
extern void _ZN10S3223C3_nt3v18Ev();
extern void _ZN10S3223C3_nt3v19Ev();
extern void _ZN10S3223C3_nt3v20Ev();
extern void _ZN10S3223C3_nt3v21Ev();
extern void _ZN10S3223C3_nt3v22Ev();
extern void _ZN10S3223C3_nt3v23Ev();
extern void _ZN10S3223C3_nt3v24Ev();
extern void _ZN10S3223C3_nt3v25Ev();
extern void _ZN10S3223C3_nt3v26Ev();
extern void _ZN10S3223C3_nt3v27Ev();
extern void _ZN10S3223C3_nt3v28Ev();
extern void _ZN10S3223C3_nt3v29Ev();
extern void _ZN10S3223C3_nt3v30Ev();
extern void _ZN10S3223C3_nt3v31Ev();
extern void _ZN10S3223C3_nt3v32Ev();
extern void _ZN10S3223C3_nt3v33Ev();
extern void _ZN10S3223C3_nt3v34Ev();
extern void _ZN10S3223C3_nt3v35Ev();
extern void _ZN10S3223C3_nt3v36Ev();
extern void _ZN10S3223C3_nt3v37Ev();
extern void _ZN10S3223C3_nt3v38Ev();
extern void _ZN10S3223C3_nt3v39Ev();
extern void _ZN10S3223C3_nt3v40Ev();
extern void _ZN10S3223C3_nt3v41Ev();
extern void _ZN10S3223C3_nt3v42Ev();
extern void _ZN10S3223C3_nt3v43Ev();
extern void _ZN10S3223C3_nt3v44Ev();
extern void _ZN10S3223C3_nt3v45Ev();
extern void _ZN10S3223C3_nt3v46Ev();
extern void _ZN10S3223C3_nt3v47Ev();
extern void _ZN10S3223C3_nt3v48Ev();
extern void _ZN10S3223C3_nt3v49Ev();
extern void _ZN10S3223C3_nt3v50Ev();
extern void _ZN10S3223C3_nt3v51Ev();
extern void _ZN10S3223C3_nt3v52Ev();
extern void _ZN10S3223C3_nt3v53Ev();
extern void _ZN10S3223C3_nt3v54Ev();
extern void _ZN10S3223C3_nt3v55Ev();
extern void _ZN10S3223C3_nt3v56Ev();
extern void _ZN10S3223C3_nt3v57Ev();
extern void _ZN10S3223C3_nt3v58Ev();
extern void _ZN10S3223C3_nt3v59Ev();
extern void _ZN10S3223C3_nt3v60Ev();
extern void _ZN10S3223C3_nt3v61Ev();
extern void _ZN10S3223C3_nt3v62Ev();
extern void _ZN10S3223C3_nt3v63Ev();
extern void _ZN10S3223C3_nt3v64Ev();
extern void _ZN10S3223C3_nt3v65Ev();
extern void _ZN10S3223C3_nt3v66Ev();
extern void _ZN10S3223C3_nt3v67Ev();
extern void _ZN10S3223C2_nt3v68Ev();
extern void _ZN10S3223C2_nt3v69Ev();
extern void _ZN10S3223C2_nt3v70Ev();
extern void _ZN10S3223C2_nt3v71Ev();
extern void _ZN10S3223C2_nt3v72Ev();
extern void _ZN10S3223C2_nt3v73Ev();
extern void _ZN10S3223C2_nt3v74Ev();
extern void _ZN10S3223C2_nt3v75Ev();
extern void _ZN10S3223C2_nt3v76Ev();
extern void _ZN10S3223C2_nt3v77Ev();
extern void _ZN10S3223C2_nt3v78Ev();
extern void _ZN10S3223C2_nt3v79Ev();
extern void _ZN10S3223C2_nt3v80Ev();
extern void _ZN10S3223C2_nt3v81Ev();
extern void _ZN10S3223C2_nt3v82Ev();
extern void _ZN10S3223C2_nt3v83Ev();
extern void _ZN10S3223C2_nt3v84Ev();
extern void _ZN10S3223C2_nt3v85Ev();
extern void _ZN10S3223C2_nt3v86Ev();
extern void _ZN10S3223C2_nt3v87Ev();
extern void _ZN10S3223C2_nt3v88Ev();
extern void _ZN10S3223C2_nt3v89Ev();
extern void _ZN10S3223C2_nt3v90Ev();
extern void _ZN10S3223C2_nt3v91Ev();
extern void _ZN10S3223C2_nt3v92Ev();
extern void _ZN10S3223C2_nt3v93Ev();
extern void _ZN10S3223C2_nt3v94Ev();
extern void _ZN10S3223C2_nt3v95Ev();
extern void _ZN10S3223C2_nt3v96Ev();
extern void _ZN10S3223C2_nt3v97Ev();
extern void _ZN10S3223C2_nt3v98Ev();
extern void _ZN10S3223C2_nt3v99Ev();
extern void _ZN10S3223C2_nt4v100Ev();
extern void _ZN10S3223C2_nt4v101Ev();
extern void _ZN10S3223C2_nt4v102Ev();
extern void _ZN10S3223C2_nt4v103Ev();
extern void _ZN10S3223C2_nt4v104Ev();
extern void _ZN10S3223C2_nt4v105Ev();
extern void _ZN10S3223C2_nt4v106Ev();
extern void _ZN10S3223C2_nt4v107Ev();
extern void _ZN10S3223C2_nt4v108Ev();
extern void _ZN10S3223C2_nt4v109Ev();
extern void _ZN10S3223C2_nt4v110Ev();
extern void _ZN10S3223C2_nt4v111Ev();
extern void _ZN10S3223C2_nt4v112Ev();
extern void _ZN10S3223C2_nt4v113Ev();
extern void _ZN10S3223C2_nt4v114Ev();
extern void _ZN10S3223C2_nt4v115Ev();
extern void _ZN10S3223C2_nt4v116Ev();
extern void _ZN10S3223C2_nt4v117Ev();
extern void _ZN10S3223C2_nt4v118Ev();
extern void _ZN10S3223C2_nt4v119Ev();
extern void _ZN10S3223C2_nt4v120Ev();
extern void _ZN10S3223C2_nt4v121Ev();
extern void _ZN10S3223C2_nt4v122Ev();
extern void _ZN10S3223C2_nt4v123Ev();
extern void _ZN10S3223C2_nt4v124Ev();
extern void _ZN10S3223C2_nt4v125Ev();
extern void _ZN10S3223C2_nt4v126Ev();
extern void _ZN10S3223C2_nt4v127Ev();
extern void _ZN10S3223C2_nt4v128Ev();
extern void _ZN10S3223C2_nt4v129Ev();
extern void _ZN10S3223C2_nt4v130Ev();
extern void _ZN10S3223C2_nt4v131Ev();
extern void _ZN10S3223C2_nt4v132Ev();
extern void _ZN10S3223C2_nt4v133Ev();
extern void _ZN10S3223C2_nt4v134Ev();
extern void _ZN10S3223C2_nt4v135Ev();
extern void _ZN10S3223C2_nt4v136Ev();
extern void _ZN10S3223C2_nt4v137Ev();
extern void _ZN10S3223C2_nt4v138Ev();
extern void _ZN10S3223C2_nt4v139Ev();
extern void _ZN10S3223C2_nt4v140Ev();
extern void _ZN10S3223C2_nt4v141Ev();
extern void _ZN10S3223C2_nt4v142Ev();
extern void _ZN10S3223C2_nt4v143Ev();
extern void _ZN10S3223C2_nt4v144Ev();
extern void _ZN10S3223C2_nt4v145Ev();
extern void _ZN10S3223C2_nt4v146Ev();
extern void _ZN10S3223C2_nt4v147Ev();
extern void _ZN10S3223C2_nt4v148Ev();
extern void _ZN10S3223C2_nt4v149Ev();
extern void _ZN10S3223C2_nt4v150Ev();
extern void _ZN10S3223C2_nt4v151Ev();
extern void _ZN10S3223C2_nt4v152Ev();
extern void _ZN10S3223C2_nt4v153Ev();
extern void _ZN10S3223C2_nt4v154Ev();
extern void _ZN10S3223C2_nt4v155Ev();
extern void _ZN10S3223C2_nt4v156Ev();
extern void _ZN10S3223C2_nt4v157Ev();
extern void _ZN10S3223C2_nt4v158Ev();
extern void _ZN10S3223C2_nt4v159Ev();
extern void _ZN10S3223C2_nt4v160Ev();
extern void _ZN10S3223C2_nt4v161Ev();
extern void _ZN10S3223C2_nt4v162Ev();
extern void _ZN10S3223C2_nt4v163Ev();
extern void _ZN10S3223C2_nt4v164Ev();
extern void _ZN10S3223C2_nt4v165Ev();
extern void _ZN10S3223C2_nt4v166Ev();
extern void _ZN10S3223C2_nt4v167Ev();
extern void _ZN10S3223C2_nt4v168Ev();
extern void _ZN10S3223C2_nt4v169Ev();
extern void _ZN10S3223C2_nt4v170Ev();
extern void _ZN10S3223C2_nt4v171Ev();
extern void _ZN10S3223C2_nt4v172Ev();
extern void _ZN10S3223C2_nt4v173Ev();
extern void _ZN10S3223C2_nt4v174Ev();
extern void _ZN10S3223C2_nt4v175Ev();
extern void _ZN10S3223C2_nt4v176Ev();
extern void _ZN10S3223C2_nt4v177Ev();
extern void _ZN10S3223C2_nt4v178Ev();
extern void _ZN10S3223C2_nt4v179Ev();
extern void _ZN10S3223C2_nt4v180Ev();
extern void _ZN10S3223C2_nt4v181Ev();
extern void _ZN10S3223C2_nt4v182Ev();
extern void _ZN10S3223C2_nt4v183Ev();
extern void _ZN10S3223C2_nt4v184Ev();
extern void _ZN10S3223C2_nt4v185Ev();
extern void _ZN10S3223C2_nt4v186Ev();
extern void _ZN10S3223C2_nt4v187Ev();
extern void _ZN10S3223C2_nt4v188Ev();
extern void _ZN10S3223C2_nt4v189Ev();
extern void _ZN10S3223C2_nt4v190Ev();
extern void _ZN10S3223C2_nt4v191Ev();
extern void _ZN10S3223C2_nt4v192Ev();
extern void _ZN10S3223C2_nt4v193Ev();
extern void _ZN10S3223C2_nt4v194Ev();
extern void _ZN10S3223C2_nt4v195Ev();
extern void _ZN10S3223C2_nt4v196Ev();
extern void _ZN10S3223C2_nt4v197Ev();
extern void _ZN10S3223C2_nt4v198Ev();
extern void _ZN10S3223C2_nt4v199Ev();
extern void _ZN10S3223C2_nt4v200Ev();
extern void _ZN10S3223C2_nt4v201Ev();
extern void _ZN10S3223C2_nt4v202Ev();
extern void _ZN10S3223C2_nt4v203Ev();
extern void _ZN10S3223C2_nt4v204Ev();
extern void _ZN10S3223C2_nt4v205Ev();
extern void _ZN10S3223C2_nt4v206Ev();
extern void _ZN10S3223C2_nt4v207Ev();
extern void _ZN10S3223C2_nt4v208Ev();
extern void _ZN10S3223C2_nt4v209Ev();
extern void _ZN10S3223C2_nt4v210Ev();
extern void _ZN7S3223C12v1Ev();
extern void _ZN7S3223C12v2Ev();
extern void _ZN7S3223C12v3Ev();
static  VTBL_ENTRY vtc_S3223C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3223C1[0]),
  (VTBL_ENTRY)&_ZN7S3223C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3223C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3223C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3223C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN7S3223C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3223C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3223C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3223C1[];
extern  VTBL_ENTRY _ZTV7S3223C1[];
Class_Descriptor cd_S3223C1 = {  "S3223C1", // class name
  bases_S3223C1, 2,
  &(vtc_S3223C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(688,512), // object size
  NSPAIRA(_ZTI7S3223C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3223C1),214, //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  S3619C5_nt  {
  void  mf3619c5(); // _ZN10S3619C5_nt8mf3619c5Ev
};
//SIG(-1 S3619C5_nt) C1{ m}


void  S3619C5_nt ::mf3619c5(){}

//skip512 S3619C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3619C5_nt[];
VTBL_ENTRY *P__ZTI10S3619C5_nt = _ZTI10S3619C5_nt; 
Class_Descriptor cd_S3619C5_nt = {  "S3619C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S3619C5_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  S3619C4_nt  {
  void *s3619c4f0;
  int s3619c4f1;
  ::S3619C5_nt s3619c4f2;
  ::S3619C5_nt s3619c4f3;
  void  mf3619c4(); // _ZN10S3619C4_nt8mf3619c4Ev
};
//SIG(-1 S3619C4_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S3619C4_nt ::mf3619c4(){}

//skip512 S3619C4_nt

#else // __cplusplus

Class_Descriptor cd_S3619C4_nt = {  "S3619C4_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  S3619C3_nt  {
  ::S3619C4_nt s3619c3f0;
  ::S3619C4_nt s3619c3f1;
  char s3619c3f2;
  void  mf3619c3(); // _ZN10S3619C3_nt8mf3619c3Ev
  virtual  ~S3619C3_nt(); // _ZN10S3619C3_ntD1Ev
  S3619C3_nt(); // tgen
};
//SIG(-1 S3619C3_nt) C1{ vd m FC2{ m Fp Fi FC3{ m} FC3} FC2 Fc}


void  S3619C3_nt ::mf3619c3(){}
 S3619C3_nt ::~S3619C3_nt(){ note_dtor("S3619C3_nt", this);}
S3619C3_nt ::S3619C3_nt(){ note_ctor("S3619C3_nt", this);} // tgen

//skip512 S3619C3_nt

#else // __cplusplus

extern void _ZN10S3619C3_ntC1Ev();
extern void _ZN10S3619C3_ntD1Ev();
Name_Map name_map_S3619C3_nt[] = {
  NSPAIR(_ZN10S3619C3_ntC1Ev),
  NSPAIR(_ZN10S3619C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern void _ZN10S3619C3_ntD1Ev();
extern void _ZN10S3619C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3619C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3619C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3619C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3619C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
VTBL_ENTRY *P__ZTI10S3619C3_nt = _ZTI10S3619C3_nt; 
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
Class_Descriptor cd_S3619C3_nt = {  "S3619C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3619C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S3619C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3619C3_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  S3619C10_nt  {
  char s3619c10f0;
  long s3619c10f1[2];
  short s3619c10f2[12];
  char s3619c10f3[5];
  void  mf3619c10(); // _ZN11S3619C10_nt9mf3619c10Ev
};
//SIG(-1 S3619C10_nt) C1{ m Fc Fl[2] Fs[12] Fc[5]}


void  S3619C10_nt ::mf3619c10(){}

//skip512 S3619C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C11  {
  char s3619c11f0;
  long s3619c11f1[4];
  int s3619c11f2[4];
  void  mf3619c11(); // _ZN8S3619C119mf3619c11Ev
};
//SIG(-1 S3619C11) C1{ m Fc Fl[4] Fi[4]}


void  S3619C11 ::mf3619c11(){}

static void Test_S3619C11()
{
  {
    init_simple_test("S3619C11");
    S3619C11 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3619C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C11)");
    check_field_offset(lv, s3619c11f0, 0, "S3619C11.s3619c11f0");
    check_field_offset(lv, s3619c11f1, ABISELECT(8,4), "S3619C11.s3619c11f1");
    check_field_offset(lv, s3619c11f2, ABISELECT(40,20), "S3619C11.s3619c11f2");
  }
}
static Arrange_To_Call_Me vS3619C11(Test_S3619C11, "S3619C11", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C14_nt  {
  __tsi64 s3619c14f0[4];
};
//SIG(-1 S3619C14_nt) C1{ FL[4]}



//skip512 S3619C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C13_nt  {
  ::S3619C14_nt s3619c13f0;
  void  mf3619c13(); // _ZN11S3619C13_nt9mf3619c13Ev
};
//SIG(-1 S3619C13_nt) C1{ m FC2{ FL[4]}}


void  S3619C13_nt ::mf3619c13(){}

//skip512 S3619C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C12  {
  ::S3619C13_nt s3619c12f0;
  char s3619c12f1;
  void *s3619c12f2;
  int s3619c12f3[3];
  void  mf3619c12(); // _ZN8S3619C129mf3619c12Ev
};
//SIG(-1 S3619C12) C1{ m FC2{ m FC3{ FL[4]}} Fc Fp Fi[3]}


void  S3619C12 ::mf3619c12(){}

static void Test_S3619C12()
{
  {
    init_simple_test("S3619C12");
    S3619C12 lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S3619C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C12)");
    check_field_offset(lv, s3619c12f0, 0, "S3619C12.s3619c12f0");
    check_field_offset(lv, s3619c12f1, 32, "S3619C12.s3619c12f1");
    check_field_offset(lv, s3619c12f2, ABISELECT(40,36), "S3619C12.s3619c12f2");
    check_field_offset(lv, s3619c12f3, ABISELECT(48,40), "S3619C12.s3619c12f3");
  }
}
static Arrange_To_Call_Me vS3619C12(Test_S3619C12, "S3619C12", ABISELECT(64,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C16  {
  void  mf3619c16(); // _ZN8S3619C169mf3619c16Ev
};
//SIG(-1 S3619C16) C1{ m}


void  S3619C16 ::mf3619c16(){}

static void Test_S3619C16()
{
  {
    init_simple_test("S3619C16");
    S3619C16 lv;
    check2(sizeof(lv), 1, "sizeof(S3619C16)");
    check2(__alignof__(lv), 1, "__alignof__(S3619C16)");
  }
}
static Arrange_To_Call_Me vS3619C16(Test_S3619C16, "S3619C16", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S3619C16[];
VTBL_ENTRY *P__ZTI8S3619C16 = _ZTI8S3619C16; 
Class_Descriptor cd_S3619C16 = {  "S3619C16", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S3619C16),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  S3619C15_nt  {
  void *s3619c15f0;
  int s3619c15f1[2];
  ::S3619C16 s3619c15f2;
  void  mf3619c15(); // _ZN11S3619C15_nt9mf3619c15Ev
};
//SIG(-1 S3619C15_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S3619C15_nt ::mf3619c15(){}

//skip512 S3619C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C18_nt  {
  void *s3619c18f0;
  int s3619c18f1;
  ::S3619C16 s3619c18f2;
  void  mf3619c18(); // _ZN11S3619C18_nt9mf3619c18Ev
};
//SIG(-1 S3619C18_nt) C1{ m Fp Fi FC2{ m}}


void  S3619C18_nt ::mf3619c18(){}

//skip512 S3619C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C23  {
  char s3619c23f0[11];
  void  mf3619c23(); // _ZN8S3619C239mf3619c23Ev
};
//SIG(-1 S3619C23) C1{ m Fc[11]}


void  S3619C23 ::mf3619c23(){}

static void Test_S3619C23()
{
  {
    init_simple_test("S3619C23");
    S3619C23 lv;
    check2(sizeof(lv), 11, "sizeof(S3619C23)");
    check2(__alignof__(lv), 1, "__alignof__(S3619C23)");
    check_field_offset(lv, s3619c23f0, 0, "S3619C23.s3619c23f0");
  }
}
static Arrange_To_Call_Me vS3619C23(Test_S3619C23, "S3619C23", 11);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C22  {
  ::S3619C23 s3619c22f0;
  int s3619c22f1[7];
  __tsi64 s3619c22f2;
  void  mf3619c22(); // _ZN8S3619C229mf3619c22Ev
};
//SIG(-1 S3619C22) C1{ m FC2{ m Fc[11]} Fi[7] FL}


void  S3619C22 ::mf3619c22(){}

static void Test_S3619C22()
{
  {
    init_simple_test("S3619C22");
    S3619C22 lv;
    check2(sizeof(lv), 48, "sizeof(S3619C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C22)");
    check_field_offset(lv, s3619c22f0, 0, "S3619C22.s3619c22f0");
    check_field_offset(lv, s3619c22f1, 12, "S3619C22.s3619c22f1");
    check_field_offset(lv, s3619c22f2, 40, "S3619C22.s3619c22f2");
  }
}
static Arrange_To_Call_Me vS3619C22(Test_S3619C22, "S3619C22", 48);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C26  {
  void  mf3619c26(); // _ZN8S3619C269mf3619c26Ev
};
//SIG(-1 S3619C26) C1{ m}


void  S3619C26 ::mf3619c26(){}

static void Test_S3619C26()
{
  {
    init_simple_test("S3619C26");
    S3619C26 lv;
    check2(sizeof(lv), 1, "sizeof(S3619C26)");
    check2(__alignof__(lv), 1, "__alignof__(S3619C26)");
  }
}
static Arrange_To_Call_Me vS3619C26(Test_S3619C26, "S3619C26", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S3619C26[];
VTBL_ENTRY *P__ZTI8S3619C26 = _ZTI8S3619C26; 
Class_Descriptor cd_S3619C26 = {  "S3619C26", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S3619C26),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  S3619C25  {
  void *s3619c25f0;
  int s3619c25f1[2];
  ::S3619C26 s3619c25f2;
  void  mf3619c25(); // _ZN8S3619C259mf3619c25Ev
};
//SIG(-1 S3619C25) C1{ m Fp Fi[2] FC2{ m}}


void  S3619C25 ::mf3619c25(){}

static void Test_S3619C25()
{
  {
    init_simple_test("S3619C25");
    S3619C25 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3619C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C25)");
    check_field_offset(lv, s3619c25f0, 0, "S3619C25.s3619c25f0");
    check_field_offset(lv, s3619c25f1, ABISELECT(8,4), "S3619C25.s3619c25f1");
    check_field_offset(lv, s3619c25f2, ABISELECT(16,12), "S3619C25.s3619c25f2");
  }
}
static Arrange_To_Call_Me vS3619C25(Test_S3619C25, "S3619C25", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C24  {
  void *s3619c24f0;
  ::S3619C13_nt s3619c24f1;
  __tsi64 s3619c24f2[2];
  int s3619c24f3;
  __tsi64 s3619c24f4;
  int s3619c24f5[2];
  char s3619c24f6;
  ::S3619C18_nt s3619c24f7;
  ::S3619C18_nt s3619c24f8;
  __tsi64 s3619c24f9[5];
  char s3619c24f10;
  int s3619c24f11;
  ::S3619C25 s3619c24f12;
  ::S3619C25 s3619c24f13;
  ::S3619C25 s3619c24f14;
  ::S3619C25 s3619c24f15;
  ::S3619C25 s3619c24f16;
  int s3619c24f17[2];
  void  mf3619c24(); // _ZN8S3619C249mf3619c24Ev
};
//SIG(-1 S3619C24) C1{ m Fp FC2{ m FC3{ FL[4]}} FL[2] Fi FL Fi[2] Fc FC4{ m Fp Fi FC5{ m}} FC4 FL[5] Fc Fi FC6{ m Fp Fi[2] FC7{ m}} FC6 FC6 FC6 FC6 Fi[2]}


void  S3619C24 ::mf3619c24(){}

static void Test_S3619C24()
{
  {
    init_simple_test("S3619C24");
    S3619C24 lv;
    check2(sizeof(lv), ABISELECT(296,236), "sizeof(S3619C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C24)");
    check_field_offset(lv, s3619c24f0, 0, "S3619C24.s3619c24f0");
    check_field_offset(lv, s3619c24f1, ABISELECT(8,4), "S3619C24.s3619c24f1");
    check_field_offset(lv, s3619c24f2, ABISELECT(40,36), "S3619C24.s3619c24f2");
    check_field_offset(lv, s3619c24f3, ABISELECT(56,52), "S3619C24.s3619c24f3");
    check_field_offset(lv, s3619c24f4, ABISELECT(64,56), "S3619C24.s3619c24f4");
    check_field_offset(lv, s3619c24f5, ABISELECT(72,64), "S3619C24.s3619c24f5");
    check_field_offset(lv, s3619c24f6, ABISELECT(80,72), "S3619C24.s3619c24f6");
    check_field_offset(lv, s3619c24f7, ABISELECT(88,76), "S3619C24.s3619c24f7");
    check_field_offset(lv, s3619c24f8, ABISELECT(104,88), "S3619C24.s3619c24f8");
    check_field_offset(lv, s3619c24f9, ABISELECT(120,100), "S3619C24.s3619c24f9");
    check_field_offset(lv, s3619c24f10, ABISELECT(160,140), "S3619C24.s3619c24f10");
    check_field_offset(lv, s3619c24f11, ABISELECT(164,144), "S3619C24.s3619c24f11");
    check_field_offset(lv, s3619c24f12, ABISELECT(168,148), "S3619C24.s3619c24f12");
    check_field_offset(lv, s3619c24f13, ABISELECT(192,164), "S3619C24.s3619c24f13");
    check_field_offset(lv, s3619c24f14, ABISELECT(216,180), "S3619C24.s3619c24f14");
    check_field_offset(lv, s3619c24f15, ABISELECT(240,196), "S3619C24.s3619c24f15");
    check_field_offset(lv, s3619c24f16, ABISELECT(264,212), "S3619C24.s3619c24f16");
    check_field_offset(lv, s3619c24f17, ABISELECT(288,228), "S3619C24.s3619c24f17");
  }
}
static Arrange_To_Call_Me vS3619C24(Test_S3619C24, "S3619C24", ABISELECT(296,236));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C2  : S3619C3_nt {
  int s3619c2f0[3];
  ::S3619C10_nt s3619c2f1;
  ::S3619C11 s3619c2f2;
  int s3619c2f3[3];
  void *s3619c2f4[2];
  char s3619c2f5[3];
  ::S3619C12 s3619c2f6;
  int s3619c2f7;
  ::S3619C15_nt s3619c2f8;
  void *s3619c2f9;
  int s3619c2f10[2];
  ::S3619C13_nt s3619c2f11;
  ::S3619C13_nt s3619c2f12;
  int s3619c2f13[3];
  char s3619c2f14[6144];
  ::S3619C18_nt s3619c2f15;
  ::S3619C15_nt s3619c2f16;
  char s3619c2f17;
  int s3619c2f18;
  char s3619c2f19;
  int s3619c2f20[5];
  __tsi64 s3619c2f21[7];
  char s3619c2f22;
  __tsi64 s3619c2f23[9];
  int s3619c2f24[2];
  ::S3619C22 s3619c2f25;
  ::S3619C24 s3619c2f26;
  void *s3619c2f27[4];
  __tsi64 s3619c2f28[2];
  ::S3619C18_nt s3619c2f29;
  int s3619c2f30;
  char s3619c2f31;
  __tsi64 s3619c2f32;
  char s3619c2f33;
  __tsi64 s3619c2f34;
  virtual  ~S3619C2(); // _ZN7S3619C2D1Ev
  virtual void  v46(); // _ZN7S3619C23v46Ev
  virtual void  v47(); // _ZN7S3619C23v47Ev
  virtual void  v48(); // _ZN7S3619C23v48Ev
  virtual void  v49(); // _ZN7S3619C23v49Ev
  virtual void  v50(); // _ZN7S3619C23v50Ev
  virtual void  v51(); // _ZN7S3619C23v51Ev
  virtual void  v52(); // _ZN7S3619C23v52Ev
  virtual void  v53(); // _ZN7S3619C23v53Ev
  virtual void  v54(); // _ZN7S3619C23v54Ev
  virtual void  v55(); // _ZN7S3619C23v55Ev
  virtual void  v56(); // _ZN7S3619C23v56Ev
  virtual void  v57(); // _ZN7S3619C23v57Ev
  virtual void  v58(); // _ZN7S3619C23v58Ev
  virtual void  v59(); // _ZN7S3619C23v59Ev
  virtual void  v60(); // _ZN7S3619C23v60Ev
  virtual void  v61(); // _ZN7S3619C23v61Ev
  virtual void  v62(); // _ZN7S3619C23v62Ev
  virtual void  v63(); // _ZN7S3619C23v63Ev
  virtual void  v64(); // _ZN7S3619C23v64Ev
  virtual void  v65(); // _ZN7S3619C23v65Ev
  virtual void  v66(); // _ZN7S3619C23v66Ev
  virtual void  v67(); // _ZN7S3619C23v67Ev
  virtual void  v68(); // _ZN7S3619C23v68Ev
  virtual void  v69(); // _ZN7S3619C23v69Ev
  virtual void  v70(); // _ZN7S3619C23v70Ev
  virtual void  v71(); // _ZN7S3619C23v71Ev
  virtual void  v72(); // _ZN7S3619C23v72Ev
  virtual void  v73(); // _ZN7S3619C23v73Ev
  virtual void  v74(); // _ZN7S3619C23v74Ev
  virtual void  v75(); // _ZN7S3619C23v75Ev
  virtual void  v76(); // _ZN7S3619C23v76Ev
  virtual void  v77(); // _ZN7S3619C23v77Ev
  virtual void  v78(); // _ZN7S3619C23v78Ev
  virtual void  v79(); // _ZN7S3619C23v79Ev
  virtual void  v80(); // _ZN7S3619C23v80Ev
  virtual void  v81(); // _ZN7S3619C23v81Ev
  virtual void  v82(); // _ZN7S3619C23v82Ev
  virtual void  v83(); // _ZN7S3619C23v83Ev
  virtual void  v84(); // _ZN7S3619C23v84Ev
  virtual void  v85(); // _ZN7S3619C23v85Ev
  virtual void  v86(); // _ZN7S3619C23v86Ev
  virtual void  v87(); // _ZN7S3619C23v87Ev
  virtual void  v88(); // _ZN7S3619C23v88Ev
  virtual void  v89(); // _ZN7S3619C23v89Ev
  virtual void  v90(); // _ZN7S3619C23v90Ev
  virtual void  v91(); // _ZN7S3619C23v91Ev
  virtual void  v92(); // _ZN7S3619C23v92Ev
  virtual void  v93(); // _ZN7S3619C23v93Ev
  virtual void  v94(); // _ZN7S3619C23v94Ev
  virtual void  v95(); // _ZN7S3619C23v95Ev
  virtual void  v96(); // _ZN7S3619C23v96Ev
  virtual void  v97(); // _ZN7S3619C23v97Ev
  virtual void  v98(); // _ZN7S3619C23v98Ev
  virtual void  v99(); // _ZN7S3619C23v99Ev
  virtual void  v100(); // _ZN7S3619C24v100Ev
  virtual void  v101(); // _ZN7S3619C24v101Ev
  virtual void  v102(); // _ZN7S3619C24v102Ev
  virtual void  v103(); // _ZN7S3619C24v103Ev
  virtual void  v104(); // _ZN7S3619C24v104Ev
  virtual void  v105(); // _ZN7S3619C24v105Ev
  virtual void  v106(); // _ZN7S3619C24v106Ev
  virtual void  v107(); // _ZN7S3619C24v107Ev
  virtual void  v108(); // _ZN7S3619C24v108Ev
  virtual void  v109(); // _ZN7S3619C24v109Ev
  virtual void  v110(); // _ZN7S3619C24v110Ev
  virtual void  v111(); // _ZN7S3619C24v111Ev
  virtual void  v112(); // _ZN7S3619C24v112Ev
  virtual void  v113(); // _ZN7S3619C24v113Ev
  virtual void  v114(); // _ZN7S3619C24v114Ev
  virtual void  v115(); // _ZN7S3619C24v115Ev
  virtual void  v116(); // _ZN7S3619C24v116Ev
  virtual void  v117(); // _ZN7S3619C24v117Ev
  virtual void  v118(); // _ZN7S3619C24v118Ev
  virtual void  v119(); // _ZN7S3619C24v119Ev
  virtual void  v120(); // _ZN7S3619C24v120Ev
  virtual void  v121(); // _ZN7S3619C24v121Ev
  virtual void  v122(); // _ZN7S3619C24v122Ev
  virtual void  v123(); // _ZN7S3619C24v123Ev
  virtual void  v124(); // _ZN7S3619C24v124Ev
  virtual void  v125(); // _ZN7S3619C24v125Ev
  virtual void  v126(); // _ZN7S3619C24v126Ev
  virtual void  v127(); // _ZN7S3619C24v127Ev
  virtual void  v128(); // _ZN7S3619C24v128Ev
  virtual void  v129(); // _ZN7S3619C24v129Ev
  virtual void  v130(); // _ZN7S3619C24v130Ev
  virtual void  v131(); // _ZN7S3619C24v131Ev
  virtual void  v132(); // _ZN7S3619C24v132Ev
  virtual void  v133(); // _ZN7S3619C24v133Ev
  virtual void  v134(); // _ZN7S3619C24v134Ev
  virtual void  v135(); // _ZN7S3619C24v135Ev
  virtual void  v136(); // _ZN7S3619C24v136Ev
  virtual void  v137(); // _ZN7S3619C24v137Ev
  virtual void  v138(); // _ZN7S3619C24v138Ev
  virtual void  v139(); // _ZN7S3619C24v139Ev
  virtual void  v140(); // _ZN7S3619C24v140Ev
  virtual void  v141(); // _ZN7S3619C24v141Ev
  virtual void  v142(); // _ZN7S3619C24v142Ev
  virtual void  v143(); // _ZN7S3619C24v143Ev
  S3619C2(); // tgen
};
//SIG(-1 S3619C2) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC4} FC3 Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 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 Fi[3] FC5{ m Fc Fl[2] Fs[12] Fc[5]} FC6{ m Fc Fl[4] Fi[4]} Fi[3] Fp[2] Fc[3] FC7{ m FC8{ m FC9{ FL[4]}} Fc Fp Fi[3]} Fi FC10{ m Fp Fi[2] FC11{ m}} Fp Fi[2] FC8 FC8 Fi[3] Fc[6144] FC12{ m Fp Fi FC11} FC10 Fc Fi Fc Fi[5] FL[7] Fc FL[9] Fi[2] FC13{ m FC14{ m Fc[11]} Fi[7] FL} FC15{ m Fp FC8 FL[2] Fi FL Fi[2] Fc FC12 FC12 FL[5] Fc Fi FC16{ m Fp Fi[2] FC17{ m}} FC16 FC16 FC16 FC16 Fi[2]} Fp[4] FL[2] FC12 Fi Fc FL Fc FL}


 S3619C2 ::~S3619C2(){ note_dtor("S3619C2", this);}
void  S3619C2 ::v46(){vfunc_called(this, "_ZN7S3619C23v46Ev");}
void  S3619C2 ::v47(){vfunc_called(this, "_ZN7S3619C23v47Ev");}
void  S3619C2 ::v48(){vfunc_called(this, "_ZN7S3619C23v48Ev");}
void  S3619C2 ::v49(){vfunc_called(this, "_ZN7S3619C23v49Ev");}
void  S3619C2 ::v50(){vfunc_called(this, "_ZN7S3619C23v50Ev");}
void  S3619C2 ::v51(){vfunc_called(this, "_ZN7S3619C23v51Ev");}
void  S3619C2 ::v52(){vfunc_called(this, "_ZN7S3619C23v52Ev");}
void  S3619C2 ::v53(){vfunc_called(this, "_ZN7S3619C23v53Ev");}
void  S3619C2 ::v54(){vfunc_called(this, "_ZN7S3619C23v54Ev");}
void  S3619C2 ::v55(){vfunc_called(this, "_ZN7S3619C23v55Ev");}
void  S3619C2 ::v56(){vfunc_called(this, "_ZN7S3619C23v56Ev");}
void  S3619C2 ::v57(){vfunc_called(this, "_ZN7S3619C23v57Ev");}
void  S3619C2 ::v58(){vfunc_called(this, "_ZN7S3619C23v58Ev");}
void  S3619C2 ::v59(){vfunc_called(this, "_ZN7S3619C23v59Ev");}
void  S3619C2 ::v60(){vfunc_called(this, "_ZN7S3619C23v60Ev");}
void  S3619C2 ::v61(){vfunc_called(this, "_ZN7S3619C23v61Ev");}
void  S3619C2 ::v62(){vfunc_called(this, "_ZN7S3619C23v62Ev");}
void  S3619C2 ::v63(){vfunc_called(this, "_ZN7S3619C23v63Ev");}
void  S3619C2 ::v64(){vfunc_called(this, "_ZN7S3619C23v64Ev");}
void  S3619C2 ::v65(){vfunc_called(this, "_ZN7S3619C23v65Ev");}
void  S3619C2 ::v66(){vfunc_called(this, "_ZN7S3619C23v66Ev");}
void  S3619C2 ::v67(){vfunc_called(this, "_ZN7S3619C23v67Ev");}
void  S3619C2 ::v68(){vfunc_called(this, "_ZN7S3619C23v68Ev");}
void  S3619C2 ::v69(){vfunc_called(this, "_ZN7S3619C23v69Ev");}
void  S3619C2 ::v70(){vfunc_called(this, "_ZN7S3619C23v70Ev");}
void  S3619C2 ::v71(){vfunc_called(this, "_ZN7S3619C23v71Ev");}
void  S3619C2 ::v72(){vfunc_called(this, "_ZN7S3619C23v72Ev");}
void  S3619C2 ::v73(){vfunc_called(this, "_ZN7S3619C23v73Ev");}
void  S3619C2 ::v74(){vfunc_called(this, "_ZN7S3619C23v74Ev");}
void  S3619C2 ::v75(){vfunc_called(this, "_ZN7S3619C23v75Ev");}
void  S3619C2 ::v76(){vfunc_called(this, "_ZN7S3619C23v76Ev");}
void  S3619C2 ::v77(){vfunc_called(this, "_ZN7S3619C23v77Ev");}
void  S3619C2 ::v78(){vfunc_called(this, "_ZN7S3619C23v78Ev");}
void  S3619C2 ::v79(){vfunc_called(this, "_ZN7S3619C23v79Ev");}
void  S3619C2 ::v80(){vfunc_called(this, "_ZN7S3619C23v80Ev");}
void  S3619C2 ::v81(){vfunc_called(this, "_ZN7S3619C23v81Ev");}
void  S3619C2 ::v82(){vfunc_called(this, "_ZN7S3619C23v82Ev");}
void  S3619C2 ::v83(){vfunc_called(this, "_ZN7S3619C23v83Ev");}
void  S3619C2 ::v84(){vfunc_called(this, "_ZN7S3619C23v84Ev");}
void  S3619C2 ::v85(){vfunc_called(this, "_ZN7S3619C23v85Ev");}
void  S3619C2 ::v86(){vfunc_called(this, "_ZN7S3619C23v86Ev");}
void  S3619C2 ::v87(){vfunc_called(this, "_ZN7S3619C23v87Ev");}
void  S3619C2 ::v88(){vfunc_called(this, "_ZN7S3619C23v88Ev");}
void  S3619C2 ::v89(){vfunc_called(this, "_ZN7S3619C23v89Ev");}
void  S3619C2 ::v90(){vfunc_called(this, "_ZN7S3619C23v90Ev");}
void  S3619C2 ::v91(){vfunc_called(this, "_ZN7S3619C23v91Ev");}
void  S3619C2 ::v92(){vfunc_called(this, "_ZN7S3619C23v92Ev");}
void  S3619C2 ::v93(){vfunc_called(this, "_ZN7S3619C23v93Ev");}
void  S3619C2 ::v94(){vfunc_called(this, "_ZN7S3619C23v94Ev");}
void  S3619C2 ::v95(){vfunc_called(this, "_ZN7S3619C23v95Ev");}
void  S3619C2 ::v96(){vfunc_called(this, "_ZN7S3619C23v96Ev");}
void  S3619C2 ::v97(){vfunc_called(this, "_ZN7S3619C23v97Ev");}
void  S3619C2 ::v98(){vfunc_called(this, "_ZN7S3619C23v98Ev");}
void  S3619C2 ::v99(){vfunc_called(this, "_ZN7S3619C23v99Ev");}
void  S3619C2 ::v100(){vfunc_called(this, "_ZN7S3619C24v100Ev");}
void  S3619C2 ::v101(){vfunc_called(this, "_ZN7S3619C24v101Ev");}
void  S3619C2 ::v102(){vfunc_called(this, "_ZN7S3619C24v102Ev");}
void  S3619C2 ::v103(){vfunc_called(this, "_ZN7S3619C24v103Ev");}
void  S3619C2 ::v104(){vfunc_called(this, "_ZN7S3619C24v104Ev");}
void  S3619C2 ::v105(){vfunc_called(this, "_ZN7S3619C24v105Ev");}
void  S3619C2 ::v106(){vfunc_called(this, "_ZN7S3619C24v106Ev");}
void  S3619C2 ::v107(){vfunc_called(this, "_ZN7S3619C24v107Ev");}
void  S3619C2 ::v108(){vfunc_called(this, "_ZN7S3619C24v108Ev");}
void  S3619C2 ::v109(){vfunc_called(this, "_ZN7S3619C24v109Ev");}
void  S3619C2 ::v110(){vfunc_called(this, "_ZN7S3619C24v110Ev");}
void  S3619C2 ::v111(){vfunc_called(this, "_ZN7S3619C24v111Ev");}
void  S3619C2 ::v112(){vfunc_called(this, "_ZN7S3619C24v112Ev");}
void  S3619C2 ::v113(){vfunc_called(this, "_ZN7S3619C24v113Ev");}
void  S3619C2 ::v114(){vfunc_called(this, "_ZN7S3619C24v114Ev");}
void  S3619C2 ::v115(){vfunc_called(this, "_ZN7S3619C24v115Ev");}
void  S3619C2 ::v116(){vfunc_called(this, "_ZN7S3619C24v116Ev");}
void  S3619C2 ::v117(){vfunc_called(this, "_ZN7S3619C24v117Ev");}
void  S3619C2 ::v118(){vfunc_called(this, "_ZN7S3619C24v118Ev");}
void  S3619C2 ::v119(){vfunc_called(this, "_ZN7S3619C24v119Ev");}
void  S3619C2 ::v120(){vfunc_called(this, "_ZN7S3619C24v120Ev");}
void  S3619C2 ::v121(){vfunc_called(this, "_ZN7S3619C24v121Ev");}
void  S3619C2 ::v122(){vfunc_called(this, "_ZN7S3619C24v122Ev");}
void  S3619C2 ::v123(){vfunc_called(this, "_ZN7S3619C24v123Ev");}
void  S3619C2 ::v124(){vfunc_called(this, "_ZN7S3619C24v124Ev");}
void  S3619C2 ::v125(){vfunc_called(this, "_ZN7S3619C24v125Ev");}
void  S3619C2 ::v126(){vfunc_called(this, "_ZN7S3619C24v126Ev");}
void  S3619C2 ::v127(){vfunc_called(this, "_ZN7S3619C24v127Ev");}
void  S3619C2 ::v128(){vfunc_called(this, "_ZN7S3619C24v128Ev");}
void  S3619C2 ::v129(){vfunc_called(this, "_ZN7S3619C24v129Ev");}
void  S3619C2 ::v130(){vfunc_called(this, "_ZN7S3619C24v130Ev");}
void  S3619C2 ::v131(){vfunc_called(this, "_ZN7S3619C24v131Ev");}
void  S3619C2 ::v132(){vfunc_called(this, "_ZN7S3619C24v132Ev");}
void  S3619C2 ::v133(){vfunc_called(this, "_ZN7S3619C24v133Ev");}
void  S3619C2 ::v134(){vfunc_called(this, "_ZN7S3619C24v134Ev");}
void  S3619C2 ::v135(){vfunc_called(this, "_ZN7S3619C24v135Ev");}
void  S3619C2 ::v136(){vfunc_called(this, "_ZN7S3619C24v136Ev");}
void  S3619C2 ::v137(){vfunc_called(this, "_ZN7S3619C24v137Ev");}
void  S3619C2 ::v138(){vfunc_called(this, "_ZN7S3619C24v138Ev");}
void  S3619C2 ::v139(){vfunc_called(this, "_ZN7S3619C24v139Ev");}
void  S3619C2 ::v140(){vfunc_called(this, "_ZN7S3619C24v140Ev");}
void  S3619C2 ::v141(){vfunc_called(this, "_ZN7S3619C24v141Ev");}
void  S3619C2 ::v142(){vfunc_called(this, "_ZN7S3619C24v142Ev");}
void  S3619C2 ::v143(){vfunc_called(this, "_ZN7S3619C24v143Ev");}
S3619C2 ::S3619C2(){ note_ctor("S3619C2", this);} // tgen

static void Test_S3619C2()
{
  extern Class_Descriptor cd_S3619C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(901,1753)];
    init_test(&cd_S3619C2, buf);
    S3619C2 *dp, &lv = *(dp=new (buf) S3619C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7200,7008), "sizeof(S3619C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C2)");
    check_base_class_offset(lv, (S3619C3_nt*), 0, "S3619C2");
    check_field_offset(lv, s3619c2f0, ABISELECT(44,32), "S3619C2.s3619c2f0");
    check_field_offset(lv, s3619c2f1, ABISELECT(56,44), "S3619C2.s3619c2f1");
    check_field_offset(lv, s3619c2f2, ABISELECT(112,88), "S3619C2.s3619c2f2");
    check_field_offset(lv, s3619c2f3, ABISELECT(168,124), "S3619C2.s3619c2f3");
    check_field_offset(lv, s3619c2f4, ABISELECT(184,136), "S3619C2.s3619c2f4");
    check_field_offset(lv, s3619c2f5, ABISELECT(200,144), "S3619C2.s3619c2f5");
    check_field_offset(lv, s3619c2f6, ABISELECT(208,148), "S3619C2.s3619c2f6");
    check_field_offset(lv, s3619c2f7, ABISELECT(272,200), "S3619C2.s3619c2f7");
    check_field_offset(lv, s3619c2f8, ABISELECT(280,204), "S3619C2.s3619c2f8");
    check_field_offset(lv, s3619c2f9, ABISELECT(304,220), "S3619C2.s3619c2f9");
    check_field_offset(lv, s3619c2f10, ABISELECT(312,224), "S3619C2.s3619c2f10");
    check_field_offset(lv, s3619c2f11, ABISELECT(320,232), "S3619C2.s3619c2f11");
    check_field_offset(lv, s3619c2f12, ABISELECT(352,264), "S3619C2.s3619c2f12");
    check_field_offset(lv, s3619c2f13, ABISELECT(384,296), "S3619C2.s3619c2f13");
    check_field_offset(lv, s3619c2f14, ABISELECT(396,308), "S3619C2.s3619c2f14");
    check_field_offset(lv, s3619c2f15, ABISELECT(6544,6452), "S3619C2.s3619c2f15");
    check_field_offset(lv, s3619c2f16, ABISELECT(6560,6464), "S3619C2.s3619c2f16");
    check_field_offset(lv, s3619c2f17, ABISELECT(6584,6480), "S3619C2.s3619c2f17");
    check_field_offset(lv, s3619c2f18, ABISELECT(6588,6484), "S3619C2.s3619c2f18");
    check_field_offset(lv, s3619c2f19, ABISELECT(6592,6488), "S3619C2.s3619c2f19");
    check_field_offset(lv, s3619c2f20, ABISELECT(6596,6492), "S3619C2.s3619c2f20");
    check_field_offset(lv, s3619c2f21, ABISELECT(6616,6512), "S3619C2.s3619c2f21");
    check_field_offset(lv, s3619c2f22, ABISELECT(6672,6568), "S3619C2.s3619c2f22");
    check_field_offset(lv, s3619c2f23, ABISELECT(6680,6572), "S3619C2.s3619c2f23");
    check_field_offset(lv, s3619c2f24, ABISELECT(6752,6644), "S3619C2.s3619c2f24");
    check_field_offset(lv, s3619c2f25, ABISELECT(6760,6652), "S3619C2.s3619c2f25");
    check_field_offset(lv, s3619c2f26, ABISELECT(6808,6700), "S3619C2.s3619c2f26");
    check_field_offset(lv, s3619c2f27, ABISELECT(7104,6936), "S3619C2.s3619c2f27");
    check_field_offset(lv, s3619c2f28, ABISELECT(7136,6952), "S3619C2.s3619c2f28");
    check_field_offset(lv, s3619c2f29, ABISELECT(7152,6968), "S3619C2.s3619c2f29");
    check_field_offset(lv, s3619c2f30, ABISELECT(7168,6980), "S3619C2.s3619c2f30");
    check_field_offset(lv, s3619c2f31, ABISELECT(7172,6984), "S3619C2.s3619c2f31");
    check_field_offset(lv, s3619c2f32, ABISELECT(7176,6988), "S3619C2.s3619c2f32");
    check_field_offset(lv, s3619c2f33, ABISELECT(7184,6996), "S3619C2.s3619c2f33");
    check_field_offset(lv, s3619c2f34, ABISELECT(7192,7000), "S3619C2.s3619c2f34");
    test_class_info(&lv, &cd_S3619C2);
    dp->~S3619C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3619C2(Test_S3619C2, "S3619C2", ABISELECT(7200,7008));

#else // __cplusplus

extern void _ZN7S3619C2C1Ev();
extern void _ZN7S3619C2D1Ev();
Name_Map name_map_S3619C2[] = {
  NSPAIR(_ZN7S3619C2C1Ev),
  NSPAIR(_ZN7S3619C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
static Base_Class bases_S3619C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3619C2[];
extern void _ZN7S3619C2D1Ev();
extern void _ZN7S3619C2D0Ev();
extern void _ZN7S3619C23v46Ev();
extern void _ZN7S3619C23v47Ev();
extern void _ZN7S3619C23v48Ev();
extern void _ZN7S3619C23v49Ev();
extern void _ZN7S3619C23v50Ev();
extern void _ZN7S3619C23v51Ev();
extern void _ZN7S3619C23v52Ev();
extern void _ZN7S3619C23v53Ev();
extern void _ZN7S3619C23v54Ev();
extern void _ZN7S3619C23v55Ev();
extern void _ZN7S3619C23v56Ev();
extern void _ZN7S3619C23v57Ev();
extern void _ZN7S3619C23v58Ev();
extern void _ZN7S3619C23v59Ev();
extern void _ZN7S3619C23v60Ev();
extern void _ZN7S3619C23v61Ev();
extern void _ZN7S3619C23v62Ev();
extern void _ZN7S3619C23v63Ev();
extern void _ZN7S3619C23v64Ev();
extern void _ZN7S3619C23v65Ev();
extern void _ZN7S3619C23v66Ev();
extern void _ZN7S3619C23v67Ev();
extern void _ZN7S3619C23v68Ev();
extern void _ZN7S3619C23v69Ev();
extern void _ZN7S3619C23v70Ev();
extern void _ZN7S3619C23v71Ev();
extern void _ZN7S3619C23v72Ev();
extern void _ZN7S3619C23v73Ev();
extern void _ZN7S3619C23v74Ev();
extern void _ZN7S3619C23v75Ev();
extern void _ZN7S3619C23v76Ev();
extern void _ZN7S3619C23v77Ev();
extern void _ZN7S3619C23v78Ev();
extern void _ZN7S3619C23v79Ev();
extern void _ZN7S3619C23v80Ev();
extern void _ZN7S3619C23v81Ev();
extern void _ZN7S3619C23v82Ev();
extern void _ZN7S3619C23v83Ev();
extern void _ZN7S3619C23v84Ev();
extern void _ZN7S3619C23v85Ev();
extern void _ZN7S3619C23v86Ev();
extern void _ZN7S3619C23v87Ev();
extern void _ZN7S3619C23v88Ev();
extern void _ZN7S3619C23v89Ev();
extern void _ZN7S3619C23v90Ev();
extern void _ZN7S3619C23v91Ev();
extern void _ZN7S3619C23v92Ev();
extern void _ZN7S3619C23v93Ev();
extern void _ZN7S3619C23v94Ev();
extern void _ZN7S3619C23v95Ev();
extern void _ZN7S3619C23v96Ev();
extern void _ZN7S3619C23v97Ev();
extern void _ZN7S3619C23v98Ev();
extern void _ZN7S3619C23v99Ev();
extern void _ZN7S3619C24v100Ev();
extern void _ZN7S3619C24v101Ev();
extern void _ZN7S3619C24v102Ev();
extern void _ZN7S3619C24v103Ev();
extern void _ZN7S3619C24v104Ev();
extern void _ZN7S3619C24v105Ev();
extern void _ZN7S3619C24v106Ev();
extern void _ZN7S3619C24v107Ev();
extern void _ZN7S3619C24v108Ev();
extern void _ZN7S3619C24v109Ev();
extern void _ZN7S3619C24v110Ev();
extern void _ZN7S3619C24v111Ev();
extern void _ZN7S3619C24v112Ev();
extern void _ZN7S3619C24v113Ev();
extern void _ZN7S3619C24v114Ev();
extern void _ZN7S3619C24v115Ev();
extern void _ZN7S3619C24v116Ev();
extern void _ZN7S3619C24v117Ev();
extern void _ZN7S3619C24v118Ev();
extern void _ZN7S3619C24v119Ev();
extern void _ZN7S3619C24v120Ev();
extern void _ZN7S3619C24v121Ev();
extern void _ZN7S3619C24v122Ev();
extern void _ZN7S3619C24v123Ev();
extern void _ZN7S3619C24v124Ev();
extern void _ZN7S3619C24v125Ev();
extern void _ZN7S3619C24v126Ev();
extern void _ZN7S3619C24v127Ev();
extern void _ZN7S3619C24v128Ev();
extern void _ZN7S3619C24v129Ev();
extern void _ZN7S3619C24v130Ev();
extern void _ZN7S3619C24v131Ev();
extern void _ZN7S3619C24v132Ev();
extern void _ZN7S3619C24v133Ev();
extern void _ZN7S3619C24v134Ev();
extern void _ZN7S3619C24v135Ev();
extern void _ZN7S3619C24v136Ev();
extern void _ZN7S3619C24v137Ev();
extern void _ZN7S3619C24v138Ev();
extern void _ZN7S3619C24v139Ev();
extern void _ZN7S3619C24v140Ev();
extern void _ZN7S3619C24v141Ev();
extern void _ZN7S3619C24v142Ev();
extern void _ZN7S3619C24v143Ev();
static  VTBL_ENTRY vtc_S3619C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3619C2[0]),
  (VTBL_ENTRY)&_ZN7S3619C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3619C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v49Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v50Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v51Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v52Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v53Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v54Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v55Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v56Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v57Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v58Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v59Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v60Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v61Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v62Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v63Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v64Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v65Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v66Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v82Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v83Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v84Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v85Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v86Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v87Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v88Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v89Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v90Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v91Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v92Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v93Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v94Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v95Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v96Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v97Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v98Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v99Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v100Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v101Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v102Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v103Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v130Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v131Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v132Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v143Ev,
};
extern VTBL_ENTRY _ZTI7S3619C2[];
extern  VTBL_ENTRY _ZTV7S3619C2[];
Class_Descriptor cd_S3619C2 = {  "S3619C2", // class name
  bases_S3619C2, 1,
  &(vtc_S3619C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(7200,7008), // object size
  NSPAIRA(_ZTI7S3619C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3619C2),102, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C29  {
  long s3619c29f0[4];
  int s3619c29f1;
};
//SIG(-1 S3619C29) C1{ Fl[4] Fi}



static void Test_S3619C29()
{
  {
    init_simple_test("S3619C29");
    S3619C29 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S3619C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C29)");
    check_field_offset(lv, s3619c29f0, 0, "S3619C29.s3619c29f0");
    check_field_offset(lv, s3619c29f1, ABISELECT(32,16), "S3619C29.s3619c29f1");
  }
}
static Arrange_To_Call_Me vS3619C29(Test_S3619C29, "S3619C29", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C32  {
  int s3619c32f0;
  __tsi64 s3619c32f1;
  int s3619c32f2;
  char s3619c32f3;
  __tsi64 s3619c32f4;
  char s3619c32f5;
};
//SIG(1 S3619C32) C1{ Fi FL Fi Fc FL Fc}



static void Test_S3619C32()
{
  {
    init_simple_test("S3619C32");
    S3619C32 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S3619C32)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C32)");
    check_field_offset(lv, s3619c32f0, 0, "S3619C32.s3619c32f0");
    check_field_offset(lv, s3619c32f1, ABISELECT(8,4), "S3619C32.s3619c32f1");
    check_field_offset(lv, s3619c32f2, ABISELECT(16,12), "S3619C32.s3619c32f2");
    check_field_offset(lv, s3619c32f3, ABISELECT(20,16), "S3619C32.s3619c32f3");
    check_field_offset(lv, s3619c32f4, ABISELECT(24,20), "S3619C32.s3619c32f4");
    check_field_offset(lv, s3619c32f5, ABISELECT(32,28), "S3619C32.s3619c32f5");
  }
}
static Arrange_To_Call_Me vS3619C32(Test_S3619C32, "S3619C32", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C33  {
  char s3619c33f0;
  int s3619c33f1;
};
//SIG(1 S3619C33) C1{ Fc Fi}



static void Test_S3619C33()
{
  {
    init_simple_test("S3619C33");
    S3619C33 lv;
    check2(sizeof(lv), 8, "sizeof(S3619C33)");
    check2(__alignof__(lv), 4, "__alignof__(S3619C33)");
    check_field_offset(lv, s3619c33f0, 0, "S3619C33.s3619c33f0");
    check_field_offset(lv, s3619c33f1, 4, "S3619C33.s3619c33f1");
  }
}
static Arrange_To_Call_Me vS3619C33(Test_S3619C33, "S3619C33", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C34  {
  char s3619c34f0;
  __tsi64 s3619c34f1;
  int s3619c34f2;
  int s3619c34f3;
};
//SIG(1 S3619C34) C1{ Fc FL Fi[2]}



static void Test_S3619C34()
{
  {
    init_simple_test("S3619C34");
    S3619C34 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S3619C34)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C34)");
    check_field_offset(lv, s3619c34f0, 0, "S3619C34.s3619c34f0");
    check_field_offset(lv, s3619c34f1, ABISELECT(8,4), "S3619C34.s3619c34f1");
    check_field_offset(lv, s3619c34f2, ABISELECT(16,12), "S3619C34.s3619c34f2");
    check_field_offset(lv, s3619c34f3, ABISELECT(20,16), "S3619C34.s3619c34f3");
  }
}
static Arrange_To_Call_Me vS3619C34(Test_S3619C34, "S3619C34", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C35  {
  __tsi64 s3619c35f0;
};
//SIG(1 S3619C35) C1{ FL}



static void Test_S3619C35()
{
  {
    init_simple_test("S3619C35");
    S3619C35 lv;
    check2(sizeof(lv), 8, "sizeof(S3619C35)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C35)");
    check_field_offset(lv, s3619c35f0, 0, "S3619C35.s3619c35f0");
  }
}
static Arrange_To_Call_Me vS3619C35(Test_S3619C35, "S3619C35", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C36_nt  {
  int s3619c36f0;
  char s3619c36f1;
};
//SIG(-1 S3619C36_nt) C1{ Fi Fc}



//skip512 S3619C36_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C37  {
  __tsi64 s3619c37f0;
  char s3619c37f1;
  char s3619c37f2;
  char s3619c37f3;
};
//SIG(1 S3619C37) C1{ FL Fc[3]}



static void Test_S3619C37()
{
  {
    init_simple_test("S3619C37");
    S3619C37 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3619C37)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C37)");
    check_field_offset(lv, s3619c37f0, 0, "S3619C37.s3619c37f0");
    check_field_offset(lv, s3619c37f1, 8, "S3619C37.s3619c37f1");
    check_field_offset(lv, s3619c37f2, 9, "S3619C37.s3619c37f2");
    check_field_offset(lv, s3619c37f3, 10, "S3619C37.s3619c37f3");
  }
}
static Arrange_To_Call_Me vS3619C37(Test_S3619C37, "S3619C37", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C38  {
  __tsi64 s3619c38f0;
  char s3619c38f1;
  char s3619c38f2;
  char s3619c38f3;
  char s3619c38f4;
};
//SIG(1 S3619C38) C1{ FL Fc[4]}



static void Test_S3619C38()
{
  {
    init_simple_test("S3619C38");
    S3619C38 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3619C38)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C38)");
    check_field_offset(lv, s3619c38f0, 0, "S3619C38.s3619c38f0");
    check_field_offset(lv, s3619c38f1, 8, "S3619C38.s3619c38f1");
    check_field_offset(lv, s3619c38f2, 9, "S3619C38.s3619c38f2");
    check_field_offset(lv, s3619c38f3, 10, "S3619C38.s3619c38f3");
    check_field_offset(lv, s3619c38f4, 11, "S3619C38.s3619c38f4");
  }
}
static Arrange_To_Call_Me vS3619C38(Test_S3619C38, "S3619C38", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C39_nt  {
  int s3619c39f0;
};
//SIG(1 S3619C39_nt) C1{ Fi}



//skip512 S3619C39_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C41  {
  int s3619c41f0;
};
//SIG(1 S3619C41) C1{ Fi}



static void Test_S3619C41()
{
  {
    init_simple_test("S3619C41");
    S3619C41 lv;
    check2(sizeof(lv), 4, "sizeof(S3619C41)");
    check2(__alignof__(lv), 4, "__alignof__(S3619C41)");
    check_field_offset(lv, s3619c41f0, 0, "S3619C41.s3619c41f0");
  }
}
static Arrange_To_Call_Me vS3619C41(Test_S3619C41, "S3619C41", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C42  {
  int s3619c42f0;
  __tsi64 s3619c42f1;
  char s3619c42f2;
};
//SIG(1 S3619C42) C1{ Fi FL Fc}



static void Test_S3619C42()
{
  {
    init_simple_test("S3619C42");
    S3619C42 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3619C42)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C42)");
    check_field_offset(lv, s3619c42f0, 0, "S3619C42.s3619c42f0");
    check_field_offset(lv, s3619c42f1, ABISELECT(8,4), "S3619C42.s3619c42f1");
    check_field_offset(lv, s3619c42f2, ABISELECT(16,12), "S3619C42.s3619c42f2");
  }
}
static Arrange_To_Call_Me vS3619C42(Test_S3619C42, "S3619C42", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C43  {
  char s3619c43f0;
  char s3619c43f1;
};
//SIG(1 S3619C43) C1{ Fc[2]}



static void Test_S3619C43()
{
  {
    init_simple_test("S3619C43");
    S3619C43 lv;
    check2(sizeof(lv), 2, "sizeof(S3619C43)");
    check2(__alignof__(lv), 1, "__alignof__(S3619C43)");
    check_field_offset(lv, s3619c43f0, 0, "S3619C43.s3619c43f0");
    check_field_offset(lv, s3619c43f1, 1, "S3619C43.s3619c43f1");
  }
}
static Arrange_To_Call_Me vS3619C43(Test_S3619C43, "S3619C43", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S3619C31  {
  ::S3619C32 s3619c31f0;
  ::S3619C33 s3619c31f1;
  ::S3619C34 s3619c31f2;
  ::S3619C35 s3619c31f3;
  ::S3619C36_nt s3619c31f4;
  ::S3619C37 s3619c31f5;
  ::S3619C38 s3619c31f6;
  ::S3619C39_nt s3619c31f7;
  ::S3619C39_nt s3619c31f8;
  ::S3619C41 s3619c31f9;
  ::S3619C42 s3619c31f10;
  ::S3619C43 s3619c31f11;
  int s3619c31f12[32];
};
//SIG(1 S3619C31) U1{ FC2{ Fi FL Fi Fc FL Fc} FC3{ Fc Fi} FC4{ Fc FL Fi Fi} FC5{ FL} FC6{ Fi Fc} FC7{ FL Fc Fc Fc} FC8{ FL Fc Fc Fc Fc} FC9{ Fi} FC9 FC10{ Fi} FC11{ Fi FL Fc} FC12{ Fc Fc} Fi[32]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3619C30  {
  int s3619c30f0;
  ::S3619C31 s3619c30f1;
  void  mf3619c30(); // _ZN8S3619C309mf3619c30Ev
};
//SIG(-1 S3619C30) C1{ m Fi FU2{ FC3{ Fi FL Fi Fc FL Fc} FC4{ Fc Fi} FC5{ Fc FL Fi Fi} FC6{ FL} FC7{ Fi Fc} FC8{ FL Fc Fc Fc} FC9{ FL Fc Fc Fc Fc} FC10{ Fi} FC10 FC11{ Fi} FC12{ Fi FL Fc} FC13{ Fc Fc} Fi[32]}}


void  S3619C30 ::mf3619c30(){}

static void Test_S3619C30()
{
  {
    init_simple_test("S3619C30");
    S3619C30 lv;
    check2(sizeof(lv), ABISELECT(136,132), "sizeof(S3619C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C30)");
    check_field_offset(lv, s3619c30f0, 0, "S3619C30.s3619c30f0");
    check_field_offset(lv, s3619c30f1, ABISELECT(8,4), "S3619C30.s3619c30f1");
  }
}
static Arrange_To_Call_Me vS3619C30(Test_S3619C30, "S3619C30", ABISELECT(136,132));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3619C1  : S3619C2 {
  void *s3619c1f0[16];
  ::S3619C29 s3619c1f1;
  ::S3619C29 s3619c1f2;
  ::S3619C29 s3619c1f3;
  ::S3619C29 s3619c1f4;
  ::S3619C29 s3619c1f5;
  ::S3619C29 s3619c1f6;
  ::S3619C29 s3619c1f7;
  ::S3619C29 s3619c1f8;
  int s3619c1f9;
  void *s3619c1f10[3];
  long s3619c1f11;
  void *s3619c1f12;
  long s3619c1f13;
  void *s3619c1f14;
  long s3619c1f15;
  void *s3619c1f16;
  long s3619c1f17;
  void *s3619c1f18[4];
  int s3619c1f19[2];
  ::S3619C18_nt s3619c1f20;
  ::S3619C18_nt s3619c1f21;
  int s3619c1f22[2];
  long s3619c1f23;
  int s3619c1f24;
  char s3619c1f25[2];
  __tsi64 s3619c1f26[2];
  char s3619c1f27;
  ::S3619C30 s3619c1f28;
  __tsi64 s3619c1f29;
  char s3619c1f30;
  char s3619c1f31;
  __tsi64 s3619c1f32;
  char s3619c1f33;
  long s3619c1f34;
  virtual  ~S3619C1(); // _ZN7S3619C1D1Ev
  virtual void  v1(); // _ZN7S3619C12v1Ev
  virtual void  v2(); // _ZN7S3619C12v2Ev
  virtual void  v3(); // _ZN7S3619C12v3Ev
  virtual void  v4(); // _ZN7S3619C12v4Ev
  virtual void  v5(); // _ZN7S3619C12v5Ev
  virtual void  v6(); // _ZN7S3619C12v6Ev
  virtual void  v7(); // _ZN7S3619C12v7Ev
  virtual void  v8(); // _ZN7S3619C12v8Ev
  virtual void  v9(); // _ZN7S3619C12v9Ev
  virtual void  v10(); // _ZN7S3619C13v10Ev
  virtual void  v11(); // _ZN7S3619C13v11Ev
  virtual void  v12(); // _ZN7S3619C13v12Ev
  virtual void  v13(); // _ZN7S3619C13v13Ev
  virtual void  v14(); // _ZN7S3619C13v14Ev
  virtual void  v15(); // _ZN7S3619C13v15Ev
  virtual void  v16(); // _ZN7S3619C13v16Ev
  virtual void  v17(); // _ZN7S3619C13v17Ev
  virtual void  v18(); // _ZN7S3619C13v18Ev
  virtual void  v19(); // _ZN7S3619C13v19Ev
  virtual void  v20(); // _ZN7S3619C13v20Ev
  virtual void  v21(); // _ZN7S3619C13v21Ev
  virtual void  v22(); // _ZN7S3619C13v22Ev
  virtual void  v23(); // _ZN7S3619C13v23Ev
  virtual void  v24(); // _ZN7S3619C13v24Ev
  virtual void  v25(); // _ZN7S3619C13v25Ev
  virtual void  v26(); // _ZN7S3619C13v26Ev
  virtual void  v27(); // _ZN7S3619C13v27Ev
  virtual void  v28(); // _ZN7S3619C13v28Ev
  virtual void  v29(); // _ZN7S3619C13v29Ev
  virtual void  v30(); // _ZN7S3619C13v30Ev
  virtual void  v31(); // _ZN7S3619C13v31Ev
  virtual void  v32(); // _ZN7S3619C13v32Ev
  virtual void  v33(); // _ZN7S3619C13v33Ev
  virtual void  v34(); // _ZN7S3619C13v34Ev
  virtual void  v35(); // _ZN7S3619C13v35Ev
  virtual void  v36(); // _ZN7S3619C13v36Ev
  virtual void  v37(); // _ZN7S3619C13v37Ev
  virtual void  v38(); // _ZN7S3619C13v38Ev
  virtual void  v39(); // _ZN7S3619C13v39Ev
  virtual void  v40(); // _ZN7S3619C13v40Ev
  virtual void  v41(); // _ZN7S3619C13v41Ev
  virtual void  v42(); // _ZN7S3619C13v42Ev
  virtual void  v43(); // _ZN7S3619C13v43Ev
  virtual void  v44(); // _ZN7S3619C13v44Ev
  virtual void  v45(); // _ZN7S3619C13v45Ev
  S3619C1(); // tgen
};
//SIG(1 S3619C1) C1{ BC2{ BC3{ vd m FC4{ m Fp Fi FC5{ m} FC5} FC4 Fc} vd 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 Fi[3] FC6{ m Fc Fl[2] Fs[12] Fc[5]} FC7{ m Fc Fl[4] Fi[4]} Fi[3] Fp[2] Fc[3] FC8{ m FC9{ m FC10{ FL[4]}} Fc Fp Fi[3]} Fi FC11{ m Fp Fi[2] FC12{ m}} Fp Fi[2] FC9 FC9 Fi[3] Fc[6144] FC13{ m Fp Fi FC12} FC11 Fc Fi Fc Fi[5] FL[7] Fc FL[9] Fi[2] FC14{ m FC15{ m Fc[11]} Fi[7] FL} FC16{ m Fp FC9 FL[2] Fi FL Fi[2] Fc FC13 FC13 FL[5] Fc Fi FC17{ m Fp Fi[2] FC18{ m}} FC17 FC17 FC17 FC17 Fi[2]} Fp[4] FL[2] FC13 Fi Fc FL Fc FL} 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 Fp[16] FC19{ Fl[4] Fi} FC19 FC19 FC19 FC19 FC19 FC19 FC19 Fi Fp[3] Fl Fp Fl Fp Fl Fp Fl Fp[4] Fi[2] FC13 FC13 Fi[2] Fl Fi Fc[2] FL[2] Fc FC20{ m Fi FU21{ FC22{ Fi FL Fi Fc FL Fc} FC23{ Fc Fi} FC24{ Fc FL Fi Fi} FC25{ FL} FC26{ Fi Fc} FC27{ FL Fc Fc Fc} FC28{ FL Fc Fc Fc Fc} FC29{ Fi} FC29 FC30{ Fi} FC31{ Fi FL Fc} FC32{ Fc Fc} Fi[32]}} FL Fc Fc FL Fc Fl}


 S3619C1 ::~S3619C1(){ note_dtor("S3619C1", this);}
void  S3619C1 ::v1(){vfunc_called(this, "_ZN7S3619C12v1Ev");}
void  S3619C1 ::v2(){vfunc_called(this, "_ZN7S3619C12v2Ev");}
void  S3619C1 ::v3(){vfunc_called(this, "_ZN7S3619C12v3Ev");}
void  S3619C1 ::v4(){vfunc_called(this, "_ZN7S3619C12v4Ev");}
void  S3619C1 ::v5(){vfunc_called(this, "_ZN7S3619C12v5Ev");}
void  S3619C1 ::v6(){vfunc_called(this, "_ZN7S3619C12v6Ev");}
void  S3619C1 ::v7(){vfunc_called(this, "_ZN7S3619C12v7Ev");}
void  S3619C1 ::v8(){vfunc_called(this, "_ZN7S3619C12v8Ev");}
void  S3619C1 ::v9(){vfunc_called(this, "_ZN7S3619C12v9Ev");}
void  S3619C1 ::v10(){vfunc_called(this, "_ZN7S3619C13v10Ev");}
void  S3619C1 ::v11(){vfunc_called(this, "_ZN7S3619C13v11Ev");}
void  S3619C1 ::v12(){vfunc_called(this, "_ZN7S3619C13v12Ev");}
void  S3619C1 ::v13(){vfunc_called(this, "_ZN7S3619C13v13Ev");}
void  S3619C1 ::v14(){vfunc_called(this, "_ZN7S3619C13v14Ev");}
void  S3619C1 ::v15(){vfunc_called(this, "_ZN7S3619C13v15Ev");}
void  S3619C1 ::v16(){vfunc_called(this, "_ZN7S3619C13v16Ev");}
void  S3619C1 ::v17(){vfunc_called(this, "_ZN7S3619C13v17Ev");}
void  S3619C1 ::v18(){vfunc_called(this, "_ZN7S3619C13v18Ev");}
void  S3619C1 ::v19(){vfunc_called(this, "_ZN7S3619C13v19Ev");}
void  S3619C1 ::v20(){vfunc_called(this, "_ZN7S3619C13v20Ev");}
void  S3619C1 ::v21(){vfunc_called(this, "_ZN7S3619C13v21Ev");}
void  S3619C1 ::v22(){vfunc_called(this, "_ZN7S3619C13v22Ev");}
void  S3619C1 ::v23(){vfunc_called(this, "_ZN7S3619C13v23Ev");}
void  S3619C1 ::v24(){vfunc_called(this, "_ZN7S3619C13v24Ev");}
void  S3619C1 ::v25(){vfunc_called(this, "_ZN7S3619C13v25Ev");}
void  S3619C1 ::v26(){vfunc_called(this, "_ZN7S3619C13v26Ev");}
void  S3619C1 ::v27(){vfunc_called(this, "_ZN7S3619C13v27Ev");}
void  S3619C1 ::v28(){vfunc_called(this, "_ZN7S3619C13v28Ev");}
void  S3619C1 ::v29(){vfunc_called(this, "_ZN7S3619C13v29Ev");}
void  S3619C1 ::v30(){vfunc_called(this, "_ZN7S3619C13v30Ev");}
void  S3619C1 ::v31(){vfunc_called(this, "_ZN7S3619C13v31Ev");}
void  S3619C1 ::v32(){vfunc_called(this, "_ZN7S3619C13v32Ev");}
void  S3619C1 ::v33(){vfunc_called(this, "_ZN7S3619C13v33Ev");}
void  S3619C1 ::v34(){vfunc_called(this, "_ZN7S3619C13v34Ev");}
void  S3619C1 ::v35(){vfunc_called(this, "_ZN7S3619C13v35Ev");}
void  S3619C1 ::v36(){vfunc_called(this, "_ZN7S3619C13v36Ev");}
void  S3619C1 ::v37(){vfunc_called(this, "_ZN7S3619C13v37Ev");}
void  S3619C1 ::v38(){vfunc_called(this, "_ZN7S3619C13v38Ev");}
void  S3619C1 ::v39(){vfunc_called(this, "_ZN7S3619C13v39Ev");}
void  S3619C1 ::v40(){vfunc_called(this, "_ZN7S3619C13v40Ev");}
void  S3619C1 ::v41(){vfunc_called(this, "_ZN7S3619C13v41Ev");}
void  S3619C1 ::v42(){vfunc_called(this, "_ZN7S3619C13v42Ev");}
void  S3619C1 ::v43(){vfunc_called(this, "_ZN7S3619C13v43Ev");}
void  S3619C1 ::v44(){vfunc_called(this, "_ZN7S3619C13v44Ev");}
void  S3619C1 ::v45(){vfunc_called(this, "_ZN7S3619C13v45Ev");}
S3619C1 ::S3619C1(){ note_ctor("S3619C1", this);} // tgen

static void Test_S3619C1()
{
  extern Class_Descriptor cd_S3619C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1005,1882)];
    init_test(&cd_S3619C1, buf);
    S3619C1 *dp, &lv = *(dp=new (buf) S3619C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8032,7524), "sizeof(S3619C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3619C1)");
    check_base_class_offset(lv, (S3619C3_nt*)(S3619C2*), 0, "S3619C1");
    check_base_class_offset(lv, (S3619C2*), 0, "S3619C1");
    check_field_offset(lv, s3619c1f0, ABISELECT(7200,7008), "S3619C1.s3619c1f0");
    check_field_offset(lv, s3619c1f1, ABISELECT(7328,7072), "S3619C1.s3619c1f1");
    check_field_offset(lv, s3619c1f2, ABISELECT(7368,7092), "S3619C1.s3619c1f2");
    check_field_offset(lv, s3619c1f3, ABISELECT(7408,7112), "S3619C1.s3619c1f3");
    check_field_offset(lv, s3619c1f4, ABISELECT(7448,7132), "S3619C1.s3619c1f4");
    check_field_offset(lv, s3619c1f5, ABISELECT(7488,7152), "S3619C1.s3619c1f5");
    check_field_offset(lv, s3619c1f6, ABISELECT(7528,7172), "S3619C1.s3619c1f6");
    check_field_offset(lv, s3619c1f7, ABISELECT(7568,7192), "S3619C1.s3619c1f7");
    check_field_offset(lv, s3619c1f8, ABISELECT(7608,7212), "S3619C1.s3619c1f8");
    check_field_offset(lv, s3619c1f9, ABISELECT(7648,7232), "S3619C1.s3619c1f9");
    check_field_offset(lv, s3619c1f10, ABISELECT(7656,7236), "S3619C1.s3619c1f10");
    check_field_offset(lv, s3619c1f11, ABISELECT(7680,7248), "S3619C1.s3619c1f11");
    check_field_offset(lv, s3619c1f12, ABISELECT(7688,7252), "S3619C1.s3619c1f12");
    check_field_offset(lv, s3619c1f13, ABISELECT(7696,7256), "S3619C1.s3619c1f13");
    check_field_offset(lv, s3619c1f14, ABISELECT(7704,7260), "S3619C1.s3619c1f14");
    check_field_offset(lv, s3619c1f15, ABISELECT(7712,7264), "S3619C1.s3619c1f15");
    check_field_offset(lv, s3619c1f16, ABISELECT(7720,7268), "S3619C1.s3619c1f16");
    check_field_offset(lv, s3619c1f17, ABISELECT(7728,7272), "S3619C1.s3619c1f17");
    check_field_offset(lv, s3619c1f18, ABISELECT(7736,7276), "S3619C1.s3619c1f18");
    check_field_offset(lv, s3619c1f19, ABISELECT(7768,7292), "S3619C1.s3619c1f19");
    check_field_offset(lv, s3619c1f20, ABISELECT(7776,7300), "S3619C1.s3619c1f20");
    check_field_offset(lv, s3619c1f21, ABISELECT(7792,7312), "S3619C1.s3619c1f21");
    check_field_offset(lv, s3619c1f22, ABISELECT(7808,7324), "S3619C1.s3619c1f22");
    check_field_offset(lv, s3619c1f23, ABISELECT(7816,7332), "S3619C1.s3619c1f23");
    check_field_offset(lv, s3619c1f24, ABISELECT(7824,7336), "S3619C1.s3619c1f24");
    check_field_offset(lv, s3619c1f25, ABISELECT(7828,7340), "S3619C1.s3619c1f25");
    check_field_offset(lv, s3619c1f26, ABISELECT(7832,7344), "S3619C1.s3619c1f26");
    check_field_offset(lv, s3619c1f27, ABISELECT(7848,7360), "S3619C1.s3619c1f27");
    check_field_offset(lv, s3619c1f28, ABISELECT(7856,7364), "S3619C1.s3619c1f28");
    check_field_offset(lv, s3619c1f29, ABISELECT(7992,7496), "S3619C1.s3619c1f29");
    check_field_offset(lv, s3619c1f30, ABISELECT(8000,7504), "S3619C1.s3619c1f30");
    check_field_offset(lv, s3619c1f31, ABISELECT(8001,7505), "S3619C1.s3619c1f31");
    check_field_offset(lv, s3619c1f32, ABISELECT(8008,7508), "S3619C1.s3619c1f32");
    check_field_offset(lv, s3619c1f33, ABISELECT(8016,7516), "S3619C1.s3619c1f33");
    check_field_offset(lv, s3619c1f34, ABISELECT(8024,7520), "S3619C1.s3619c1f34");
    test_class_info(&lv, &cd_S3619C1);
    dp->~S3619C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3619C1(Test_S3619C1, "S3619C1", ABISELECT(8032,7524));

#else // __cplusplus

extern void _ZN7S3619C1C1Ev();
extern void _ZN7S3619C1D1Ev();
Name_Map name_map_S3619C1[] = {
  NSPAIR(_ZN7S3619C1C1Ev),
  NSPAIR(_ZN7S3619C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
extern Class_Descriptor cd_S3619C2;
extern VTBL_ENTRY _ZTI7S3619C2[];
extern  VTBL_ENTRY _ZTV7S3619C2[];
static Base_Class bases_S3619C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3619C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3619C1[];
extern void _ZN7S3619C1D1Ev();
extern void _ZN7S3619C1D0Ev();
extern void _ZN7S3619C23v46Ev();
extern void _ZN7S3619C23v47Ev();
extern void _ZN7S3619C23v48Ev();
extern void _ZN7S3619C23v49Ev();
extern void _ZN7S3619C23v50Ev();
extern void _ZN7S3619C23v51Ev();
extern void _ZN7S3619C23v52Ev();
extern void _ZN7S3619C23v53Ev();
extern void _ZN7S3619C23v54Ev();
extern void _ZN7S3619C23v55Ev();
extern void _ZN7S3619C23v56Ev();
extern void _ZN7S3619C23v57Ev();
extern void _ZN7S3619C23v58Ev();
extern void _ZN7S3619C23v59Ev();
extern void _ZN7S3619C23v60Ev();
extern void _ZN7S3619C23v61Ev();
extern void _ZN7S3619C23v62Ev();
extern void _ZN7S3619C23v63Ev();
extern void _ZN7S3619C23v64Ev();
extern void _ZN7S3619C23v65Ev();
extern void _ZN7S3619C23v66Ev();
extern void _ZN7S3619C23v67Ev();
extern void _ZN7S3619C23v68Ev();
extern void _ZN7S3619C23v69Ev();
extern void _ZN7S3619C23v70Ev();
extern void _ZN7S3619C23v71Ev();
extern void _ZN7S3619C23v72Ev();
extern void _ZN7S3619C23v73Ev();
extern void _ZN7S3619C23v74Ev();
extern void _ZN7S3619C23v75Ev();
extern void _ZN7S3619C23v76Ev();
extern void _ZN7S3619C23v77Ev();
extern void _ZN7S3619C23v78Ev();
extern void _ZN7S3619C23v79Ev();
extern void _ZN7S3619C23v80Ev();
extern void _ZN7S3619C23v81Ev();
extern void _ZN7S3619C23v82Ev();
extern void _ZN7S3619C23v83Ev();
extern void _ZN7S3619C23v84Ev();
extern void _ZN7S3619C23v85Ev();
extern void _ZN7S3619C23v86Ev();
extern void _ZN7S3619C23v87Ev();
extern void _ZN7S3619C23v88Ev();
extern void _ZN7S3619C23v89Ev();
extern void _ZN7S3619C23v90Ev();
extern void _ZN7S3619C23v91Ev();
extern void _ZN7S3619C23v92Ev();
extern void _ZN7S3619C23v93Ev();
extern void _ZN7S3619C23v94Ev();
extern void _ZN7S3619C23v95Ev();
extern void _ZN7S3619C23v96Ev();
extern void _ZN7S3619C23v97Ev();
extern void _ZN7S3619C23v98Ev();
extern void _ZN7S3619C23v99Ev();
extern void _ZN7S3619C24v100Ev();
extern void _ZN7S3619C24v101Ev();
extern void _ZN7S3619C24v102Ev();
extern void _ZN7S3619C24v103Ev();
extern void _ZN7S3619C24v104Ev();
extern void _ZN7S3619C24v105Ev();
extern void _ZN7S3619C24v106Ev();
extern void _ZN7S3619C24v107Ev();
extern void _ZN7S3619C24v108Ev();
extern void _ZN7S3619C24v109Ev();
extern void _ZN7S3619C24v110Ev();
extern void _ZN7S3619C24v111Ev();
extern void _ZN7S3619C24v112Ev();
extern void _ZN7S3619C24v113Ev();
extern void _ZN7S3619C24v114Ev();
extern void _ZN7S3619C24v115Ev();
extern void _ZN7S3619C24v116Ev();
extern void _ZN7S3619C24v117Ev();
extern void _ZN7S3619C24v118Ev();
extern void _ZN7S3619C24v119Ev();
extern void _ZN7S3619C24v120Ev();
extern void _ZN7S3619C24v121Ev();
extern void _ZN7S3619C24v122Ev();
extern void _ZN7S3619C24v123Ev();
extern void _ZN7S3619C24v124Ev();
extern void _ZN7S3619C24v125Ev();
extern void _ZN7S3619C24v126Ev();
extern void _ZN7S3619C24v127Ev();
extern void _ZN7S3619C24v128Ev();
extern void _ZN7S3619C24v129Ev();
extern void _ZN7S3619C24v130Ev();
extern void _ZN7S3619C24v131Ev();
extern void _ZN7S3619C24v132Ev();
extern void _ZN7S3619C24v133Ev();
extern void _ZN7S3619C24v134Ev();
extern void _ZN7S3619C24v135Ev();
extern void _ZN7S3619C24v136Ev();
extern void _ZN7S3619C24v137Ev();
extern void _ZN7S3619C24v138Ev();
extern void _ZN7S3619C24v139Ev();
extern void _ZN7S3619C24v140Ev();
extern void _ZN7S3619C24v141Ev();
extern void _ZN7S3619C24v142Ev();
extern void _ZN7S3619C24v143Ev();
extern void _ZN7S3619C12v1Ev();
extern void _ZN7S3619C12v2Ev();
extern void _ZN7S3619C12v3Ev();
extern void _ZN7S3619C12v4Ev();
extern void _ZN7S3619C12v5Ev();
extern void _ZN7S3619C12v6Ev();
extern void _ZN7S3619C12v7Ev();
extern void _ZN7S3619C12v8Ev();
extern void _ZN7S3619C12v9Ev();
extern void _ZN7S3619C13v10Ev();
extern void _ZN7S3619C13v11Ev();
extern void _ZN7S3619C13v12Ev();
extern void _ZN7S3619C13v13Ev();
extern void _ZN7S3619C13v14Ev();
extern void _ZN7S3619C13v15Ev();
extern void _ZN7S3619C13v16Ev();
extern void _ZN7S3619C13v17Ev();
extern void _ZN7S3619C13v18Ev();
extern void _ZN7S3619C13v19Ev();
extern void _ZN7S3619C13v20Ev();
extern void _ZN7S3619C13v21Ev();
extern void _ZN7S3619C13v22Ev();
extern void _ZN7S3619C13v23Ev();
extern void _ZN7S3619C13v24Ev();
extern void _ZN7S3619C13v25Ev();
extern void _ZN7S3619C13v26Ev();
extern void _ZN7S3619C13v27Ev();
extern void _ZN7S3619C13v28Ev();
extern void _ZN7S3619C13v29Ev();
extern void _ZN7S3619C13v30Ev();
extern void _ZN7S3619C13v31Ev();
extern void _ZN7S3619C13v32Ev();
extern void _ZN7S3619C13v33Ev();
extern void _ZN7S3619C13v34Ev();
extern void _ZN7S3619C13v35Ev();
extern void _ZN7S3619C13v36Ev();
extern void _ZN7S3619C13v37Ev();
extern void _ZN7S3619C13v38Ev();
extern void _ZN7S3619C13v39Ev();
extern void _ZN7S3619C13v40Ev();
extern void _ZN7S3619C13v41Ev();
extern void _ZN7S3619C13v42Ev();
extern void _ZN7S3619C13v43Ev();
extern void _ZN7S3619C13v44Ev();
extern void _ZN7S3619C13v45Ev();
static  VTBL_ENTRY vtc_S3619C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3619C1[0]),
  (VTBL_ENTRY)&_ZN7S3619C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3619C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v49Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v50Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v51Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v52Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v53Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v54Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v55Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v56Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v57Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v58Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v59Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v60Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v61Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v62Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v63Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v64Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v65Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v66Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v82Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v83Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v84Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v85Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v86Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v87Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v88Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v89Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v90Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v91Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v92Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v93Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v94Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v95Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v96Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v97Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v98Ev,
  (VTBL_ENTRY)&_ZN7S3619C23v99Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v100Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v101Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v102Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v103Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v130Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v131Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v132Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3619C24v143Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3619C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v16Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v17Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v18Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v19Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v20Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v21Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v22Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v23Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v24Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v25Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v26Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v27Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v28Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v29Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v30Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v31Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v32Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v33Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v34Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v35Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v36Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v37Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v38Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v39Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v40Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v41Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v42Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v43Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v44Ev,
  (VTBL_ENTRY)&_ZN7S3619C13v45Ev,
};
extern VTBL_ENTRY _ZTI7S3619C1[];
extern  VTBL_ENTRY _ZTV7S3619C1[];
Class_Descriptor cd_S3619C1 = {  "S3619C1", // class name
  bases_S3619C1, 2,
  &(vtc_S3619C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8032,7524), // object size
  NSPAIRA(_ZTI7S3619C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3619C1),147, //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  S3618C14_nt  {
  long s3618c14f0[4];
};
//SIG(-1 S3618C14_nt) C1{ Fl[4]}



//skip512 S3618C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3618C13_nt  {
  ::S3618C14_nt s3618c13f0;
  void  mf3618c13(); // _ZN11S3618C13_nt9mf3618c13Ev
};
//SIG(-1 S3618C13_nt) C1{ m FC2{ Fl[4]}}


void  S3618C13_nt ::mf3618c13(){}

//skip512 S3618C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3618C12  {
  ::S3618C13_nt s3618c12f0;
  char s3618c12f1;
  void *s3618c12f2;
  int s3618c12f3[3];
  void  mf3618c12(); // _ZN8S3618C129mf3618c12Ev
};
//SIG(-1 S3618C12) C1{ m FC2{ m FC3{ Fl[4]}} Fc Fp Fi[3]}


void  S3618C12 ::mf3618c12(){}

static void Test_S3618C12()
{
  {
    init_simple_test("S3618C12");
    S3618C12 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S3618C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3618C12)");
    check_field_offset(lv, s3618c12f0, 0, "S3618C12.s3618c12f0");
    check_field_offset(lv, s3618c12f1, ABISELECT(32,16), "S3618C12.s3618c12f1");
    check_field_offset(lv, s3618c12f2, ABISELECT(40,20), "S3618C12.s3618c12f2");
    check_field_offset(lv, s3618c12f3, ABISELECT(48,24), "S3618C12.s3618c12f3");
  }
}
static Arrange_To_Call_Me vS3618C12(Test_S3618C12, "S3618C12", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3618C25  {
  void *s3618c25f0;
  int s3618c25f1[2];
  ::S3619C26 s3618c25f2;
  void  mf3618c25(); // _ZN8S3618C259mf3618c25Ev
};
//SIG(-1 S3618C25) C1{ m Fp Fi[2] FC2{ m}}


void  S3618C25 ::mf3618c25(){}

static void Test_S3618C25()
{
  {
    init_simple_test("S3618C25");
    S3618C25 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3618C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3618C25)");
    check_field_offset(lv, s3618c25f0, 0, "S3618C25.s3618c25f0");
    check_field_offset(lv, s3618c25f1, ABISELECT(8,4), "S3618C25.s3618c25f1");
    check_field_offset(lv, s3618c25f2, ABISELECT(16,12), "S3618C25.s3618c25f2");
  }
}
static Arrange_To_Call_Me vS3618C25(Test_S3618C25, "S3618C25", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3618C24  {
  void *s3618c24f0;
  ::S3618C13_nt s3618c24f1;
  __tsi64 s3618c24f2[2];
  int s3618c24f3;
  __tsi64 s3618c24f4;
  int s3618c24f5[2];
  char s3618c24f6;
  ::S3619C18_nt s3618c24f7;
  ::S3619C18_nt s3618c24f8;
  __tsi64 s3618c24f9[5];
  char s3618c24f10;
  int s3618c24f11;
  ::S3618C25 s3618c24f12;
  ::S3618C25 s3618c24f13;
  ::S3618C25 s3618c24f14;
  ::S3618C25 s3618c24f15;
  ::S3618C25 s3618c24f16;
  int s3618c24f17[2];
  void  mf3618c24(); // _ZN8S3618C249mf3618c24Ev
};
//SIG(-1 S3618C24) C1{ m Fp FC2{ m FC3{ Fl[4]}} FL[2] Fi FL Fi[2] Fc FC4{ m Fp Fi FC5{ m}} FC4 FL[5] Fc Fi FC6{ m Fp Fi[2] FC7{ m}} FC6 FC6 FC6 FC6 Fi[2]}


void  S3618C24 ::mf3618c24(){}

static void Test_S3618C24()
{
  {
    init_simple_test("S3618C24");
    S3618C24 lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S3618C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3618C24)");
    check_field_offset(lv, s3618c24f0, 0, "S3618C24.s3618c24f0");
    check_field_offset(lv, s3618c24f1, ABISELECT(8,4), "S3618C24.s3618c24f1");
    check_field_offset(lv, s3618c24f2, ABISELECT(40,20), "S3618C24.s3618c24f2");
    check_field_offset(lv, s3618c24f3, ABISELECT(56,36), "S3618C24.s3618c24f3");
    check_field_offset(lv, s3618c24f4, ABISELECT(64,40), "S3618C24.s3618c24f4");
    check_field_offset(lv, s3618c24f5, ABISELECT(72,48), "S3618C24.s3618c24f5");
    check_field_offset(lv, s3618c24f6, ABISELECT(80,56), "S3618C24.s3618c24f6");
    check_field_offset(lv, s3618c24f7, ABISELECT(88,60), "S3618C24.s3618c24f7");
    check_field_offset(lv, s3618c24f8, ABISELECT(104,72), "S3618C24.s3618c24f8");
    check_field_offset(lv, s3618c24f9, ABISELECT(120,84), "S3618C24.s3618c24f9");
    check_field_offset(lv, s3618c24f10, ABISELECT(160,124), "S3618C24.s3618c24f10");
    check_field_offset(lv, s3618c24f11, ABISELECT(164,128), "S3618C24.s3618c24f11");
    check_field_offset(lv, s3618c24f12, ABISELECT(168,132), "S3618C24.s3618c24f12");
    check_field_offset(lv, s3618c24f13, ABISELECT(192,148), "S3618C24.s3618c24f13");
    check_field_offset(lv, s3618c24f14, ABISELECT(216,164), "S3618C24.s3618c24f14");
    check_field_offset(lv, s3618c24f15, ABISELECT(240,180), "S3618C24.s3618c24f15");
    check_field_offset(lv, s3618c24f16, ABISELECT(264,196), "S3618C24.s3618c24f16");
    check_field_offset(lv, s3618c24f17, ABISELECT(288,212), "S3618C24.s3618c24f17");
  }
}
static Arrange_To_Call_Me vS3618C24(Test_S3618C24, "S3618C24", ABISELECT(296,220));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3618C2  : S3619C3_nt {
  int s3618c2f0[3];
  ::S3619C10_nt s3618c2f1;
  ::S3619C11 s3618c2f2;
  int s3618c2f3[3];
  void *s3618c2f4[2];
  char s3618c2f5[3];
  ::S3618C12 s3618c2f6;
  int s3618c2f7;
  ::S3619C25 s3618c2f8;
  void *s3618c2f9;
  int s3618c2f10[2];
  ::S3618C13_nt s3618c2f11;
  ::S3618C13_nt s3618c2f12;
  int s3618c2f13[3];
  char s3618c2f14[6144];
  ::S3619C18_nt s3618c2f15;
  ::S3619C15_nt s3618c2f16;
  char s3618c2f17;
  int s3618c2f18;
  char s3618c2f19;
  int s3618c2f20[5];
  __tsi64 s3618c2f21[7];
  char s3618c2f22;
  __tsi64 s3618c2f23[9];
  int s3618c2f24[2];
  ::S3619C22 s3618c2f25;
  ::S3618C24 s3618c2f26;
  void *s3618c2f27[4];
  __tsi64 s3618c2f28[2];
  ::S3619C18_nt s3618c2f29;
  int s3618c2f30;
  char s3618c2f31;
  __tsi64 s3618c2f32;
  char s3618c2f33;
  __tsi64 s3618c2f34;
  virtual  ~S3618C2(); // _ZN7S3618C2D1Ev
  virtual void  v46(); // _ZN7S3618C23v46Ev
  virtual void  v47(); // _ZN7S3618C23v47Ev
  virtual void  v48(); // _ZN7S3618C23v48Ev
  virtual void  v49(); // _ZN7S3618C23v49Ev
  virtual void  v50(); // _ZN7S3618C23v50Ev
  virtual void  v51(); // _ZN7S3618C23v51Ev
  virtual void  v52(); // _ZN7S3618C23v52Ev
  virtual void  v53(); // _ZN7S3618C23v53Ev
  virtual void  v54(); // _ZN7S3618C23v54Ev
  virtual void  v55(); // _ZN7S3618C23v55Ev
  virtual void  v56(); // _ZN7S3618C23v56Ev
  virtual void  v57(); // _ZN7S3618C23v57Ev
  virtual void  v58(); // _ZN7S3618C23v58Ev
  virtual void  v59(); // _ZN7S3618C23v59Ev
  virtual void  v60(); // _ZN7S3618C23v60Ev
  virtual void  v61(); // _ZN7S3618C23v61Ev
  virtual void  v62(); // _ZN7S3618C23v62Ev
  virtual void  v63(); // _ZN7S3618C23v63Ev
  virtual void  v64(); // _ZN7S3618C23v64Ev
  virtual void  v65(); // _ZN7S3618C23v65Ev
  virtual void  v66(); // _ZN7S3618C23v66Ev
  virtual void  v67(); // _ZN7S3618C23v67Ev
  virtual void  v68(); // _ZN7S3618C23v68Ev
  virtual void  v69(); // _ZN7S3618C23v69Ev
  virtual void  v70(); // _ZN7S3618C23v70Ev
  virtual void  v71(); // _ZN7S3618C23v71Ev
  virtual void  v72(); // _ZN7S3618C23v72Ev
  virtual void  v73(); // _ZN7S3618C23v73Ev
  virtual void  v74(); // _ZN7S3618C23v74Ev
  virtual void  v75(); // _ZN7S3618C23v75Ev
  virtual void  v76(); // _ZN7S3618C23v76Ev
  virtual void  v77(); // _ZN7S3618C23v77Ev
  virtual void  v78(); // _ZN7S3618C23v78Ev
  virtual void  v79(); // _ZN7S3618C23v79Ev
  virtual void  v80(); // _ZN7S3618C23v80Ev
  virtual void  v81(); // _ZN7S3618C23v81Ev
  virtual void  v82(); // _ZN7S3618C23v82Ev
  virtual void  v83(); // _ZN7S3618C23v83Ev
  virtual void  v84(); // _ZN7S3618C23v84Ev
  virtual void  v85(); // _ZN7S3618C23v85Ev
  virtual void  v86(); // _ZN7S3618C23v86Ev
  virtual void  v87(); // _ZN7S3618C23v87Ev
  virtual void  v88(); // _ZN7S3618C23v88Ev
  virtual void  v89(); // _ZN7S3618C23v89Ev
  virtual void  v90(); // _ZN7S3618C23v90Ev
  virtual void  v91(); // _ZN7S3618C23v91Ev
  virtual void  v92(); // _ZN7S3618C23v92Ev
  virtual void  v93(); // _ZN7S3618C23v93Ev
  virtual void  v94(); // _ZN7S3618C23v94Ev
  virtual void  v95(); // _ZN7S3618C23v95Ev
  virtual void  v96(); // _ZN7S3618C23v96Ev
  virtual void  v97(); // _ZN7S3618C23v97Ev
  virtual void  v98(); // _ZN7S3618C23v98Ev
  virtual void  v99(); // _ZN7S3618C23v99Ev
  virtual void  v100(); // _ZN7S3618C24v100Ev
  virtual void  v101(); // _ZN7S3618C24v101Ev
  virtual void  v102(); // _ZN7S3618C24v102Ev
  virtual void  v103(); // _ZN7S3618C24v103Ev
  virtual void  v104(); // _ZN7S3618C24v104Ev
  virtual void  v105(); // _ZN7S3618C24v105Ev
  virtual void  v106(); // _ZN7S3618C24v106Ev
  virtual void  v107(); // _ZN7S3618C24v107Ev
  virtual void  v108(); // _ZN7S3618C24v108Ev
  virtual void  v109(); // _ZN7S3618C24v109Ev
  virtual void  v110(); // _ZN7S3618C24v110Ev
  virtual void  v111(); // _ZN7S3618C24v111Ev
  virtual void  v112(); // _ZN7S3618C24v112Ev
  virtual void  v113(); // _ZN7S3618C24v113Ev
  virtual void  v114(); // _ZN7S3618C24v114Ev
  virtual void  v115(); // _ZN7S3618C24v115Ev
  virtual void  v116(); // _ZN7S3618C24v116Ev
  virtual void  v117(); // _ZN7S3618C24v117Ev
  virtual void  v118(); // _ZN7S3618C24v118Ev
  virtual void  v119(); // _ZN7S3618C24v119Ev
  virtual void  v120(); // _ZN7S3618C24v120Ev
  virtual void  v121(); // _ZN7S3618C24v121Ev
  virtual void  v122(); // _ZN7S3618C24v122Ev
  virtual void  v123(); // _ZN7S3618C24v123Ev
  virtual void  v124(); // _ZN7S3618C24v124Ev
  virtual void  v125(); // _ZN7S3618C24v125Ev
  virtual void  v126(); // _ZN7S3618C24v126Ev
  virtual void  v127(); // _ZN7S3618C24v127Ev
  virtual void  v128(); // _ZN7S3618C24v128Ev
  virtual void  v129(); // _ZN7S3618C24v129Ev
  virtual void  v130(); // _ZN7S3618C24v130Ev
  virtual void  v131(); // _ZN7S3618C24v131Ev
  virtual void  v132(); // _ZN7S3618C24v132Ev
  virtual void  v133(); // _ZN7S3618C24v133Ev
  virtual void  v134(); // _ZN7S3618C24v134Ev
  virtual void  v135(); // _ZN7S3618C24v135Ev
  virtual void  v136(); // _ZN7S3618C24v136Ev
  virtual void  v137(); // _ZN7S3618C24v137Ev
  virtual void  v138(); // _ZN7S3618C24v138Ev
  virtual void  v139(); // _ZN7S3618C24v139Ev
  virtual void  v140(); // _ZN7S3618C24v140Ev
  virtual void  v141(); // _ZN7S3618C24v141Ev
  virtual void  v142(); // _ZN7S3618C24v142Ev
  virtual void  v143(); // _ZN7S3618C24v143Ev
  S3618C2(); // tgen
};
//SIG(-1 S3618C2) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC4} FC3 Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 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 Fi[3] FC5{ m Fc Fl[2] Fs[12] Fc[5]} FC6{ m Fc Fl[4] Fi[4]} Fi[3] Fp[2] Fc[3] FC7{ m FC8{ m FC9{ Fl[4]}} Fc Fp Fi[3]} Fi FC10{ m Fp Fi[2] FC11{ m}} Fp Fi[2] FC8 FC8 Fi[3] Fc[6144] FC12{ m Fp Fi FC13{ m}} FC14{ m Fp Fi[2] FC13} Fc Fi Fc Fi[5] FL[7] Fc FL[9] Fi[2] FC15{ m FC16{ m Fc[11]} Fi[7] FL} FC17{ m Fp FC8 FL[2] Fi FL Fi[2] Fc FC12 FC12 FL[5] Fc Fi FC18{ m Fp Fi[2] FC11} FC18 FC18 FC18 FC18 Fi[2]} Fp[4] FL[2] FC12 Fi Fc FL Fc FL}


 S3618C2 ::~S3618C2(){ note_dtor("S3618C2", this);}
void  S3618C2 ::v46(){vfunc_called(this, "_ZN7S3618C23v46Ev");}
void  S3618C2 ::v47(){vfunc_called(this, "_ZN7S3618C23v47Ev");}
void  S3618C2 ::v48(){vfunc_called(this, "_ZN7S3618C23v48Ev");}
void  S3618C2 ::v49(){vfunc_called(this, "_ZN7S3618C23v49Ev");}
void  S3618C2 ::v50(){vfunc_called(this, "_ZN7S3618C23v50Ev");}
void  S3618C2 ::v51(){vfunc_called(this, "_ZN7S3618C23v51Ev");}
void  S3618C2 ::v52(){vfunc_called(this, "_ZN7S3618C23v52Ev");}
void  S3618C2 ::v53(){vfunc_called(this, "_ZN7S3618C23v53Ev");}
void  S3618C2 ::v54(){vfunc_called(this, "_ZN7S3618C23v54Ev");}
void  S3618C2 ::v55(){vfunc_called(this, "_ZN7S3618C23v55Ev");}
void  S3618C2 ::v56(){vfunc_called(this, "_ZN7S3618C23v56Ev");}
void  S3618C2 ::v57(){vfunc_called(this, "_ZN7S3618C23v57Ev");}
void  S3618C2 ::v58(){vfunc_called(this, "_ZN7S3618C23v58Ev");}
void  S3618C2 ::v59(){vfunc_called(this, "_ZN7S3618C23v59Ev");}
void  S3618C2 ::v60(){vfunc_called(this, "_ZN7S3618C23v60Ev");}
void  S3618C2 ::v61(){vfunc_called(this, "_ZN7S3618C23v61Ev");}
void  S3618C2 ::v62(){vfunc_called(this, "_ZN7S3618C23v62Ev");}
void  S3618C2 ::v63(){vfunc_called(this, "_ZN7S3618C23v63Ev");}
void  S3618C2 ::v64(){vfunc_called(this, "_ZN7S3618C23v64Ev");}
void  S3618C2 ::v65(){vfunc_called(this, "_ZN7S3618C23v65Ev");}
void  S3618C2 ::v66(){vfunc_called(this, "_ZN7S3618C23v66Ev");}
void  S3618C2 ::v67(){vfunc_called(this, "_ZN7S3618C23v67Ev");}
void  S3618C2 ::v68(){vfunc_called(this, "_ZN7S3618C23v68Ev");}
void  S3618C2 ::v69(){vfunc_called(this, "_ZN7S3618C23v69Ev");}
void  S3618C2 ::v70(){vfunc_called(this, "_ZN7S3618C23v70Ev");}
void  S3618C2 ::v71(){vfunc_called(this, "_ZN7S3618C23v71Ev");}
void  S3618C2 ::v72(){vfunc_called(this, "_ZN7S3618C23v72Ev");}
void  S3618C2 ::v73(){vfunc_called(this, "_ZN7S3618C23v73Ev");}
void  S3618C2 ::v74(){vfunc_called(this, "_ZN7S3618C23v74Ev");}
void  S3618C2 ::v75(){vfunc_called(this, "_ZN7S3618C23v75Ev");}
void  S3618C2 ::v76(){vfunc_called(this, "_ZN7S3618C23v76Ev");}
void  S3618C2 ::v77(){vfunc_called(this, "_ZN7S3618C23v77Ev");}
void  S3618C2 ::v78(){vfunc_called(this, "_ZN7S3618C23v78Ev");}
void  S3618C2 ::v79(){vfunc_called(this, "_ZN7S3618C23v79Ev");}
void  S3618C2 ::v80(){vfunc_called(this, "_ZN7S3618C23v80Ev");}
void  S3618C2 ::v81(){vfunc_called(this, "_ZN7S3618C23v81Ev");}
void  S3618C2 ::v82(){vfunc_called(this, "_ZN7S3618C23v82Ev");}
void  S3618C2 ::v83(){vfunc_called(this, "_ZN7S3618C23v83Ev");}
void  S3618C2 ::v84(){vfunc_called(this, "_ZN7S3618C23v84Ev");}
void  S3618C2 ::v85(){vfunc_called(this, "_ZN7S3618C23v85Ev");}
void  S3618C2 ::v86(){vfunc_called(this, "_ZN7S3618C23v86Ev");}
void  S3618C2 ::v87(){vfunc_called(this, "_ZN7S3618C23v87Ev");}
void  S3618C2 ::v88(){vfunc_called(this, "_ZN7S3618C23v88Ev");}
void  S3618C2 ::v89(){vfunc_called(this, "_ZN7S3618C23v89Ev");}
void  S3618C2 ::v90(){vfunc_called(this, "_ZN7S3618C23v90Ev");}
void  S3618C2 ::v91(){vfunc_called(this, "_ZN7S3618C23v91Ev");}
void  S3618C2 ::v92(){vfunc_called(this, "_ZN7S3618C23v92Ev");}
void  S3618C2 ::v93(){vfunc_called(this, "_ZN7S3618C23v93Ev");}
void  S3618C2 ::v94(){vfunc_called(this, "_ZN7S3618C23v94Ev");}
void  S3618C2 ::v95(){vfunc_called(this, "_ZN7S3618C23v95Ev");}
void  S3618C2 ::v96(){vfunc_called(this, "_ZN7S3618C23v96Ev");}
void  S3618C2 ::v97(){vfunc_called(this, "_ZN7S3618C23v97Ev");}
void  S3618C2 ::v98(){vfunc_called(this, "_ZN7S3618C23v98Ev");}
void  S3618C2 ::v99(){vfunc_called(this, "_ZN7S3618C23v99Ev");}
void  S3618C2 ::v100(){vfunc_called(this, "_ZN7S3618C24v100Ev");}
void  S3618C2 ::v101(){vfunc_called(this, "_ZN7S3618C24v101Ev");}
void  S3618C2 ::v102(){vfunc_called(this, "_ZN7S3618C24v102Ev");}
void  S3618C2 ::v103(){vfunc_called(this, "_ZN7S3618C24v103Ev");}
void  S3618C2 ::v104(){vfunc_called(this, "_ZN7S3618C24v104Ev");}
void  S3618C2 ::v105(){vfunc_called(this, "_ZN7S3618C24v105Ev");}
void  S3618C2 ::v106(){vfunc_called(this, "_ZN7S3618C24v106Ev");}
void  S3618C2 ::v107(){vfunc_called(this, "_ZN7S3618C24v107Ev");}
void  S3618C2 ::v108(){vfunc_called(this, "_ZN7S3618C24v108Ev");}
void  S3618C2 ::v109(){vfunc_called(this, "_ZN7S3618C24v109Ev");}
void  S3618C2 ::v110(){vfunc_called(this, "_ZN7S3618C24v110Ev");}
void  S3618C2 ::v111(){vfunc_called(this, "_ZN7S3618C24v111Ev");}
void  S3618C2 ::v112(){vfunc_called(this, "_ZN7S3618C24v112Ev");}
void  S3618C2 ::v113(){vfunc_called(this, "_ZN7S3618C24v113Ev");}
void  S3618C2 ::v114(){vfunc_called(this, "_ZN7S3618C24v114Ev");}
void  S3618C2 ::v115(){vfunc_called(this, "_ZN7S3618C24v115Ev");}
void  S3618C2 ::v116(){vfunc_called(this, "_ZN7S3618C24v116Ev");}
void  S3618C2 ::v117(){vfunc_called(this, "_ZN7S3618C24v117Ev");}
void  S3618C2 ::v118(){vfunc_called(this, "_ZN7S3618C24v118Ev");}
void  S3618C2 ::v119(){vfunc_called(this, "_ZN7S3618C24v119Ev");}
void  S3618C2 ::v120(){vfunc_called(this, "_ZN7S3618C24v120Ev");}
void  S3618C2 ::v121(){vfunc_called(this, "_ZN7S3618C24v121Ev");}
void  S3618C2 ::v122(){vfunc_called(this, "_ZN7S3618C24v122Ev");}
void  S3618C2 ::v123(){vfunc_called(this, "_ZN7S3618C24v123Ev");}
void  S3618C2 ::v124(){vfunc_called(this, "_ZN7S3618C24v124Ev");}
void  S3618C2 ::v125(){vfunc_called(this, "_ZN7S3618C24v125Ev");}
void  S3618C2 ::v126(){vfunc_called(this, "_ZN7S3618C24v126Ev");}
void  S3618C2 ::v127(){vfunc_called(this, "_ZN7S3618C24v127Ev");}
void  S3618C2 ::v128(){vfunc_called(this, "_ZN7S3618C24v128Ev");}
void  S3618C2 ::v129(){vfunc_called(this, "_ZN7S3618C24v129Ev");}
void  S3618C2 ::v130(){vfunc_called(this, "_ZN7S3618C24v130Ev");}
void  S3618C2 ::v131(){vfunc_called(this, "_ZN7S3618C24v131Ev");}
void  S3618C2 ::v132(){vfunc_called(this, "_ZN7S3618C24v132Ev");}
void  S3618C2 ::v133(){vfunc_called(this, "_ZN7S3618C24v133Ev");}
void  S3618C2 ::v134(){vfunc_called(this, "_ZN7S3618C24v134Ev");}
void  S3618C2 ::v135(){vfunc_called(this, "_ZN7S3618C24v135Ev");}
void  S3618C2 ::v136(){vfunc_called(this, "_ZN7S3618C24v136Ev");}
void  S3618C2 ::v137(){vfunc_called(this, "_ZN7S3618C24v137Ev");}
void  S3618C2 ::v138(){vfunc_called(this, "_ZN7S3618C24v138Ev");}
void  S3618C2 ::v139(){vfunc_called(this, "_ZN7S3618C24v139Ev");}
void  S3618C2 ::v140(){vfunc_called(this, "_ZN7S3618C24v140Ev");}
void  S3618C2 ::v141(){vfunc_called(this, "_ZN7S3618C24v141Ev");}
void  S3618C2 ::v142(){vfunc_called(this, "_ZN7S3618C24v142Ev");}
void  S3618C2 ::v143(){vfunc_called(this, "_ZN7S3618C24v143Ev");}
S3618C2 ::S3618C2(){ note_ctor("S3618C2", this);} // tgen

static void Test_S3618C2()
{
  extern Class_Descriptor cd_S3618C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(901,1737)];
    init_test(&cd_S3618C2, buf);
    S3618C2 *dp, &lv = *(dp=new (buf) S3618C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7200,6944), "sizeof(S3618C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3618C2)");
    check_base_class_offset(lv, (S3619C3_nt*), 0, "S3618C2");
    check_field_offset(lv, s3618c2f0, ABISELECT(44,32), "S3618C2.s3618c2f0");
    check_field_offset(lv, s3618c2f1, ABISELECT(56,44), "S3618C2.s3618c2f1");
    check_field_offset(lv, s3618c2f2, ABISELECT(112,88), "S3618C2.s3618c2f2");
    check_field_offset(lv, s3618c2f3, ABISELECT(168,124), "S3618C2.s3618c2f3");
    check_field_offset(lv, s3618c2f4, ABISELECT(184,136), "S3618C2.s3618c2f4");
    check_field_offset(lv, s3618c2f5, ABISELECT(200,144), "S3618C2.s3618c2f5");
    check_field_offset(lv, s3618c2f6, ABISELECT(208,148), "S3618C2.s3618c2f6");
    check_field_offset(lv, s3618c2f7, ABISELECT(272,184), "S3618C2.s3618c2f7");
    check_field_offset(lv, s3618c2f8, ABISELECT(280,188), "S3618C2.s3618c2f8");
    check_field_offset(lv, s3618c2f9, ABISELECT(304,204), "S3618C2.s3618c2f9");
    check_field_offset(lv, s3618c2f10, ABISELECT(312,208), "S3618C2.s3618c2f10");
    check_field_offset(lv, s3618c2f11, ABISELECT(320,216), "S3618C2.s3618c2f11");
    check_field_offset(lv, s3618c2f12, ABISELECT(352,232), "S3618C2.s3618c2f12");
    check_field_offset(lv, s3618c2f13, ABISELECT(384,248), "S3618C2.s3618c2f13");
    check_field_offset(lv, s3618c2f14, ABISELECT(396,260), "S3618C2.s3618c2f14");
    check_field_offset(lv, s3618c2f15, ABISELECT(6544,6404), "S3618C2.s3618c2f15");
    check_field_offset(lv, s3618c2f16, ABISELECT(6560,6416), "S3618C2.s3618c2f16");
    check_field_offset(lv, s3618c2f17, ABISELECT(6584,6432), "S3618C2.s3618c2f17");
    check_field_offset(lv, s3618c2f18, ABISELECT(6588,6436), "S3618C2.s3618c2f18");
    check_field_offset(lv, s3618c2f19, ABISELECT(6592,6440), "S3618C2.s3618c2f19");
    check_field_offset(lv, s3618c2f20, ABISELECT(6596,6444), "S3618C2.s3618c2f20");
    check_field_offset(lv, s3618c2f21, ABISELECT(6616,6464), "S3618C2.s3618c2f21");
    check_field_offset(lv, s3618c2f22, ABISELECT(6672,6520), "S3618C2.s3618c2f22");
    check_field_offset(lv, s3618c2f23, ABISELECT(6680,6524), "S3618C2.s3618c2f23");
    check_field_offset(lv, s3618c2f24, ABISELECT(6752,6596), "S3618C2.s3618c2f24");
    check_field_offset(lv, s3618c2f25, ABISELECT(6760,6604), "S3618C2.s3618c2f25");
    check_field_offset(lv, s3618c2f26, ABISELECT(6808,6652), "S3618C2.s3618c2f26");
    check_field_offset(lv, s3618c2f27, ABISELECT(7104,6872), "S3618C2.s3618c2f27");
    check_field_offset(lv, s3618c2f28, ABISELECT(7136,6888), "S3618C2.s3618c2f28");
    check_field_offset(lv, s3618c2f29, ABISELECT(7152,6904), "S3618C2.s3618c2f29");
    check_field_offset(lv, s3618c2f30, ABISELECT(7168,6916), "S3618C2.s3618c2f30");
    check_field_offset(lv, s3618c2f31, ABISELECT(7172,6920), "S3618C2.s3618c2f31");
    check_field_offset(lv, s3618c2f32, ABISELECT(7176,6924), "S3618C2.s3618c2f32");
    check_field_offset(lv, s3618c2f33, ABISELECT(7184,6932), "S3618C2.s3618c2f33");
    check_field_offset(lv, s3618c2f34, ABISELECT(7192,6936), "S3618C2.s3618c2f34");
    test_class_info(&lv, &cd_S3618C2);
    dp->~S3618C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3618C2(Test_S3618C2, "S3618C2", ABISELECT(7200,6944));

#else // __cplusplus

extern void _ZN7S3618C2C1Ev();
extern void _ZN7S3618C2D1Ev();
Name_Map name_map_S3618C2[] = {
  NSPAIR(_ZN7S3618C2C1Ev),
  NSPAIR(_ZN7S3618C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
static Base_Class bases_S3618C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3618C2[];
extern void _ZN7S3618C2D1Ev();
extern void _ZN7S3618C2D0Ev();
extern void _ZN7S3618C23v46Ev();
extern void _ZN7S3618C23v47Ev();
extern void _ZN7S3618C23v48Ev();
extern void _ZN7S3618C23v49Ev();
extern void _ZN7S3618C23v50Ev();
extern void _ZN7S3618C23v51Ev();
extern void _ZN7S3618C23v52Ev();
extern void _ZN7S3618C23v53Ev();
extern void _ZN7S3618C23v54Ev();
extern void _ZN7S3618C23v55Ev();
extern void _ZN7S3618C23v56Ev();
extern void _ZN7S3618C23v57Ev();
extern void _ZN7S3618C23v58Ev();
extern void _ZN7S3618C23v59Ev();
extern void _ZN7S3618C23v60Ev();
extern void _ZN7S3618C23v61Ev();
extern void _ZN7S3618C23v62Ev();
extern void _ZN7S3618C23v63Ev();
extern void _ZN7S3618C23v64Ev();
extern void _ZN7S3618C23v65Ev();
extern void _ZN7S3618C23v66Ev();
extern void _ZN7S3618C23v67Ev();
extern void _ZN7S3618C23v68Ev();
extern void _ZN7S3618C23v69Ev();
extern void _ZN7S3618C23v70Ev();
extern void _ZN7S3618C23v71Ev();
extern void _ZN7S3618C23v72Ev();
extern void _ZN7S3618C23v73Ev();
extern void _ZN7S3618C23v74Ev();
extern void _ZN7S3618C23v75Ev();
extern void _ZN7S3618C23v76Ev();
extern void _ZN7S3618C23v77Ev();
extern void _ZN7S3618C23v78Ev();
extern void _ZN7S3618C23v79Ev();
extern void _ZN7S3618C23v80Ev();
extern void _ZN7S3618C23v81Ev();
extern void _ZN7S3618C23v82Ev();
extern void _ZN7S3618C23v83Ev();
extern void _ZN7S3618C23v84Ev();
extern void _ZN7S3618C23v85Ev();
extern void _ZN7S3618C23v86Ev();
extern void _ZN7S3618C23v87Ev();
extern void _ZN7S3618C23v88Ev();
extern void _ZN7S3618C23v89Ev();
extern void _ZN7S3618C23v90Ev();
extern void _ZN7S3618C23v91Ev();
extern void _ZN7S3618C23v92Ev();
extern void _ZN7S3618C23v93Ev();
extern void _ZN7S3618C23v94Ev();
extern void _ZN7S3618C23v95Ev();
extern void _ZN7S3618C23v96Ev();
extern void _ZN7S3618C23v97Ev();
extern void _ZN7S3618C23v98Ev();
extern void _ZN7S3618C23v99Ev();
extern void _ZN7S3618C24v100Ev();
extern void _ZN7S3618C24v101Ev();
extern void _ZN7S3618C24v102Ev();
extern void _ZN7S3618C24v103Ev();
extern void _ZN7S3618C24v104Ev();
extern void _ZN7S3618C24v105Ev();
extern void _ZN7S3618C24v106Ev();
extern void _ZN7S3618C24v107Ev();
extern void _ZN7S3618C24v108Ev();
extern void _ZN7S3618C24v109Ev();
extern void _ZN7S3618C24v110Ev();
extern void _ZN7S3618C24v111Ev();
extern void _ZN7S3618C24v112Ev();
extern void _ZN7S3618C24v113Ev();
extern void _ZN7S3618C24v114Ev();
extern void _ZN7S3618C24v115Ev();
extern void _ZN7S3618C24v116Ev();
extern void _ZN7S3618C24v117Ev();
extern void _ZN7S3618C24v118Ev();
extern void _ZN7S3618C24v119Ev();
extern void _ZN7S3618C24v120Ev();
extern void _ZN7S3618C24v121Ev();
extern void _ZN7S3618C24v122Ev();
extern void _ZN7S3618C24v123Ev();
extern void _ZN7S3618C24v124Ev();
extern void _ZN7S3618C24v125Ev();
extern void _ZN7S3618C24v126Ev();
extern void _ZN7S3618C24v127Ev();
extern void _ZN7S3618C24v128Ev();
extern void _ZN7S3618C24v129Ev();
extern void _ZN7S3618C24v130Ev();
extern void _ZN7S3618C24v131Ev();
extern void _ZN7S3618C24v132Ev();
extern void _ZN7S3618C24v133Ev();
extern void _ZN7S3618C24v134Ev();
extern void _ZN7S3618C24v135Ev();
extern void _ZN7S3618C24v136Ev();
extern void _ZN7S3618C24v137Ev();
extern void _ZN7S3618C24v138Ev();
extern void _ZN7S3618C24v139Ev();
extern void _ZN7S3618C24v140Ev();
extern void _ZN7S3618C24v141Ev();
extern void _ZN7S3618C24v142Ev();
extern void _ZN7S3618C24v143Ev();
static  VTBL_ENTRY vtc_S3618C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3618C2[0]),
  (VTBL_ENTRY)&_ZN7S3618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3618C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v49Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v50Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v51Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v52Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v53Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v54Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v55Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v56Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v57Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v58Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v59Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v60Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v61Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v62Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v63Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v64Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v65Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v66Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v82Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v83Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v84Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v85Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v86Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v87Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v88Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v89Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v90Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v91Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v92Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v93Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v94Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v95Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v96Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v97Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v98Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v99Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v100Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v101Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v102Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v103Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v130Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v131Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v132Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v143Ev,
};
extern VTBL_ENTRY _ZTI7S3618C2[];
extern  VTBL_ENTRY _ZTV7S3618C2[];
Class_Descriptor cd_S3618C2 = {  "S3618C2", // class name
  bases_S3618C2, 1,
  &(vtc_S3618C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(7200,6944), // object size
  NSPAIRA(_ZTI7S3618C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3618C2),102, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3618C1  : S3618C2 {
  void *s3618c1f0[16];
  ::S3619C29 s3618c1f1;
  ::S3619C29 s3618c1f2;
  ::S3619C29 s3618c1f3;
  ::S3619C29 s3618c1f4;
  ::S3619C29 s3618c1f5;
  ::S3619C29 s3618c1f6;
  ::S3619C29 s3618c1f7;
  ::S3619C29 s3618c1f8;
  int s3618c1f9;
  void *s3618c1f10[3];
  long s3618c1f11;
  void *s3618c1f12;
  long s3618c1f13;
  void *s3618c1f14;
  long s3618c1f15;
  void *s3618c1f16;
  long s3618c1f17;
  void *s3618c1f18[4];
  int s3618c1f19[2];
  ::S3619C18_nt s3618c1f20;
  ::S3619C18_nt s3618c1f21;
  int s3618c1f22[2];
  long s3618c1f23;
  int s3618c1f24;
  char s3618c1f25[2];
  __tsi64 s3618c1f26[2];
  char s3618c1f27;
  ::S3619C30 s3618c1f28;
  __tsi64 s3618c1f29;
  char s3618c1f30;
  char s3618c1f31;
  __tsi64 s3618c1f32;
  char s3618c1f33;
  long s3618c1f34;
  virtual  ~S3618C1(); // _ZN7S3618C1D1Ev
  virtual void  v1(); // _ZN7S3618C12v1Ev
  virtual void  v2(); // _ZN7S3618C12v2Ev
  virtual void  v3(); // _ZN7S3618C12v3Ev
  virtual void  v4(); // _ZN7S3618C12v4Ev
  virtual void  v5(); // _ZN7S3618C12v5Ev
  virtual void  v6(); // _ZN7S3618C12v6Ev
  virtual void  v7(); // _ZN7S3618C12v7Ev
  virtual void  v8(); // _ZN7S3618C12v8Ev
  virtual void  v9(); // _ZN7S3618C12v9Ev
  virtual void  v10(); // _ZN7S3618C13v10Ev
  virtual void  v11(); // _ZN7S3618C13v11Ev
  virtual void  v12(); // _ZN7S3618C13v12Ev
  virtual void  v13(); // _ZN7S3618C13v13Ev
  virtual void  v14(); // _ZN7S3618C13v14Ev
  virtual void  v15(); // _ZN7S3618C13v15Ev
  virtual void  v16(); // _ZN7S3618C13v16Ev
  virtual void  v17(); // _ZN7S3618C13v17Ev
  virtual void  v18(); // _ZN7S3618C13v18Ev
  virtual void  v19(); // _ZN7S3618C13v19Ev
  virtual void  v20(); // _ZN7S3618C13v20Ev
  virtual void  v21(); // _ZN7S3618C13v21Ev
  virtual void  v22(); // _ZN7S3618C13v22Ev
  virtual void  v23(); // _ZN7S3618C13v23Ev
  virtual void  v24(); // _ZN7S3618C13v24Ev
  virtual void  v25(); // _ZN7S3618C13v25Ev
  virtual void  v26(); // _ZN7S3618C13v26Ev
  virtual void  v27(); // _ZN7S3618C13v27Ev
  virtual void  v28(); // _ZN7S3618C13v28Ev
  virtual void  v29(); // _ZN7S3618C13v29Ev
  virtual void  v30(); // _ZN7S3618C13v30Ev
  virtual void  v31(); // _ZN7S3618C13v31Ev
  virtual void  v32(); // _ZN7S3618C13v32Ev
  virtual void  v33(); // _ZN7S3618C13v33Ev
  virtual void  v34(); // _ZN7S3618C13v34Ev
  virtual void  v35(); // _ZN7S3618C13v35Ev
  virtual void  v36(); // _ZN7S3618C13v36Ev
  virtual void  v37(); // _ZN7S3618C13v37Ev
  virtual void  v38(); // _ZN7S3618C13v38Ev
  virtual void  v39(); // _ZN7S3618C13v39Ev
  virtual void  v40(); // _ZN7S3618C13v40Ev
  virtual void  v41(); // _ZN7S3618C13v41Ev
  virtual void  v42(); // _ZN7S3618C13v42Ev
  virtual void  v43(); // _ZN7S3618C13v43Ev
  virtual void  v44(); // _ZN7S3618C13v44Ev
  virtual void  v45(); // _ZN7S3618C13v45Ev
  S3618C1(); // tgen
};
//SIG(1 S3618C1) C1{ BC2{ BC3{ vd m FC4{ m Fp Fi FC5{ m} FC5} FC4 Fc} vd 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 Fi[3] FC6{ m Fc Fl[2] Fs[12] Fc[5]} FC7{ m Fc Fl[4] Fi[4]} Fi[3] Fp[2] Fc[3] FC8{ m FC9{ m FC10{ Fl[4]}} Fc Fp Fi[3]} Fi FC11{ m Fp Fi[2] FC12{ m}} Fp Fi[2] FC9 FC9 Fi[3] Fc[6144] FC13{ m Fp Fi FC14{ m}} FC15{ m Fp Fi[2] FC14} Fc Fi Fc Fi[5] FL[7] Fc FL[9] Fi[2] FC16{ m FC17{ m Fc[11]} Fi[7] FL} FC18{ m Fp FC9 FL[2] Fi FL Fi[2] Fc FC13 FC13 FL[5] Fc Fi FC19{ m Fp Fi[2] FC12} FC19 FC19 FC19 FC19 Fi[2]} Fp[4] FL[2] FC13 Fi Fc FL Fc FL} 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 Fp[16] FC20{ Fl[4] Fi} FC20 FC20 FC20 FC20 FC20 FC20 FC20 Fi Fp[3] Fl Fp Fl Fp Fl Fp Fl Fp[4] Fi[2] FC13 FC13 Fi[2] Fl Fi Fc[2] FL[2] Fc FC21{ m Fi FU22{ FC23{ Fi FL Fi Fc FL Fc} FC24{ Fc Fi} FC25{ Fc FL Fi Fi} FC26{ FL} FC27{ Fi Fc} FC28{ FL Fc Fc Fc} FC29{ FL Fc Fc Fc Fc} FC30{ Fi} FC30 FC31{ Fi} FC32{ Fi FL Fc} FC33{ Fc Fc} Fi[32]}} FL Fc Fc FL Fc Fl}


 S3618C1 ::~S3618C1(){ note_dtor("S3618C1", this);}
void  S3618C1 ::v1(){vfunc_called(this, "_ZN7S3618C12v1Ev");}
void  S3618C1 ::v2(){vfunc_called(this, "_ZN7S3618C12v2Ev");}
void  S3618C1 ::v3(){vfunc_called(this, "_ZN7S3618C12v3Ev");}
void  S3618C1 ::v4(){vfunc_called(this, "_ZN7S3618C12v4Ev");}
void  S3618C1 ::v5(){vfunc_called(this, "_ZN7S3618C12v5Ev");}
void  S3618C1 ::v6(){vfunc_called(this, "_ZN7S3618C12v6Ev");}
void  S3618C1 ::v7(){vfunc_called(this, "_ZN7S3618C12v7Ev");}
void  S3618C1 ::v8(){vfunc_called(this, "_ZN7S3618C12v8Ev");}
void  S3618C1 ::v9(){vfunc_called(this, "_ZN7S3618C12v9Ev");}
void  S3618C1 ::v10(){vfunc_called(this, "_ZN7S3618C13v10Ev");}
void  S3618C1 ::v11(){vfunc_called(this, "_ZN7S3618C13v11Ev");}
void  S3618C1 ::v12(){vfunc_called(this, "_ZN7S3618C13v12Ev");}
void  S3618C1 ::v13(){vfunc_called(this, "_ZN7S3618C13v13Ev");}
void  S3618C1 ::v14(){vfunc_called(this, "_ZN7S3618C13v14Ev");}
void  S3618C1 ::v15(){vfunc_called(this, "_ZN7S3618C13v15Ev");}
void  S3618C1 ::v16(){vfunc_called(this, "_ZN7S3618C13v16Ev");}
void  S3618C1 ::v17(){vfunc_called(this, "_ZN7S3618C13v17Ev");}
void  S3618C1 ::v18(){vfunc_called(this, "_ZN7S3618C13v18Ev");}
void  S3618C1 ::v19(){vfunc_called(this, "_ZN7S3618C13v19Ev");}
void  S3618C1 ::v20(){vfunc_called(this, "_ZN7S3618C13v20Ev");}
void  S3618C1 ::v21(){vfunc_called(this, "_ZN7S3618C13v21Ev");}
void  S3618C1 ::v22(){vfunc_called(this, "_ZN7S3618C13v22Ev");}
void  S3618C1 ::v23(){vfunc_called(this, "_ZN7S3618C13v23Ev");}
void  S3618C1 ::v24(){vfunc_called(this, "_ZN7S3618C13v24Ev");}
void  S3618C1 ::v25(){vfunc_called(this, "_ZN7S3618C13v25Ev");}
void  S3618C1 ::v26(){vfunc_called(this, "_ZN7S3618C13v26Ev");}
void  S3618C1 ::v27(){vfunc_called(this, "_ZN7S3618C13v27Ev");}
void  S3618C1 ::v28(){vfunc_called(this, "_ZN7S3618C13v28Ev");}
void  S3618C1 ::v29(){vfunc_called(this, "_ZN7S3618C13v29Ev");}
void  S3618C1 ::v30(){vfunc_called(this, "_ZN7S3618C13v30Ev");}
void  S3618C1 ::v31(){vfunc_called(this, "_ZN7S3618C13v31Ev");}
void  S3618C1 ::v32(){vfunc_called(this, "_ZN7S3618C13v32Ev");}
void  S3618C1 ::v33(){vfunc_called(this, "_ZN7S3618C13v33Ev");}
void  S3618C1 ::v34(){vfunc_called(this, "_ZN7S3618C13v34Ev");}
void  S3618C1 ::v35(){vfunc_called(this, "_ZN7S3618C13v35Ev");}
void  S3618C1 ::v36(){vfunc_called(this, "_ZN7S3618C13v36Ev");}
void  S3618C1 ::v37(){vfunc_called(this, "_ZN7S3618C13v37Ev");}
void  S3618C1 ::v38(){vfunc_called(this, "_ZN7S3618C13v38Ev");}
void  S3618C1 ::v39(){vfunc_called(this, "_ZN7S3618C13v39Ev");}
void  S3618C1 ::v40(){vfunc_called(this, "_ZN7S3618C13v40Ev");}
void  S3618C1 ::v41(){vfunc_called(this, "_ZN7S3618C13v41Ev");}
void  S3618C1 ::v42(){vfunc_called(this, "_ZN7S3618C13v42Ev");}
void  S3618C1 ::v43(){vfunc_called(this, "_ZN7S3618C13v43Ev");}
void  S3618C1 ::v44(){vfunc_called(this, "_ZN7S3618C13v44Ev");}
void  S3618C1 ::v45(){vfunc_called(this, "_ZN7S3618C13v45Ev");}
S3618C1 ::S3618C1(){ note_ctor("S3618C1", this);} // tgen

static void Test_S3618C1()
{
  extern Class_Descriptor cd_S3618C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1005,1866)];
    init_test(&cd_S3618C1, buf);
    S3618C1 *dp, &lv = *(dp=new (buf) S3618C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8032,7460), "sizeof(S3618C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3618C1)");
    check_base_class_offset(lv, (S3619C3_nt*)(S3618C2*), 0, "S3618C1");
    check_base_class_offset(lv, (S3618C2*), 0, "S3618C1");
    check_field_offset(lv, s3618c1f0, ABISELECT(7200,6944), "S3618C1.s3618c1f0");
    check_field_offset(lv, s3618c1f1, ABISELECT(7328,7008), "S3618C1.s3618c1f1");
    check_field_offset(lv, s3618c1f2, ABISELECT(7368,7028), "S3618C1.s3618c1f2");
    check_field_offset(lv, s3618c1f3, ABISELECT(7408,7048), "S3618C1.s3618c1f3");
    check_field_offset(lv, s3618c1f4, ABISELECT(7448,7068), "S3618C1.s3618c1f4");
    check_field_offset(lv, s3618c1f5, ABISELECT(7488,7088), "S3618C1.s3618c1f5");
    check_field_offset(lv, s3618c1f6, ABISELECT(7528,7108), "S3618C1.s3618c1f6");
    check_field_offset(lv, s3618c1f7, ABISELECT(7568,7128), "S3618C1.s3618c1f7");
    check_field_offset(lv, s3618c1f8, ABISELECT(7608,7148), "S3618C1.s3618c1f8");
    check_field_offset(lv, s3618c1f9, ABISELECT(7648,7168), "S3618C1.s3618c1f9");
    check_field_offset(lv, s3618c1f10, ABISELECT(7656,7172), "S3618C1.s3618c1f10");
    check_field_offset(lv, s3618c1f11, ABISELECT(7680,7184), "S3618C1.s3618c1f11");
    check_field_offset(lv, s3618c1f12, ABISELECT(7688,7188), "S3618C1.s3618c1f12");
    check_field_offset(lv, s3618c1f13, ABISELECT(7696,7192), "S3618C1.s3618c1f13");
    check_field_offset(lv, s3618c1f14, ABISELECT(7704,7196), "S3618C1.s3618c1f14");
    check_field_offset(lv, s3618c1f15, ABISELECT(7712,7200), "S3618C1.s3618c1f15");
    check_field_offset(lv, s3618c1f16, ABISELECT(7720,7204), "S3618C1.s3618c1f16");
    check_field_offset(lv, s3618c1f17, ABISELECT(7728,7208), "S3618C1.s3618c1f17");
    check_field_offset(lv, s3618c1f18, ABISELECT(7736,7212), "S3618C1.s3618c1f18");
    check_field_offset(lv, s3618c1f19, ABISELECT(7768,7228), "S3618C1.s3618c1f19");
    check_field_offset(lv, s3618c1f20, ABISELECT(7776,7236), "S3618C1.s3618c1f20");
    check_field_offset(lv, s3618c1f21, ABISELECT(7792,7248), "S3618C1.s3618c1f21");
    check_field_offset(lv, s3618c1f22, ABISELECT(7808,7260), "S3618C1.s3618c1f22");
    check_field_offset(lv, s3618c1f23, ABISELECT(7816,7268), "S3618C1.s3618c1f23");
    check_field_offset(lv, s3618c1f24, ABISELECT(7824,7272), "S3618C1.s3618c1f24");
    check_field_offset(lv, s3618c1f25, ABISELECT(7828,7276), "S3618C1.s3618c1f25");
    check_field_offset(lv, s3618c1f26, ABISELECT(7832,7280), "S3618C1.s3618c1f26");
    check_field_offset(lv, s3618c1f27, ABISELECT(7848,7296), "S3618C1.s3618c1f27");
    check_field_offset(lv, s3618c1f28, ABISELECT(7856,7300), "S3618C1.s3618c1f28");
    check_field_offset(lv, s3618c1f29, ABISELECT(7992,7432), "S3618C1.s3618c1f29");
    check_field_offset(lv, s3618c1f30, ABISELECT(8000,7440), "S3618C1.s3618c1f30");
    check_field_offset(lv, s3618c1f31, ABISELECT(8001,7441), "S3618C1.s3618c1f31");
    check_field_offset(lv, s3618c1f32, ABISELECT(8008,7444), "S3618C1.s3618c1f32");
    check_field_offset(lv, s3618c1f33, ABISELECT(8016,7452), "S3618C1.s3618c1f33");
    check_field_offset(lv, s3618c1f34, ABISELECT(8024,7456), "S3618C1.s3618c1f34");
    test_class_info(&lv, &cd_S3618C1);
    dp->~S3618C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3618C1(Test_S3618C1, "S3618C1", ABISELECT(8032,7460));

#else // __cplusplus

extern void _ZN7S3618C1C1Ev();
extern void _ZN7S3618C1D1Ev();
Name_Map name_map_S3618C1[] = {
  NSPAIR(_ZN7S3618C1C1Ev),
  NSPAIR(_ZN7S3618C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
extern Class_Descriptor cd_S3618C2;
extern VTBL_ENTRY _ZTI7S3618C2[];
extern  VTBL_ENTRY _ZTV7S3618C2[];
static Base_Class bases_S3618C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3618C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3618C1[];
extern void _ZN7S3618C1D1Ev();
extern void _ZN7S3618C1D0Ev();
extern void _ZN7S3618C23v46Ev();
extern void _ZN7S3618C23v47Ev();
extern void _ZN7S3618C23v48Ev();
extern void _ZN7S3618C23v49Ev();
extern void _ZN7S3618C23v50Ev();
extern void _ZN7S3618C23v51Ev();
extern void _ZN7S3618C23v52Ev();
extern void _ZN7S3618C23v53Ev();
extern void _ZN7S3618C23v54Ev();
extern void _ZN7S3618C23v55Ev();
extern void _ZN7S3618C23v56Ev();
extern void _ZN7S3618C23v57Ev();
extern void _ZN7S3618C23v58Ev();
extern void _ZN7S3618C23v59Ev();
extern void _ZN7S3618C23v60Ev();
extern void _ZN7S3618C23v61Ev();
extern void _ZN7S3618C23v62Ev();
extern void _ZN7S3618C23v63Ev();
extern void _ZN7S3618C23v64Ev();
extern void _ZN7S3618C23v65Ev();
extern void _ZN7S3618C23v66Ev();
extern void _ZN7S3618C23v67Ev();
extern void _ZN7S3618C23v68Ev();
extern void _ZN7S3618C23v69Ev();
extern void _ZN7S3618C23v70Ev();
extern void _ZN7S3618C23v71Ev();
extern void _ZN7S3618C23v72Ev();
extern void _ZN7S3618C23v73Ev();
extern void _ZN7S3618C23v74Ev();
extern void _ZN7S3618C23v75Ev();
extern void _ZN7S3618C23v76Ev();
extern void _ZN7S3618C23v77Ev();
extern void _ZN7S3618C23v78Ev();
extern void _ZN7S3618C23v79Ev();
extern void _ZN7S3618C23v80Ev();
extern void _ZN7S3618C23v81Ev();
extern void _ZN7S3618C23v82Ev();
extern void _ZN7S3618C23v83Ev();
extern void _ZN7S3618C23v84Ev();
extern void _ZN7S3618C23v85Ev();
extern void _ZN7S3618C23v86Ev();
extern void _ZN7S3618C23v87Ev();
extern void _ZN7S3618C23v88Ev();
extern void _ZN7S3618C23v89Ev();
extern void _ZN7S3618C23v90Ev();
extern void _ZN7S3618C23v91Ev();
extern void _ZN7S3618C23v92Ev();
extern void _ZN7S3618C23v93Ev();
extern void _ZN7S3618C23v94Ev();
extern void _ZN7S3618C23v95Ev();
extern void _ZN7S3618C23v96Ev();
extern void _ZN7S3618C23v97Ev();
extern void _ZN7S3618C23v98Ev();
extern void _ZN7S3618C23v99Ev();
extern void _ZN7S3618C24v100Ev();
extern void _ZN7S3618C24v101Ev();
extern void _ZN7S3618C24v102Ev();
extern void _ZN7S3618C24v103Ev();
extern void _ZN7S3618C24v104Ev();
extern void _ZN7S3618C24v105Ev();
extern void _ZN7S3618C24v106Ev();
extern void _ZN7S3618C24v107Ev();
extern void _ZN7S3618C24v108Ev();
extern void _ZN7S3618C24v109Ev();
extern void _ZN7S3618C24v110Ev();
extern void _ZN7S3618C24v111Ev();
extern void _ZN7S3618C24v112Ev();
extern void _ZN7S3618C24v113Ev();
extern void _ZN7S3618C24v114Ev();
extern void _ZN7S3618C24v115Ev();
extern void _ZN7S3618C24v116Ev();
extern void _ZN7S3618C24v117Ev();
extern void _ZN7S3618C24v118Ev();
extern void _ZN7S3618C24v119Ev();
extern void _ZN7S3618C24v120Ev();
extern void _ZN7S3618C24v121Ev();
extern void _ZN7S3618C24v122Ev();
extern void _ZN7S3618C24v123Ev();
extern void _ZN7S3618C24v124Ev();
extern void _ZN7S3618C24v125Ev();
extern void _ZN7S3618C24v126Ev();
extern void _ZN7S3618C24v127Ev();
extern void _ZN7S3618C24v128Ev();
extern void _ZN7S3618C24v129Ev();
extern void _ZN7S3618C24v130Ev();
extern void _ZN7S3618C24v131Ev();
extern void _ZN7S3618C24v132Ev();
extern void _ZN7S3618C24v133Ev();
extern void _ZN7S3618C24v134Ev();
extern void _ZN7S3618C24v135Ev();
extern void _ZN7S3618C24v136Ev();
extern void _ZN7S3618C24v137Ev();
extern void _ZN7S3618C24v138Ev();
extern void _ZN7S3618C24v139Ev();
extern void _ZN7S3618C24v140Ev();
extern void _ZN7S3618C24v141Ev();
extern void _ZN7S3618C24v142Ev();
extern void _ZN7S3618C24v143Ev();
extern void _ZN7S3618C12v1Ev();
extern void _ZN7S3618C12v2Ev();
extern void _ZN7S3618C12v3Ev();
extern void _ZN7S3618C12v4Ev();
extern void _ZN7S3618C12v5Ev();
extern void _ZN7S3618C12v6Ev();
extern void _ZN7S3618C12v7Ev();
extern void _ZN7S3618C12v8Ev();
extern void _ZN7S3618C12v9Ev();
extern void _ZN7S3618C13v10Ev();
extern void _ZN7S3618C13v11Ev();
extern void _ZN7S3618C13v12Ev();
extern void _ZN7S3618C13v13Ev();
extern void _ZN7S3618C13v14Ev();
extern void _ZN7S3618C13v15Ev();
extern void _ZN7S3618C13v16Ev();
extern void _ZN7S3618C13v17Ev();
extern void _ZN7S3618C13v18Ev();
extern void _ZN7S3618C13v19Ev();
extern void _ZN7S3618C13v20Ev();
extern void _ZN7S3618C13v21Ev();
extern void _ZN7S3618C13v22Ev();
extern void _ZN7S3618C13v23Ev();
extern void _ZN7S3618C13v24Ev();
extern void _ZN7S3618C13v25Ev();
extern void _ZN7S3618C13v26Ev();
extern void _ZN7S3618C13v27Ev();
extern void _ZN7S3618C13v28Ev();
extern void _ZN7S3618C13v29Ev();
extern void _ZN7S3618C13v30Ev();
extern void _ZN7S3618C13v31Ev();
extern void _ZN7S3618C13v32Ev();
extern void _ZN7S3618C13v33Ev();
extern void _ZN7S3618C13v34Ev();
extern void _ZN7S3618C13v35Ev();
extern void _ZN7S3618C13v36Ev();
extern void _ZN7S3618C13v37Ev();
extern void _ZN7S3618C13v38Ev();
extern void _ZN7S3618C13v39Ev();
extern void _ZN7S3618C13v40Ev();
extern void _ZN7S3618C13v41Ev();
extern void _ZN7S3618C13v42Ev();
extern void _ZN7S3618C13v43Ev();
extern void _ZN7S3618C13v44Ev();
extern void _ZN7S3618C13v45Ev();
static  VTBL_ENTRY vtc_S3618C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3618C1[0]),
  (VTBL_ENTRY)&_ZN7S3618C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3618C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v49Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v50Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v51Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v52Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v53Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v54Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v55Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v56Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v57Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v58Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v59Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v60Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v61Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v62Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v63Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v64Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v65Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v66Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v82Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v83Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v84Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v85Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v86Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v87Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v88Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v89Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v90Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v91Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v92Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v93Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v94Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v95Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v96Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v97Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v98Ev,
  (VTBL_ENTRY)&_ZN7S3618C23v99Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v100Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v101Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v102Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v103Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v130Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v131Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v132Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3618C24v143Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3618C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v16Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v17Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v18Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v19Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v20Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v21Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v22Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v23Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v24Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v25Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v26Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v27Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v28Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v29Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v30Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v31Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v32Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v33Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v34Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v35Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v36Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v37Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v38Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v39Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v40Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v41Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v42Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v43Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v44Ev,
  (VTBL_ENTRY)&_ZN7S3618C13v45Ev,
};
extern VTBL_ENTRY _ZTI7S3618C1[];
extern  VTBL_ENTRY _ZTV7S3618C1[];
Class_Descriptor cd_S3618C1 = {  "S3618C1", // class name
  bases_S3618C1, 2,
  &(vtc_S3618C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8032,7460), // object size
  NSPAIRA(_ZTI7S3618C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3618C1),147, //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  S3620C13_nt  {
  __tsi64 s3620c13f0[4];
  void  mf3620c13(); // _ZN11S3620C13_nt9mf3620c13Ev
};
//SIG(-1 S3620C13_nt) C1{ m FL[4]}


void  S3620C13_nt ::mf3620c13(){}

//skip512 S3620C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3620C12  {
  ::S3620C13_nt s3620c12f0;
  char s3620c12f1;
  void *s3620c12f2;
  int s3620c12f3[3];
  void  mf3620c12(); // _ZN8S3620C129mf3620c12Ev
};
//SIG(-1 S3620C12) C1{ m FC2{ m FL[4]} Fc Fp Fi[3]}


void  S3620C12 ::mf3620c12(){}

static void Test_S3620C12()
{
  {
    init_simple_test("S3620C12");
    S3620C12 lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S3620C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3620C12)");
    check_field_offset(lv, s3620c12f0, 0, "S3620C12.s3620c12f0");
    check_field_offset(lv, s3620c12f1, 32, "S3620C12.s3620c12f1");
    check_field_offset(lv, s3620c12f2, ABISELECT(40,36), "S3620C12.s3620c12f2");
    check_field_offset(lv, s3620c12f3, ABISELECT(48,40), "S3620C12.s3620c12f3");
  }
}
static Arrange_To_Call_Me vS3620C12(Test_S3620C12, "S3620C12", ABISELECT(64,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3620C26_nt  {
  void *s3620c26f0;
  int s3620c26f1[2];
  ::S3619C26 s3620c26f2;
  void  mf3620c26(); // _ZN11S3620C26_nt9mf3620c26Ev
};
//SIG(-1 S3620C26_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S3620C26_nt ::mf3620c26(){}

//skip512 S3620C26_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3620C23  {
  void *s3620c23f0;
  ::S3620C13_nt s3620c23f1;
  __tsi64 s3620c23f2[2];
  int s3620c23f3;
  __tsi64 s3620c23f4;
  int s3620c23f5[2];
  char s3620c23f6;
  ::S3619C18_nt s3620c23f7;
  ::S3619C18_nt s3620c23f8;
  __tsi64 s3620c23f9[5];
  char s3620c23f10;
  int s3620c23f11;
  ::S3618C25 s3620c23f12;
  ::S3618C25 s3620c23f13;
  ::S3618C25 s3620c23f14;
  ::S3618C25 s3620c23f15;
  ::S3620C26_nt s3620c23f16;
  int s3620c23f17[2];
  void  mf3620c23(); // _ZN8S3620C239mf3620c23Ev
};
//SIG(-1 S3620C23) C1{ m Fp FC2{ m FL[4]} FL[2] Fi FL Fi[2] Fc FC3{ m Fp Fi FC4{ m}} FC3 FL[5] Fc Fi FC5{ m Fp Fi[2] FC6{ m}} FC5 FC5 FC5 FC7{ m Fp Fi[2] FC6} Fi[2]}


void  S3620C23 ::mf3620c23(){}

static void Test_S3620C23()
{
  {
    init_simple_test("S3620C23");
    S3620C23 lv;
    check2(sizeof(lv), ABISELECT(296,236), "sizeof(S3620C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3620C23)");
    check_field_offset(lv, s3620c23f0, 0, "S3620C23.s3620c23f0");
    check_field_offset(lv, s3620c23f1, ABISELECT(8,4), "S3620C23.s3620c23f1");
    check_field_offset(lv, s3620c23f2, ABISELECT(40,36), "S3620C23.s3620c23f2");
    check_field_offset(lv, s3620c23f3, ABISELECT(56,52), "S3620C23.s3620c23f3");
    check_field_offset(lv, s3620c23f4, ABISELECT(64,56), "S3620C23.s3620c23f4");
    check_field_offset(lv, s3620c23f5, ABISELECT(72,64), "S3620C23.s3620c23f5");
    check_field_offset(lv, s3620c23f6, ABISELECT(80,72), "S3620C23.s3620c23f6");
    check_field_offset(lv, s3620c23f7, ABISELECT(88,76), "S3620C23.s3620c23f7");
    check_field_offset(lv, s3620c23f8, ABISELECT(104,88), "S3620C23.s3620c23f8");
    check_field_offset(lv, s3620c23f9, ABISELECT(120,100), "S3620C23.s3620c23f9");
    check_field_offset(lv, s3620c23f10, ABISELECT(160,140), "S3620C23.s3620c23f10");
    check_field_offset(lv, s3620c23f11, ABISELECT(164,144), "S3620C23.s3620c23f11");
    check_field_offset(lv, s3620c23f12, ABISELECT(168,148), "S3620C23.s3620c23f12");
    check_field_offset(lv, s3620c23f13, ABISELECT(192,164), "S3620C23.s3620c23f13");
    check_field_offset(lv, s3620c23f14, ABISELECT(216,180), "S3620C23.s3620c23f14");
    check_field_offset(lv, s3620c23f15, ABISELECT(240,196), "S3620C23.s3620c23f15");
    check_field_offset(lv, s3620c23f16, ABISELECT(264,212), "S3620C23.s3620c23f16");
    check_field_offset(lv, s3620c23f17, ABISELECT(288,228), "S3620C23.s3620c23f17");
  }
}
static Arrange_To_Call_Me vS3620C23(Test_S3620C23, "S3620C23", ABISELECT(296,236));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3620C2  : S3619C3_nt {
  int s3620c2f0[3];
  ::S3619C10_nt s3620c2f1;
  ::S3619C11 s3620c2f2;
  int s3620c2f3[3];
  void *s3620c2f4[2];
  char s3620c2f5[3];
  ::S3620C12 s3620c2f6;
  int s3620c2f7;
  ::S3619C25 s3620c2f8;
  void *s3620c2f9;
  int s3620c2f10[2];
  ::S3620C13_nt s3620c2f11;
  ::S3620C13_nt s3620c2f12;
  int s3620c2f13[3];
  char s3620c2f14[6144];
  ::S3619C18_nt s3620c2f15;
  ::S3619C15_nt s3620c2f16;
  char s3620c2f17;
  int s3620c2f18;
  char s3620c2f19;
  int s3620c2f20[5];
  __tsi64 s3620c2f21[7];
  char s3620c2f22;
  __tsi64 s3620c2f23[9];
  int s3620c2f24[2];
  ::S3619C22 s3620c2f25;
  ::S3620C23 s3620c2f26;
  void *s3620c2f27[4];
  __tsi64 s3620c2f28[2];
  ::S3619C18_nt s3620c2f29;
  int s3620c2f30;
  char s3620c2f31;
  __tsi64 s3620c2f32;
  char s3620c2f33;
  __tsi64 s3620c2f34;
  virtual  ~S3620C2(); // _ZN7S3620C2D1Ev
  virtual void  v46(); // _ZN7S3620C23v46Ev
  virtual void  v47(); // _ZN7S3620C23v47Ev
  virtual void  v48(); // _ZN7S3620C23v48Ev
  virtual void  v49(); // _ZN7S3620C23v49Ev
  virtual void  v50(); // _ZN7S3620C23v50Ev
  virtual void  v51(); // _ZN7S3620C23v51Ev
  virtual void  v52(); // _ZN7S3620C23v52Ev
  virtual void  v53(); // _ZN7S3620C23v53Ev
  virtual void  v54(); // _ZN7S3620C23v54Ev
  virtual void  v55(); // _ZN7S3620C23v55Ev
  virtual void  v56(); // _ZN7S3620C23v56Ev
  virtual void  v57(); // _ZN7S3620C23v57Ev
  virtual void  v58(); // _ZN7S3620C23v58Ev
  virtual void  v59(); // _ZN7S3620C23v59Ev
  virtual void  v60(); // _ZN7S3620C23v60Ev
  virtual void  v61(); // _ZN7S3620C23v61Ev
  virtual void  v62(); // _ZN7S3620C23v62Ev
  virtual void  v63(); // _ZN7S3620C23v63Ev
  virtual void  v64(); // _ZN7S3620C23v64Ev
  virtual void  v65(); // _ZN7S3620C23v65Ev
  virtual void  v66(); // _ZN7S3620C23v66Ev
  virtual void  v67(); // _ZN7S3620C23v67Ev
  virtual void  v68(); // _ZN7S3620C23v68Ev
  virtual void  v69(); // _ZN7S3620C23v69Ev
  virtual void  v70(); // _ZN7S3620C23v70Ev
  virtual void  v71(); // _ZN7S3620C23v71Ev
  virtual void  v72(); // _ZN7S3620C23v72Ev
  virtual void  v73(); // _ZN7S3620C23v73Ev
  virtual void  v74(); // _ZN7S3620C23v74Ev
  virtual void  v75(); // _ZN7S3620C23v75Ev
  virtual void  v76(); // _ZN7S3620C23v76Ev
  virtual void  v77(); // _ZN7S3620C23v77Ev
  virtual void  v78(); // _ZN7S3620C23v78Ev
  virtual void  v79(); // _ZN7S3620C23v79Ev
  virtual void  v80(); // _ZN7S3620C23v80Ev
  virtual void  v81(); // _ZN7S3620C23v81Ev
  virtual void  v82(); // _ZN7S3620C23v82Ev
  virtual void  v83(); // _ZN7S3620C23v83Ev
  virtual void  v84(); // _ZN7S3620C23v84Ev
  virtual void  v85(); // _ZN7S3620C23v85Ev
  virtual void  v86(); // _ZN7S3620C23v86Ev
  virtual void  v87(); // _ZN7S3620C23v87Ev
  virtual void  v88(); // _ZN7S3620C23v88Ev
  virtual void  v89(); // _ZN7S3620C23v89Ev
  virtual void  v90(); // _ZN7S3620C23v90Ev
  virtual void  v91(); // _ZN7S3620C23v91Ev
  virtual void  v92(); // _ZN7S3620C23v92Ev
  virtual void  v93(); // _ZN7S3620C23v93Ev
  virtual void  v94(); // _ZN7S3620C23v94Ev
  virtual void  v95(); // _ZN7S3620C23v95Ev
  virtual void  v96(); // _ZN7S3620C23v96Ev
  virtual void  v97(); // _ZN7S3620C23v97Ev
  virtual void  v98(); // _ZN7S3620C23v98Ev
  virtual void  v99(); // _ZN7S3620C23v99Ev
  virtual void  v100(); // _ZN7S3620C24v100Ev
  virtual void  v101(); // _ZN7S3620C24v101Ev
  virtual void  v102(); // _ZN7S3620C24v102Ev
  virtual void  v103(); // _ZN7S3620C24v103Ev
  virtual void  v104(); // _ZN7S3620C24v104Ev
  virtual void  v105(); // _ZN7S3620C24v105Ev
  virtual void  v106(); // _ZN7S3620C24v106Ev
  virtual void  v107(); // _ZN7S3620C24v107Ev
  virtual void  v108(); // _ZN7S3620C24v108Ev
  virtual void  v109(); // _ZN7S3620C24v109Ev
  virtual void  v110(); // _ZN7S3620C24v110Ev
  virtual void  v111(); // _ZN7S3620C24v111Ev
  virtual void  v112(); // _ZN7S3620C24v112Ev
  virtual void  v113(); // _ZN7S3620C24v113Ev
  virtual void  v114(); // _ZN7S3620C24v114Ev
  virtual void  v115(); // _ZN7S3620C24v115Ev
  virtual void  v116(); // _ZN7S3620C24v116Ev
  virtual void  v117(); // _ZN7S3620C24v117Ev
  virtual void  v118(); // _ZN7S3620C24v118Ev
  virtual void  v119(); // _ZN7S3620C24v119Ev
  virtual void  v120(); // _ZN7S3620C24v120Ev
  virtual void  v121(); // _ZN7S3620C24v121Ev
  virtual void  v122(); // _ZN7S3620C24v122Ev
  virtual void  v123(); // _ZN7S3620C24v123Ev
  virtual void  v124(); // _ZN7S3620C24v124Ev
  virtual void  v125(); // _ZN7S3620C24v125Ev
  virtual void  v126(); // _ZN7S3620C24v126Ev
  virtual void  v127(); // _ZN7S3620C24v127Ev
  virtual void  v128(); // _ZN7S3620C24v128Ev
  virtual void  v129(); // _ZN7S3620C24v129Ev
  virtual void  v130(); // _ZN7S3620C24v130Ev
  virtual void  v131(); // _ZN7S3620C24v131Ev
  virtual void  v132(); // _ZN7S3620C24v132Ev
  virtual void  v133(); // _ZN7S3620C24v133Ev
  virtual void  v134(); // _ZN7S3620C24v134Ev
  virtual void  v135(); // _ZN7S3620C24v135Ev
  virtual void  v136(); // _ZN7S3620C24v136Ev
  virtual void  v137(); // _ZN7S3620C24v137Ev
  virtual void  v138(); // _ZN7S3620C24v138Ev
  virtual void  v139(); // _ZN7S3620C24v139Ev
  virtual void  v140(); // _ZN7S3620C24v140Ev
  virtual void  v141(); // _ZN7S3620C24v141Ev
  virtual void  v142(); // _ZN7S3620C24v142Ev
  virtual void  v143(); // _ZN7S3620C24v143Ev
  S3620C2(); // tgen
};
//SIG(-1 S3620C2) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC4} FC3 Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 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 Fi[3] FC5{ m Fc Fl[2] Fs[12] Fc[5]} FC6{ m Fc Fl[4] Fi[4]} Fi[3] Fp[2] Fc[3] FC7{ m FC8{ m FL[4]} Fc Fp Fi[3]} Fi FC9{ m Fp Fi[2] FC10{ m}} Fp Fi[2] FC8 FC8 Fi[3] Fc[6144] FC11{ m Fp Fi FC12{ m}} FC13{ m Fp Fi[2] FC12} Fc Fi Fc Fi[5] FL[7] Fc FL[9] Fi[2] FC14{ m FC15{ m Fc[11]} Fi[7] FL} FC16{ m Fp FC8 FL[2] Fi FL Fi[2] Fc FC11 FC11 FL[5] Fc Fi FC17{ m Fp Fi[2] FC10} FC17 FC17 FC17 FC18{ m Fp Fi[2] FC10} Fi[2]} Fp[4] FL[2] FC11 Fi Fc FL Fc FL}


 S3620C2 ::~S3620C2(){ note_dtor("S3620C2", this);}
void  S3620C2 ::v46(){vfunc_called(this, "_ZN7S3620C23v46Ev");}
void  S3620C2 ::v47(){vfunc_called(this, "_ZN7S3620C23v47Ev");}
void  S3620C2 ::v48(){vfunc_called(this, "_ZN7S3620C23v48Ev");}
void  S3620C2 ::v49(){vfunc_called(this, "_ZN7S3620C23v49Ev");}
void  S3620C2 ::v50(){vfunc_called(this, "_ZN7S3620C23v50Ev");}
void  S3620C2 ::v51(){vfunc_called(this, "_ZN7S3620C23v51Ev");}
void  S3620C2 ::v52(){vfunc_called(this, "_ZN7S3620C23v52Ev");}
void  S3620C2 ::v53(){vfunc_called(this, "_ZN7S3620C23v53Ev");}
void  S3620C2 ::v54(){vfunc_called(this, "_ZN7S3620C23v54Ev");}
void  S3620C2 ::v55(){vfunc_called(this, "_ZN7S3620C23v55Ev");}
void  S3620C2 ::v56(){vfunc_called(this, "_ZN7S3620C23v56Ev");}
void  S3620C2 ::v57(){vfunc_called(this, "_ZN7S3620C23v57Ev");}
void  S3620C2 ::v58(){vfunc_called(this, "_ZN7S3620C23v58Ev");}
void  S3620C2 ::v59(){vfunc_called(this, "_ZN7S3620C23v59Ev");}
void  S3620C2 ::v60(){vfunc_called(this, "_ZN7S3620C23v60Ev");}
void  S3620C2 ::v61(){vfunc_called(this, "_ZN7S3620C23v61Ev");}
void  S3620C2 ::v62(){vfunc_called(this, "_ZN7S3620C23v62Ev");}
void  S3620C2 ::v63(){vfunc_called(this, "_ZN7S3620C23v63Ev");}
void  S3620C2 ::v64(){vfunc_called(this, "_ZN7S3620C23v64Ev");}
void  S3620C2 ::v65(){vfunc_called(this, "_ZN7S3620C23v65Ev");}
void  S3620C2 ::v66(){vfunc_called(this, "_ZN7S3620C23v66Ev");}
void  S3620C2 ::v67(){vfunc_called(this, "_ZN7S3620C23v67Ev");}
void  S3620C2 ::v68(){vfunc_called(this, "_ZN7S3620C23v68Ev");}
void  S3620C2 ::v69(){vfunc_called(this, "_ZN7S3620C23v69Ev");}
void  S3620C2 ::v70(){vfunc_called(this, "_ZN7S3620C23v70Ev");}
void  S3620C2 ::v71(){vfunc_called(this, "_ZN7S3620C23v71Ev");}
void  S3620C2 ::v72(){vfunc_called(this, "_ZN7S3620C23v72Ev");}
void  S3620C2 ::v73(){vfunc_called(this, "_ZN7S3620C23v73Ev");}
void  S3620C2 ::v74(){vfunc_called(this, "_ZN7S3620C23v74Ev");}
void  S3620C2 ::v75(){vfunc_called(this, "_ZN7S3620C23v75Ev");}
void  S3620C2 ::v76(){vfunc_called(this, "_ZN7S3620C23v76Ev");}
void  S3620C2 ::v77(){vfunc_called(this, "_ZN7S3620C23v77Ev");}
void  S3620C2 ::v78(){vfunc_called(this, "_ZN7S3620C23v78Ev");}
void  S3620C2 ::v79(){vfunc_called(this, "_ZN7S3620C23v79Ev");}
void  S3620C2 ::v80(){vfunc_called(this, "_ZN7S3620C23v80Ev");}
void  S3620C2 ::v81(){vfunc_called(this, "_ZN7S3620C23v81Ev");}
void  S3620C2 ::v82(){vfunc_called(this, "_ZN7S3620C23v82Ev");}
void  S3620C2 ::v83(){vfunc_called(this, "_ZN7S3620C23v83Ev");}
void  S3620C2 ::v84(){vfunc_called(this, "_ZN7S3620C23v84Ev");}
void  S3620C2 ::v85(){vfunc_called(this, "_ZN7S3620C23v85Ev");}
void  S3620C2 ::v86(){vfunc_called(this, "_ZN7S3620C23v86Ev");}
void  S3620C2 ::v87(){vfunc_called(this, "_ZN7S3620C23v87Ev");}
void  S3620C2 ::v88(){vfunc_called(this, "_ZN7S3620C23v88Ev");}
void  S3620C2 ::v89(){vfunc_called(this, "_ZN7S3620C23v89Ev");}
void  S3620C2 ::v90(){vfunc_called(this, "_ZN7S3620C23v90Ev");}
void  S3620C2 ::v91(){vfunc_called(this, "_ZN7S3620C23v91Ev");}
void  S3620C2 ::v92(){vfunc_called(this, "_ZN7S3620C23v92Ev");}
void  S3620C2 ::v93(){vfunc_called(this, "_ZN7S3620C23v93Ev");}
void  S3620C2 ::v94(){vfunc_called(this, "_ZN7S3620C23v94Ev");}
void  S3620C2 ::v95(){vfunc_called(this, "_ZN7S3620C23v95Ev");}
void  S3620C2 ::v96(){vfunc_called(this, "_ZN7S3620C23v96Ev");}
void  S3620C2 ::v97(){vfunc_called(this, "_ZN7S3620C23v97Ev");}
void  S3620C2 ::v98(){vfunc_called(this, "_ZN7S3620C23v98Ev");}
void  S3620C2 ::v99(){vfunc_called(this, "_ZN7S3620C23v99Ev");}
void  S3620C2 ::v100(){vfunc_called(this, "_ZN7S3620C24v100Ev");}
void  S3620C2 ::v101(){vfunc_called(this, "_ZN7S3620C24v101Ev");}
void  S3620C2 ::v102(){vfunc_called(this, "_ZN7S3620C24v102Ev");}
void  S3620C2 ::v103(){vfunc_called(this, "_ZN7S3620C24v103Ev");}
void  S3620C2 ::v104(){vfunc_called(this, "_ZN7S3620C24v104Ev");}
void  S3620C2 ::v105(){vfunc_called(this, "_ZN7S3620C24v105Ev");}
void  S3620C2 ::v106(){vfunc_called(this, "_ZN7S3620C24v106Ev");}
void  S3620C2 ::v107(){vfunc_called(this, "_ZN7S3620C24v107Ev");}
void  S3620C2 ::v108(){vfunc_called(this, "_ZN7S3620C24v108Ev");}
void  S3620C2 ::v109(){vfunc_called(this, "_ZN7S3620C24v109Ev");}
void  S3620C2 ::v110(){vfunc_called(this, "_ZN7S3620C24v110Ev");}
void  S3620C2 ::v111(){vfunc_called(this, "_ZN7S3620C24v111Ev");}
void  S3620C2 ::v112(){vfunc_called(this, "_ZN7S3620C24v112Ev");}
void  S3620C2 ::v113(){vfunc_called(this, "_ZN7S3620C24v113Ev");}
void  S3620C2 ::v114(){vfunc_called(this, "_ZN7S3620C24v114Ev");}
void  S3620C2 ::v115(){vfunc_called(this, "_ZN7S3620C24v115Ev");}
void  S3620C2 ::v116(){vfunc_called(this, "_ZN7S3620C24v116Ev");}
void  S3620C2 ::v117(){vfunc_called(this, "_ZN7S3620C24v117Ev");}
void  S3620C2 ::v118(){vfunc_called(this, "_ZN7S3620C24v118Ev");}
void  S3620C2 ::v119(){vfunc_called(this, "_ZN7S3620C24v119Ev");}
void  S3620C2 ::v120(){vfunc_called(this, "_ZN7S3620C24v120Ev");}
void  S3620C2 ::v121(){vfunc_called(this, "_ZN7S3620C24v121Ev");}
void  S3620C2 ::v122(){vfunc_called(this, "_ZN7S3620C24v122Ev");}
void  S3620C2 ::v123(){vfunc_called(this, "_ZN7S3620C24v123Ev");}
void  S3620C2 ::v124(){vfunc_called(this, "_ZN7S3620C24v124Ev");}
void  S3620C2 ::v125(){vfunc_called(this, "_ZN7S3620C24v125Ev");}
void  S3620C2 ::v126(){vfunc_called(this, "_ZN7S3620C24v126Ev");}
void  S3620C2 ::v127(){vfunc_called(this, "_ZN7S3620C24v127Ev");}
void  S3620C2 ::v128(){vfunc_called(this, "_ZN7S3620C24v128Ev");}
void  S3620C2 ::v129(){vfunc_called(this, "_ZN7S3620C24v129Ev");}
void  S3620C2 ::v130(){vfunc_called(this, "_ZN7S3620C24v130Ev");}
void  S3620C2 ::v131(){vfunc_called(this, "_ZN7S3620C24v131Ev");}
void  S3620C2 ::v132(){vfunc_called(this, "_ZN7S3620C24v132Ev");}
void  S3620C2 ::v133(){vfunc_called(this, "_ZN7S3620C24v133Ev");}
void  S3620C2 ::v134(){vfunc_called(this, "_ZN7S3620C24v134Ev");}
void  S3620C2 ::v135(){vfunc_called(this, "_ZN7S3620C24v135Ev");}
void  S3620C2 ::v136(){vfunc_called(this, "_ZN7S3620C24v136Ev");}
void  S3620C2 ::v137(){vfunc_called(this, "_ZN7S3620C24v137Ev");}
void  S3620C2 ::v138(){vfunc_called(this, "_ZN7S3620C24v138Ev");}
void  S3620C2 ::v139(){vfunc_called(this, "_ZN7S3620C24v139Ev");}
void  S3620C2 ::v140(){vfunc_called(this, "_ZN7S3620C24v140Ev");}
void  S3620C2 ::v141(){vfunc_called(this, "_ZN7S3620C24v141Ev");}
void  S3620C2 ::v142(){vfunc_called(this, "_ZN7S3620C24v142Ev");}
void  S3620C2 ::v143(){vfunc_called(this, "_ZN7S3620C24v143Ev");}
S3620C2 ::S3620C2(){ note_ctor("S3620C2", this);} // tgen

static void Test_S3620C2()
{
  extern Class_Descriptor cd_S3620C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(901,1753)];
    init_test(&cd_S3620C2, buf);
    S3620C2 *dp, &lv = *(dp=new (buf) S3620C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7200,7008), "sizeof(S3620C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3620C2)");
    check_base_class_offset(lv, (S3619C3_nt*), 0, "S3620C2");
    check_field_offset(lv, s3620c2f0, ABISELECT(44,32), "S3620C2.s3620c2f0");
    check_field_offset(lv, s3620c2f1, ABISELECT(56,44), "S3620C2.s3620c2f1");
    check_field_offset(lv, s3620c2f2, ABISELECT(112,88), "S3620C2.s3620c2f2");
    check_field_offset(lv, s3620c2f3, ABISELECT(168,124), "S3620C2.s3620c2f3");
    check_field_offset(lv, s3620c2f4, ABISELECT(184,136), "S3620C2.s3620c2f4");
    check_field_offset(lv, s3620c2f5, ABISELECT(200,144), "S3620C2.s3620c2f5");
    check_field_offset(lv, s3620c2f6, ABISELECT(208,148), "S3620C2.s3620c2f6");
    check_field_offset(lv, s3620c2f7, ABISELECT(272,200), "S3620C2.s3620c2f7");
    check_field_offset(lv, s3620c2f8, ABISELECT(280,204), "S3620C2.s3620c2f8");
    check_field_offset(lv, s3620c2f9, ABISELECT(304,220), "S3620C2.s3620c2f9");
    check_field_offset(lv, s3620c2f10, ABISELECT(312,224), "S3620C2.s3620c2f10");
    check_field_offset(lv, s3620c2f11, ABISELECT(320,232), "S3620C2.s3620c2f11");
    check_field_offset(lv, s3620c2f12, ABISELECT(352,264), "S3620C2.s3620c2f12");
    check_field_offset(lv, s3620c2f13, ABISELECT(384,296), "S3620C2.s3620c2f13");
    check_field_offset(lv, s3620c2f14, ABISELECT(396,308), "S3620C2.s3620c2f14");
    check_field_offset(lv, s3620c2f15, ABISELECT(6544,6452), "S3620C2.s3620c2f15");
    check_field_offset(lv, s3620c2f16, ABISELECT(6560,6464), "S3620C2.s3620c2f16");
    check_field_offset(lv, s3620c2f17, ABISELECT(6584,6480), "S3620C2.s3620c2f17");
    check_field_offset(lv, s3620c2f18, ABISELECT(6588,6484), "S3620C2.s3620c2f18");
    check_field_offset(lv, s3620c2f19, ABISELECT(6592,6488), "S3620C2.s3620c2f19");
    check_field_offset(lv, s3620c2f20, ABISELECT(6596,6492), "S3620C2.s3620c2f20");
    check_field_offset(lv, s3620c2f21, ABISELECT(6616,6512), "S3620C2.s3620c2f21");
    check_field_offset(lv, s3620c2f22, ABISELECT(6672,6568), "S3620C2.s3620c2f22");
    check_field_offset(lv, s3620c2f23, ABISELECT(6680,6572), "S3620C2.s3620c2f23");
    check_field_offset(lv, s3620c2f24, ABISELECT(6752,6644), "S3620C2.s3620c2f24");
    check_field_offset(lv, s3620c2f25, ABISELECT(6760,6652), "S3620C2.s3620c2f25");
    check_field_offset(lv, s3620c2f26, ABISELECT(6808,6700), "S3620C2.s3620c2f26");
    check_field_offset(lv, s3620c2f27, ABISELECT(7104,6936), "S3620C2.s3620c2f27");
    check_field_offset(lv, s3620c2f28, ABISELECT(7136,6952), "S3620C2.s3620c2f28");
    check_field_offset(lv, s3620c2f29, ABISELECT(7152,6968), "S3620C2.s3620c2f29");
    check_field_offset(lv, s3620c2f30, ABISELECT(7168,6980), "S3620C2.s3620c2f30");
    check_field_offset(lv, s3620c2f31, ABISELECT(7172,6984), "S3620C2.s3620c2f31");
    check_field_offset(lv, s3620c2f32, ABISELECT(7176,6988), "S3620C2.s3620c2f32");
    check_field_offset(lv, s3620c2f33, ABISELECT(7184,6996), "S3620C2.s3620c2f33");
    check_field_offset(lv, s3620c2f34, ABISELECT(7192,7000), "S3620C2.s3620c2f34");
    test_class_info(&lv, &cd_S3620C2);
    dp->~S3620C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3620C2(Test_S3620C2, "S3620C2", ABISELECT(7200,7008));

#else // __cplusplus

extern void _ZN7S3620C2C1Ev();
extern void _ZN7S3620C2D1Ev();
Name_Map name_map_S3620C2[] = {
  NSPAIR(_ZN7S3620C2C1Ev),
  NSPAIR(_ZN7S3620C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
static Base_Class bases_S3620C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3620C2[];
extern void _ZN7S3620C2D1Ev();
extern void _ZN7S3620C2D0Ev();
extern void _ZN7S3620C23v46Ev();
extern void _ZN7S3620C23v47Ev();
extern void _ZN7S3620C23v48Ev();
extern void _ZN7S3620C23v49Ev();
extern void _ZN7S3620C23v50Ev();
extern void _ZN7S3620C23v51Ev();
extern void _ZN7S3620C23v52Ev();
extern void _ZN7S3620C23v53Ev();
extern void _ZN7S3620C23v54Ev();
extern void _ZN7S3620C23v55Ev();
extern void _ZN7S3620C23v56Ev();
extern void _ZN7S3620C23v57Ev();
extern void _ZN7S3620C23v58Ev();
extern void _ZN7S3620C23v59Ev();
extern void _ZN7S3620C23v60Ev();
extern void _ZN7S3620C23v61Ev();
extern void _ZN7S3620C23v62Ev();
extern void _ZN7S3620C23v63Ev();
extern void _ZN7S3620C23v64Ev();
extern void _ZN7S3620C23v65Ev();
extern void _ZN7S3620C23v66Ev();
extern void _ZN7S3620C23v67Ev();
extern void _ZN7S3620C23v68Ev();
extern void _ZN7S3620C23v69Ev();
extern void _ZN7S3620C23v70Ev();
extern void _ZN7S3620C23v71Ev();
extern void _ZN7S3620C23v72Ev();
extern void _ZN7S3620C23v73Ev();
extern void _ZN7S3620C23v74Ev();
extern void _ZN7S3620C23v75Ev();
extern void _ZN7S3620C23v76Ev();
extern void _ZN7S3620C23v77Ev();
extern void _ZN7S3620C23v78Ev();
extern void _ZN7S3620C23v79Ev();
extern void _ZN7S3620C23v80Ev();
extern void _ZN7S3620C23v81Ev();
extern void _ZN7S3620C23v82Ev();
extern void _ZN7S3620C23v83Ev();
extern void _ZN7S3620C23v84Ev();
extern void _ZN7S3620C23v85Ev();
extern void _ZN7S3620C23v86Ev();
extern void _ZN7S3620C23v87Ev();
extern void _ZN7S3620C23v88Ev();
extern void _ZN7S3620C23v89Ev();
extern void _ZN7S3620C23v90Ev();
extern void _ZN7S3620C23v91Ev();
extern void _ZN7S3620C23v92Ev();
extern void _ZN7S3620C23v93Ev();
extern void _ZN7S3620C23v94Ev();
extern void _ZN7S3620C23v95Ev();
extern void _ZN7S3620C23v96Ev();
extern void _ZN7S3620C23v97Ev();
extern void _ZN7S3620C23v98Ev();
extern void _ZN7S3620C23v99Ev();
extern void _ZN7S3620C24v100Ev();
extern void _ZN7S3620C24v101Ev();
extern void _ZN7S3620C24v102Ev();
extern void _ZN7S3620C24v103Ev();
extern void _ZN7S3620C24v104Ev();
extern void _ZN7S3620C24v105Ev();
extern void _ZN7S3620C24v106Ev();
extern void _ZN7S3620C24v107Ev();
extern void _ZN7S3620C24v108Ev();
extern void _ZN7S3620C24v109Ev();
extern void _ZN7S3620C24v110Ev();
extern void _ZN7S3620C24v111Ev();
extern void _ZN7S3620C24v112Ev();
extern void _ZN7S3620C24v113Ev();
extern void _ZN7S3620C24v114Ev();
extern void _ZN7S3620C24v115Ev();
extern void _ZN7S3620C24v116Ev();
extern void _ZN7S3620C24v117Ev();
extern void _ZN7S3620C24v118Ev();
extern void _ZN7S3620C24v119Ev();
extern void _ZN7S3620C24v120Ev();
extern void _ZN7S3620C24v121Ev();
extern void _ZN7S3620C24v122Ev();
extern void _ZN7S3620C24v123Ev();
extern void _ZN7S3620C24v124Ev();
extern void _ZN7S3620C24v125Ev();
extern void _ZN7S3620C24v126Ev();
extern void _ZN7S3620C24v127Ev();
extern void _ZN7S3620C24v128Ev();
extern void _ZN7S3620C24v129Ev();
extern void _ZN7S3620C24v130Ev();
extern void _ZN7S3620C24v131Ev();
extern void _ZN7S3620C24v132Ev();
extern void _ZN7S3620C24v133Ev();
extern void _ZN7S3620C24v134Ev();
extern void _ZN7S3620C24v135Ev();
extern void _ZN7S3620C24v136Ev();
extern void _ZN7S3620C24v137Ev();
extern void _ZN7S3620C24v138Ev();
extern void _ZN7S3620C24v139Ev();
extern void _ZN7S3620C24v140Ev();
extern void _ZN7S3620C24v141Ev();
extern void _ZN7S3620C24v142Ev();
extern void _ZN7S3620C24v143Ev();
static  VTBL_ENTRY vtc_S3620C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3620C2[0]),
  (VTBL_ENTRY)&_ZN7S3620C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3620C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v49Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v50Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v51Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v52Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v53Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v54Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v55Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v56Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v57Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v58Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v59Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v60Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v61Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v62Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v63Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v64Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v65Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v66Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v82Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v83Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v84Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v85Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v86Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v87Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v88Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v89Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v90Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v91Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v92Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v93Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v94Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v95Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v96Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v97Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v98Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v99Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v100Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v101Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v102Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v103Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v130Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v131Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v132Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v143Ev,
};
extern VTBL_ENTRY _ZTI7S3620C2[];
extern  VTBL_ENTRY _ZTV7S3620C2[];
Class_Descriptor cd_S3620C2 = {  "S3620C2", // class name
  bases_S3620C2, 1,
  &(vtc_S3620C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(7200,7008), // object size
  NSPAIRA(_ZTI7S3620C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3620C2),102, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3620C1  : S3620C2 {
  void *s3620c1f0[16];
  ::S3619C29 s3620c1f1;
  ::S3619C29 s3620c1f2;
  ::S3619C29 s3620c1f3;
  ::S3619C29 s3620c1f4;
  ::S3619C29 s3620c1f5;
  ::S3619C29 s3620c1f6;
  ::S3619C29 s3620c1f7;
  ::S3619C29 s3620c1f8;
  int s3620c1f9;
  void *s3620c1f10[3];
  long s3620c1f11;
  void *s3620c1f12;
  long s3620c1f13;
  void *s3620c1f14;
  long s3620c1f15;
  void *s3620c1f16;
  long s3620c1f17;
  void *s3620c1f18[4];
  int s3620c1f19[2];
  ::S3619C18_nt s3620c1f20;
  ::S3619C18_nt s3620c1f21;
  int s3620c1f22[2];
  long s3620c1f23;
  int s3620c1f24;
  char s3620c1f25[2];
  __tsi64 s3620c1f26[2];
  char s3620c1f27;
  ::S3619C30 s3620c1f28;
  __tsi64 s3620c1f29;
  char s3620c1f30;
  char s3620c1f31;
  __tsi64 s3620c1f32;
  char s3620c1f33;
  long s3620c1f34;
  virtual  ~S3620C1(); // _ZN7S3620C1D1Ev
  virtual void  v1(); // _ZN7S3620C12v1Ev
  virtual void  v2(); // _ZN7S3620C12v2Ev
  virtual void  v3(); // _ZN7S3620C12v3Ev
  virtual void  v4(); // _ZN7S3620C12v4Ev
  virtual void  v5(); // _ZN7S3620C12v5Ev
  virtual void  v6(); // _ZN7S3620C12v6Ev
  virtual void  v7(); // _ZN7S3620C12v7Ev
  virtual void  v8(); // _ZN7S3620C12v8Ev
  virtual void  v9(); // _ZN7S3620C12v9Ev
  virtual void  v10(); // _ZN7S3620C13v10Ev
  virtual void  v11(); // _ZN7S3620C13v11Ev
  virtual void  v12(); // _ZN7S3620C13v12Ev
  virtual void  v13(); // _ZN7S3620C13v13Ev
  virtual void  v14(); // _ZN7S3620C13v14Ev
  virtual void  v15(); // _ZN7S3620C13v15Ev
  virtual void  v16(); // _ZN7S3620C13v16Ev
  virtual void  v17(); // _ZN7S3620C13v17Ev
  virtual void  v18(); // _ZN7S3620C13v18Ev
  virtual void  v19(); // _ZN7S3620C13v19Ev
  virtual void  v20(); // _ZN7S3620C13v20Ev
  virtual void  v21(); // _ZN7S3620C13v21Ev
  virtual void  v22(); // _ZN7S3620C13v22Ev
  virtual void  v23(); // _ZN7S3620C13v23Ev
  virtual void  v24(); // _ZN7S3620C13v24Ev
  virtual void  v25(); // _ZN7S3620C13v25Ev
  virtual void  v26(); // _ZN7S3620C13v26Ev
  virtual void  v27(); // _ZN7S3620C13v27Ev
  virtual void  v28(); // _ZN7S3620C13v28Ev
  virtual void  v29(); // _ZN7S3620C13v29Ev
  virtual void  v30(); // _ZN7S3620C13v30Ev
  virtual void  v31(); // _ZN7S3620C13v31Ev
  virtual void  v32(); // _ZN7S3620C13v32Ev
  virtual void  v33(); // _ZN7S3620C13v33Ev
  virtual void  v34(); // _ZN7S3620C13v34Ev
  virtual void  v35(); // _ZN7S3620C13v35Ev
  virtual void  v36(); // _ZN7S3620C13v36Ev
  virtual void  v37(); // _ZN7S3620C13v37Ev
  virtual void  v38(); // _ZN7S3620C13v38Ev
  virtual void  v39(); // _ZN7S3620C13v39Ev
  virtual void  v40(); // _ZN7S3620C13v40Ev
  virtual void  v41(); // _ZN7S3620C13v41Ev
  virtual void  v42(); // _ZN7S3620C13v42Ev
  virtual void  v43(); // _ZN7S3620C13v43Ev
  virtual void  v44(); // _ZN7S3620C13v44Ev
  virtual void  v45(); // _ZN7S3620C13v45Ev
  S3620C1(); // tgen
};
//SIG(1 S3620C1) C1{ BC2{ BC3{ vd m FC4{ m Fp Fi FC5{ m} FC5} FC4 Fc} vd 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 Fi[3] FC6{ m Fc Fl[2] Fs[12] Fc[5]} FC7{ m Fc Fl[4] Fi[4]} Fi[3] Fp[2] Fc[3] FC8{ m FC9{ m FL[4]} Fc Fp Fi[3]} Fi FC10{ m Fp Fi[2] FC11{ m}} Fp Fi[2] FC9 FC9 Fi[3] Fc[6144] FC12{ m Fp Fi FC13{ m}} FC14{ m Fp Fi[2] FC13} Fc Fi Fc Fi[5] FL[7] Fc FL[9] Fi[2] FC15{ m FC16{ m Fc[11]} Fi[7] FL} FC17{ m Fp FC9 FL[2] Fi FL Fi[2] Fc FC12 FC12 FL[5] Fc Fi FC18{ m Fp Fi[2] FC11} FC18 FC18 FC18 FC19{ m Fp Fi[2] FC11} Fi[2]} Fp[4] FL[2] FC12 Fi Fc FL Fc FL} 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 Fp[16] FC20{ Fl[4] Fi} FC20 FC20 FC20 FC20 FC20 FC20 FC20 Fi Fp[3] Fl Fp Fl Fp Fl Fp Fl Fp[4] Fi[2] FC12 FC12 Fi[2] Fl Fi Fc[2] FL[2] Fc FC21{ m Fi FU22{ FC23{ Fi FL Fi Fc FL Fc} FC24{ Fc Fi} FC25{ Fc FL Fi Fi} FC26{ FL} FC27{ Fi Fc} FC28{ FL Fc Fc Fc} FC29{ FL Fc Fc Fc Fc} FC30{ Fi} FC30 FC31{ Fi} FC32{ Fi FL Fc} FC33{ Fc Fc} Fi[32]}} FL Fc Fc FL Fc Fl}


 S3620C1 ::~S3620C1(){ note_dtor("S3620C1", this);}
void  S3620C1 ::v1(){vfunc_called(this, "_ZN7S3620C12v1Ev");}
void  S3620C1 ::v2(){vfunc_called(this, "_ZN7S3620C12v2Ev");}
void  S3620C1 ::v3(){vfunc_called(this, "_ZN7S3620C12v3Ev");}
void  S3620C1 ::v4(){vfunc_called(this, "_ZN7S3620C12v4Ev");}
void  S3620C1 ::v5(){vfunc_called(this, "_ZN7S3620C12v5Ev");}
void  S3620C1 ::v6(){vfunc_called(this, "_ZN7S3620C12v6Ev");}
void  S3620C1 ::v7(){vfunc_called(this, "_ZN7S3620C12v7Ev");}
void  S3620C1 ::v8(){vfunc_called(this, "_ZN7S3620C12v8Ev");}
void  S3620C1 ::v9(){vfunc_called(this, "_ZN7S3620C12v9Ev");}
void  S3620C1 ::v10(){vfunc_called(this, "_ZN7S3620C13v10Ev");}
void  S3620C1 ::v11(){vfunc_called(this, "_ZN7S3620C13v11Ev");}
void  S3620C1 ::v12(){vfunc_called(this, "_ZN7S3620C13v12Ev");}
void  S3620C1 ::v13(){vfunc_called(this, "_ZN7S3620C13v13Ev");}
void  S3620C1 ::v14(){vfunc_called(this, "_ZN7S3620C13v14Ev");}
void  S3620C1 ::v15(){vfunc_called(this, "_ZN7S3620C13v15Ev");}
void  S3620C1 ::v16(){vfunc_called(this, "_ZN7S3620C13v16Ev");}
void  S3620C1 ::v17(){vfunc_called(this, "_ZN7S3620C13v17Ev");}
void  S3620C1 ::v18(){vfunc_called(this, "_ZN7S3620C13v18Ev");}
void  S3620C1 ::v19(){vfunc_called(this, "_ZN7S3620C13v19Ev");}
void  S3620C1 ::v20(){vfunc_called(this, "_ZN7S3620C13v20Ev");}
void  S3620C1 ::v21(){vfunc_called(this, "_ZN7S3620C13v21Ev");}
void  S3620C1 ::v22(){vfunc_called(this, "_ZN7S3620C13v22Ev");}
void  S3620C1 ::v23(){vfunc_called(this, "_ZN7S3620C13v23Ev");}
void  S3620C1 ::v24(){vfunc_called(this, "_ZN7S3620C13v24Ev");}
void  S3620C1 ::v25(){vfunc_called(this, "_ZN7S3620C13v25Ev");}
void  S3620C1 ::v26(){vfunc_called(this, "_ZN7S3620C13v26Ev");}
void  S3620C1 ::v27(){vfunc_called(this, "_ZN7S3620C13v27Ev");}
void  S3620C1 ::v28(){vfunc_called(this, "_ZN7S3620C13v28Ev");}
void  S3620C1 ::v29(){vfunc_called(this, "_ZN7S3620C13v29Ev");}
void  S3620C1 ::v30(){vfunc_called(this, "_ZN7S3620C13v30Ev");}
void  S3620C1 ::v31(){vfunc_called(this, "_ZN7S3620C13v31Ev");}
void  S3620C1 ::v32(){vfunc_called(this, "_ZN7S3620C13v32Ev");}
void  S3620C1 ::v33(){vfunc_called(this, "_ZN7S3620C13v33Ev");}
void  S3620C1 ::v34(){vfunc_called(this, "_ZN7S3620C13v34Ev");}
void  S3620C1 ::v35(){vfunc_called(this, "_ZN7S3620C13v35Ev");}
void  S3620C1 ::v36(){vfunc_called(this, "_ZN7S3620C13v36Ev");}
void  S3620C1 ::v37(){vfunc_called(this, "_ZN7S3620C13v37Ev");}
void  S3620C1 ::v38(){vfunc_called(this, "_ZN7S3620C13v38Ev");}
void  S3620C1 ::v39(){vfunc_called(this, "_ZN7S3620C13v39Ev");}
void  S3620C1 ::v40(){vfunc_called(this, "_ZN7S3620C13v40Ev");}
void  S3620C1 ::v41(){vfunc_called(this, "_ZN7S3620C13v41Ev");}
void  S3620C1 ::v42(){vfunc_called(this, "_ZN7S3620C13v42Ev");}
void  S3620C1 ::v43(){vfunc_called(this, "_ZN7S3620C13v43Ev");}
void  S3620C1 ::v44(){vfunc_called(this, "_ZN7S3620C13v44Ev");}
void  S3620C1 ::v45(){vfunc_called(this, "_ZN7S3620C13v45Ev");}
S3620C1 ::S3620C1(){ note_ctor("S3620C1", this);} // tgen

static void Test_S3620C1()
{
  extern Class_Descriptor cd_S3620C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1005,1882)];
    init_test(&cd_S3620C1, buf);
    S3620C1 *dp, &lv = *(dp=new (buf) S3620C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8032,7524), "sizeof(S3620C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3620C1)");
    check_base_class_offset(lv, (S3619C3_nt*)(S3620C2*), 0, "S3620C1");
    check_base_class_offset(lv, (S3620C2*), 0, "S3620C1");
    check_field_offset(lv, s3620c1f0, ABISELECT(7200,7008), "S3620C1.s3620c1f0");
    check_field_offset(lv, s3620c1f1, ABISELECT(7328,7072), "S3620C1.s3620c1f1");
    check_field_offset(lv, s3620c1f2, ABISELECT(7368,7092), "S3620C1.s3620c1f2");
    check_field_offset(lv, s3620c1f3, ABISELECT(7408,7112), "S3620C1.s3620c1f3");
    check_field_offset(lv, s3620c1f4, ABISELECT(7448,7132), "S3620C1.s3620c1f4");
    check_field_offset(lv, s3620c1f5, ABISELECT(7488,7152), "S3620C1.s3620c1f5");
    check_field_offset(lv, s3620c1f6, ABISELECT(7528,7172), "S3620C1.s3620c1f6");
    check_field_offset(lv, s3620c1f7, ABISELECT(7568,7192), "S3620C1.s3620c1f7");
    check_field_offset(lv, s3620c1f8, ABISELECT(7608,7212), "S3620C1.s3620c1f8");
    check_field_offset(lv, s3620c1f9, ABISELECT(7648,7232), "S3620C1.s3620c1f9");
    check_field_offset(lv, s3620c1f10, ABISELECT(7656,7236), "S3620C1.s3620c1f10");
    check_field_offset(lv, s3620c1f11, ABISELECT(7680,7248), "S3620C1.s3620c1f11");
    check_field_offset(lv, s3620c1f12, ABISELECT(7688,7252), "S3620C1.s3620c1f12");
    check_field_offset(lv, s3620c1f13, ABISELECT(7696,7256), "S3620C1.s3620c1f13");
    check_field_offset(lv, s3620c1f14, ABISELECT(7704,7260), "S3620C1.s3620c1f14");
    check_field_offset(lv, s3620c1f15, ABISELECT(7712,7264), "S3620C1.s3620c1f15");
    check_field_offset(lv, s3620c1f16, ABISELECT(7720,7268), "S3620C1.s3620c1f16");
    check_field_offset(lv, s3620c1f17, ABISELECT(7728,7272), "S3620C1.s3620c1f17");
    check_field_offset(lv, s3620c1f18, ABISELECT(7736,7276), "S3620C1.s3620c1f18");
    check_field_offset(lv, s3620c1f19, ABISELECT(7768,7292), "S3620C1.s3620c1f19");
    check_field_offset(lv, s3620c1f20, ABISELECT(7776,7300), "S3620C1.s3620c1f20");
    check_field_offset(lv, s3620c1f21, ABISELECT(7792,7312), "S3620C1.s3620c1f21");
    check_field_offset(lv, s3620c1f22, ABISELECT(7808,7324), "S3620C1.s3620c1f22");
    check_field_offset(lv, s3620c1f23, ABISELECT(7816,7332), "S3620C1.s3620c1f23");
    check_field_offset(lv, s3620c1f24, ABISELECT(7824,7336), "S3620C1.s3620c1f24");
    check_field_offset(lv, s3620c1f25, ABISELECT(7828,7340), "S3620C1.s3620c1f25");
    check_field_offset(lv, s3620c1f26, ABISELECT(7832,7344), "S3620C1.s3620c1f26");
    check_field_offset(lv, s3620c1f27, ABISELECT(7848,7360), "S3620C1.s3620c1f27");
    check_field_offset(lv, s3620c1f28, ABISELECT(7856,7364), "S3620C1.s3620c1f28");
    check_field_offset(lv, s3620c1f29, ABISELECT(7992,7496), "S3620C1.s3620c1f29");
    check_field_offset(lv, s3620c1f30, ABISELECT(8000,7504), "S3620C1.s3620c1f30");
    check_field_offset(lv, s3620c1f31, ABISELECT(8001,7505), "S3620C1.s3620c1f31");
    check_field_offset(lv, s3620c1f32, ABISELECT(8008,7508), "S3620C1.s3620c1f32");
    check_field_offset(lv, s3620c1f33, ABISELECT(8016,7516), "S3620C1.s3620c1f33");
    check_field_offset(lv, s3620c1f34, ABISELECT(8024,7520), "S3620C1.s3620c1f34");
    test_class_info(&lv, &cd_S3620C1);
    dp->~S3620C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3620C1(Test_S3620C1, "S3620C1", ABISELECT(8032,7524));

#else // __cplusplus

extern void _ZN7S3620C1C1Ev();
extern void _ZN7S3620C1D1Ev();
Name_Map name_map_S3620C1[] = {
  NSPAIR(_ZN7S3620C1C1Ev),
  NSPAIR(_ZN7S3620C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
extern Class_Descriptor cd_S3620C2;
extern VTBL_ENTRY _ZTI7S3620C2[];
extern  VTBL_ENTRY _ZTV7S3620C2[];
static Base_Class bases_S3620C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3620C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3620C1[];
extern void _ZN7S3620C1D1Ev();
extern void _ZN7S3620C1D0Ev();
extern void _ZN7S3620C23v46Ev();
extern void _ZN7S3620C23v47Ev();
extern void _ZN7S3620C23v48Ev();
extern void _ZN7S3620C23v49Ev();
extern void _ZN7S3620C23v50Ev();
extern void _ZN7S3620C23v51Ev();
extern void _ZN7S3620C23v52Ev();
extern void _ZN7S3620C23v53Ev();
extern void _ZN7S3620C23v54Ev();
extern void _ZN7S3620C23v55Ev();
extern void _ZN7S3620C23v56Ev();
extern void _ZN7S3620C23v57Ev();
extern void _ZN7S3620C23v58Ev();
extern void _ZN7S3620C23v59Ev();
extern void _ZN7S3620C23v60Ev();
extern void _ZN7S3620C23v61Ev();
extern void _ZN7S3620C23v62Ev();
extern void _ZN7S3620C23v63Ev();
extern void _ZN7S3620C23v64Ev();
extern void _ZN7S3620C23v65Ev();
extern void _ZN7S3620C23v66Ev();
extern void _ZN7S3620C23v67Ev();
extern void _ZN7S3620C23v68Ev();
extern void _ZN7S3620C23v69Ev();
extern void _ZN7S3620C23v70Ev();
extern void _ZN7S3620C23v71Ev();
extern void _ZN7S3620C23v72Ev();
extern void _ZN7S3620C23v73Ev();
extern void _ZN7S3620C23v74Ev();
extern void _ZN7S3620C23v75Ev();
extern void _ZN7S3620C23v76Ev();
extern void _ZN7S3620C23v77Ev();
extern void _ZN7S3620C23v78Ev();
extern void _ZN7S3620C23v79Ev();
extern void _ZN7S3620C23v80Ev();
extern void _ZN7S3620C23v81Ev();
extern void _ZN7S3620C23v82Ev();
extern void _ZN7S3620C23v83Ev();
extern void _ZN7S3620C23v84Ev();
extern void _ZN7S3620C23v85Ev();
extern void _ZN7S3620C23v86Ev();
extern void _ZN7S3620C23v87Ev();
extern void _ZN7S3620C23v88Ev();
extern void _ZN7S3620C23v89Ev();
extern void _ZN7S3620C23v90Ev();
extern void _ZN7S3620C23v91Ev();
extern void _ZN7S3620C23v92Ev();
extern void _ZN7S3620C23v93Ev();
extern void _ZN7S3620C23v94Ev();
extern void _ZN7S3620C23v95Ev();
extern void _ZN7S3620C23v96Ev();
extern void _ZN7S3620C23v97Ev();
extern void _ZN7S3620C23v98Ev();
extern void _ZN7S3620C23v99Ev();
extern void _ZN7S3620C24v100Ev();
extern void _ZN7S3620C24v101Ev();
extern void _ZN7S3620C24v102Ev();
extern void _ZN7S3620C24v103Ev();
extern void _ZN7S3620C24v104Ev();
extern void _ZN7S3620C24v105Ev();
extern void _ZN7S3620C24v106Ev();
extern void _ZN7S3620C24v107Ev();
extern void _ZN7S3620C24v108Ev();
extern void _ZN7S3620C24v109Ev();
extern void _ZN7S3620C24v110Ev();
extern void _ZN7S3620C24v111Ev();
extern void _ZN7S3620C24v112Ev();
extern void _ZN7S3620C24v113Ev();
extern void _ZN7S3620C24v114Ev();
extern void _ZN7S3620C24v115Ev();
extern void _ZN7S3620C24v116Ev();
extern void _ZN7S3620C24v117Ev();
extern void _ZN7S3620C24v118Ev();
extern void _ZN7S3620C24v119Ev();
extern void _ZN7S3620C24v120Ev();
extern void _ZN7S3620C24v121Ev();
extern void _ZN7S3620C24v122Ev();
extern void _ZN7S3620C24v123Ev();
extern void _ZN7S3620C24v124Ev();
extern void _ZN7S3620C24v125Ev();
extern void _ZN7S3620C24v126Ev();
extern void _ZN7S3620C24v127Ev();
extern void _ZN7S3620C24v128Ev();
extern void _ZN7S3620C24v129Ev();
extern void _ZN7S3620C24v130Ev();
extern void _ZN7S3620C24v131Ev();
extern void _ZN7S3620C24v132Ev();
extern void _ZN7S3620C24v133Ev();
extern void _ZN7S3620C24v134Ev();
extern void _ZN7S3620C24v135Ev();
extern void _ZN7S3620C24v136Ev();
extern void _ZN7S3620C24v137Ev();
extern void _ZN7S3620C24v138Ev();
extern void _ZN7S3620C24v139Ev();
extern void _ZN7S3620C24v140Ev();
extern void _ZN7S3620C24v141Ev();
extern void _ZN7S3620C24v142Ev();
extern void _ZN7S3620C24v143Ev();
extern void _ZN7S3620C12v1Ev();
extern void _ZN7S3620C12v2Ev();
extern void _ZN7S3620C12v3Ev();
extern void _ZN7S3620C12v4Ev();
extern void _ZN7S3620C12v5Ev();
extern void _ZN7S3620C12v6Ev();
extern void _ZN7S3620C12v7Ev();
extern void _ZN7S3620C12v8Ev();
extern void _ZN7S3620C12v9Ev();
extern void _ZN7S3620C13v10Ev();
extern void _ZN7S3620C13v11Ev();
extern void _ZN7S3620C13v12Ev();
extern void _ZN7S3620C13v13Ev();
extern void _ZN7S3620C13v14Ev();
extern void _ZN7S3620C13v15Ev();
extern void _ZN7S3620C13v16Ev();
extern void _ZN7S3620C13v17Ev();
extern void _ZN7S3620C13v18Ev();
extern void _ZN7S3620C13v19Ev();
extern void _ZN7S3620C13v20Ev();
extern void _ZN7S3620C13v21Ev();
extern void _ZN7S3620C13v22Ev();
extern void _ZN7S3620C13v23Ev();
extern void _ZN7S3620C13v24Ev();
extern void _ZN7S3620C13v25Ev();
extern void _ZN7S3620C13v26Ev();
extern void _ZN7S3620C13v27Ev();
extern void _ZN7S3620C13v28Ev();
extern void _ZN7S3620C13v29Ev();
extern void _ZN7S3620C13v30Ev();
extern void _ZN7S3620C13v31Ev();
extern void _ZN7S3620C13v32Ev();
extern void _ZN7S3620C13v33Ev();
extern void _ZN7S3620C13v34Ev();
extern void _ZN7S3620C13v35Ev();
extern void _ZN7S3620C13v36Ev();
extern void _ZN7S3620C13v37Ev();
extern void _ZN7S3620C13v38Ev();
extern void _ZN7S3620C13v39Ev();
extern void _ZN7S3620C13v40Ev();
extern void _ZN7S3620C13v41Ev();
extern void _ZN7S3620C13v42Ev();
extern void _ZN7S3620C13v43Ev();
extern void _ZN7S3620C13v44Ev();
extern void _ZN7S3620C13v45Ev();
static  VTBL_ENTRY vtc_S3620C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3620C1[0]),
  (VTBL_ENTRY)&_ZN7S3620C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3620C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v49Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v50Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v51Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v52Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v53Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v54Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v55Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v56Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v57Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v58Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v59Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v60Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v61Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v62Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v63Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v64Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v65Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v66Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v82Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v83Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v84Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v85Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v86Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v87Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v88Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v89Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v90Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v91Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v92Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v93Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v94Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v95Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v96Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v97Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v98Ev,
  (VTBL_ENTRY)&_ZN7S3620C23v99Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v100Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v101Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v102Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v103Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v130Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v131Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v132Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3620C24v143Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3620C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v16Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v17Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v18Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v19Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v20Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v21Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v22Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v23Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v24Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v25Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v26Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v27Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v28Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v29Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v30Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v31Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v32Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v33Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v34Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v35Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v36Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v37Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v38Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v39Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v40Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v41Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v42Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v43Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v44Ev,
  (VTBL_ENTRY)&_ZN7S3620C13v45Ev,
};
extern VTBL_ENTRY _ZTI7S3620C1[];
extern  VTBL_ENTRY _ZTV7S3620C1[];
Class_Descriptor cd_S3620C1 = {  "S3620C1", // class name
  bases_S3620C1, 2,
  &(vtc_S3620C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8032,7524), // object size
  NSPAIRA(_ZTI7S3620C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3620C1),147, //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  S618C5  {
  int s618c5f0;
  __tsi64 s618c5f1;
  void *s618c5f2[4];
  int s618c5f3[2];
  void *s618c5f4;
  ::S3223C4_nt s618c5f5;
  void *s618c5f6[2];
  virtual  ~S618C5(); // _ZN6S618C5D1Ev
  virtual void  v5(); // _ZN6S618C52v5Ev
  virtual void  v6(); // _ZN6S618C52v6Ev
  virtual void  v7(); // _ZN6S618C52v7Ev
  virtual void  v8(); // _ZN6S618C52v8Ev
  virtual void  v9(); // _ZN6S618C52v9Ev
  virtual void  v10(); // _ZN6S618C53v10Ev
  virtual void  v11(); // _ZN6S618C53v11Ev
  virtual void  v12(); // _ZN6S618C53v12Ev
  virtual void  v13(); // _ZN6S618C53v13Ev
  virtual void  v14(); // _ZN6S618C53v14Ev
  virtual void  v15(); // _ZN6S618C53v15Ev
  virtual void  v16(); // _ZN6S618C53v16Ev
  virtual void  v17(); // _ZN6S618C53v17Ev
  virtual void  v18(); // _ZN6S618C53v18Ev
  virtual void  v19(); // _ZN6S618C53v19Ev
  virtual void  v20(); // _ZN6S618C53v20Ev
  virtual void  v21(); // _ZN6S618C53v21Ev
  virtual void  v22(); // _ZN6S618C53v22Ev
  virtual void  v23(); // _ZN6S618C53v23Ev
  virtual void  v24(); // _ZN6S618C53v24Ev
  virtual void  v25(); // _ZN6S618C53v25Ev
  virtual void  v26(); // _ZN6S618C53v26Ev
  virtual void  v27(); // _ZN6S618C53v27Ev
  virtual void  v28(); // _ZN6S618C53v28Ev
  virtual void  v29(); // _ZN6S618C53v29Ev
  virtual void  v30(); // _ZN6S618C53v30Ev
  virtual void  v31(); // _ZN6S618C53v31Ev
  virtual void  v32(); // _ZN6S618C53v32Ev
  virtual void  v33(); // _ZN6S618C53v33Ev
  virtual void  v34(); // _ZN6S618C53v34Ev
  virtual void  v35(); // _ZN6S618C53v35Ev
  virtual void  v36(); // _ZN6S618C53v36Ev
  virtual void  v37(); // _ZN6S618C53v37Ev
  virtual void  v38(); // _ZN6S618C53v38Ev
  virtual void  v39(); // _ZN6S618C53v39Ev
  virtual void  v40(); // _ZN6S618C53v40Ev
  virtual void  v41(); // _ZN6S618C53v41Ev
  virtual void  v42(); // _ZN6S618C53v42Ev
  virtual void  v43(); // _ZN6S618C53v43Ev
  virtual void  v44(); // _ZN6S618C53v44Ev
  virtual void  v45(); // _ZN6S618C53v45Ev
  virtual void  v46(); // _ZN6S618C53v46Ev
  virtual void  v47(); // _ZN6S618C53v47Ev
  virtual void  v48(); // _ZN6S618C53v48Ev
  virtual void  v49(); // _ZN6S618C53v49Ev
  virtual void  v50(); // _ZN6S618C53v50Ev
  virtual void  v51(); // _ZN6S618C53v51Ev
  virtual void  v52(); // _ZN6S618C53v52Ev
  virtual void  v53(); // _ZN6S618C53v53Ev
  virtual void  v54(); // _ZN6S618C53v54Ev
  virtual void  v55(); // _ZN6S618C53v55Ev
  virtual void  v56(); // _ZN6S618C53v56Ev
  virtual void  v57(); // _ZN6S618C53v57Ev
  virtual void  v58(); // _ZN6S618C53v58Ev
  virtual void  v59(); // _ZN6S618C53v59Ev
  virtual void  v60(); // _ZN6S618C53v60Ev
  virtual void  v61(); // _ZN6S618C53v61Ev
  virtual void  v62(); // _ZN6S618C53v62Ev
  virtual void  v63(); // _ZN6S618C53v63Ev
  virtual void  v64(); // _ZN6S618C53v64Ev
  virtual void  v65(); // _ZN6S618C53v65Ev
  virtual void  v66(); // _ZN6S618C53v66Ev
  virtual void  v67(); // _ZN6S618C53v67Ev
  virtual void  v68(); // _ZN6S618C53v68Ev
  S618C5(); // tgen
};
//SIG(-1 S618C5) 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]}


 S618C5 ::~S618C5(){ note_dtor("S618C5", this);}
void  S618C5 ::v5(){vfunc_called(this, "_ZN6S618C52v5Ev");}
void  S618C5 ::v6(){vfunc_called(this, "_ZN6S618C52v6Ev");}
void  S618C5 ::v7(){vfunc_called(this, "_ZN6S618C52v7Ev");}
void  S618C5 ::v8(){vfunc_called(this, "_ZN6S618C52v8Ev");}
void  S618C5 ::v9(){vfunc_called(this, "_ZN6S618C52v9Ev");}
void  S618C5 ::v10(){vfunc_called(this, "_ZN6S618C53v10Ev");}
void  S618C5 ::v11(){vfunc_called(this, "_ZN6S618C53v11Ev");}
void  S618C5 ::v12(){vfunc_called(this, "_ZN6S618C53v12Ev");}
void  S618C5 ::v13(){vfunc_called(this, "_ZN6S618C53v13Ev");}
void  S618C5 ::v14(){vfunc_called(this, "_ZN6S618C53v14Ev");}
void  S618C5 ::v15(){vfunc_called(this, "_ZN6S618C53v15Ev");}
void  S618C5 ::v16(){vfunc_called(this, "_ZN6S618C53v16Ev");}
void  S618C5 ::v17(){vfunc_called(this, "_ZN6S618C53v17Ev");}
void  S618C5 ::v18(){vfunc_called(this, "_ZN6S618C53v18Ev");}
void  S618C5 ::v19(){vfunc_called(this, "_ZN6S618C53v19Ev");}
void  S618C5 ::v20(){vfunc_called(this, "_ZN6S618C53v20Ev");}
void  S618C5 ::v21(){vfunc_called(this, "_ZN6S618C53v21Ev");}
void  S618C5 ::v22(){vfunc_called(this, "_ZN6S618C53v22Ev");}
void  S618C5 ::v23(){vfunc_called(this, "_ZN6S618C53v23Ev");}
void  S618C5 ::v24(){vfunc_called(this, "_ZN6S618C53v24Ev");}
void  S618C5 ::v25(){vfunc_called(this, "_ZN6S618C53v25Ev");}
void  S618C5 ::v26(){vfunc_called(this, "_ZN6S618C53v26Ev");}
void  S618C5 ::v27(){vfunc_called(this, "_ZN6S618C53v27Ev");}
void  S618C5 ::v28(){vfunc_called(this, "_ZN6S618C53v28Ev");}
void  S618C5 ::v29(){vfunc_called(this, "_ZN6S618C53v29Ev");}
void  S618C5 ::v30(){vfunc_called(this, "_ZN6S618C53v30Ev");}
void  S618C5 ::v31(){vfunc_called(this, "_ZN6S618C53v31Ev");}
void  S618C5 ::v32(){vfunc_called(this, "_ZN6S618C53v32Ev");}
void  S618C5 ::v33(){vfunc_called(this, "_ZN6S618C53v33Ev");}
void  S618C5 ::v34(){vfunc_called(this, "_ZN6S618C53v34Ev");}
void  S618C5 ::v35(){vfunc_called(this, "_ZN6S618C53v35Ev");}
void  S618C5 ::v36(){vfunc_called(this, "_ZN6S618C53v36Ev");}
void  S618C5 ::v37(){vfunc_called(this, "_ZN6S618C53v37Ev");}
void  S618C5 ::v38(){vfunc_called(this, "_ZN6S618C53v38Ev");}
void  S618C5 ::v39(){vfunc_called(this, "_ZN6S618C53v39Ev");}
void  S618C5 ::v40(){vfunc_called(this, "_ZN6S618C53v40Ev");}
void  S618C5 ::v41(){vfunc_called(this, "_ZN6S618C53v41Ev");}
void  S618C5 ::v42(){vfunc_called(this, "_ZN6S618C53v42Ev");}
void  S618C5 ::v43(){vfunc_called(this, "_ZN6S618C53v43Ev");}
void  S618C5 ::v44(){vfunc_called(this, "_ZN6S618C53v44Ev");}
void  S618C5 ::v45(){vfunc_called(this, "_ZN6S618C53v45Ev");}
void  S618C5 ::v46(){vfunc_called(this, "_ZN6S618C53v46Ev");}
void  S618C5 ::v47(){vfunc_called(this, "_ZN6S618C53v47Ev");}
void  S618C5 ::v48(){vfunc_called(this, "_ZN6S618C53v48Ev");}
void  S618C5 ::v49(){vfunc_called(this, "_ZN6S618C53v49Ev");}
void  S618C5 ::v50(){vfunc_called(this, "_ZN6S618C53v50Ev");}
void  S618C5 ::v51(){vfunc_called(this, "_ZN6S618C53v51Ev");}
void  S618C5 ::v52(){vfunc_called(this, "_ZN6S618C53v52Ev");}
void  S618C5 ::v53(){vfunc_called(this, "_ZN6S618C53v53Ev");}
void  S618C5 ::v54(){vfunc_called(this, "_ZN6S618C53v54Ev");}
void  S618C5 ::v55(){vfunc_called(this, "_ZN6S618C53v55Ev");}
void  S618C5 ::v56(){vfunc_called(this, "_ZN6S618C53v56Ev");}
void  S618C5 ::v57(){vfunc_called(this, "_ZN6S618C53v57Ev");}
void  S618C5 ::v58(){vfunc_called(this, "_ZN6S618C53v58Ev");}
void  S618C5 ::v59(){vfunc_called(this, "_ZN6S618C53v59Ev");}
void  S618C5 ::v60(){vfunc_called(this, "_ZN6S618C53v60Ev");}
void  S618C5 ::v61(){vfunc_called(this, "_ZN6S618C53v61Ev");}
void  S618C5 ::v62(){vfunc_called(this, "_ZN6S618C53v62Ev");}
void  S618C5 ::v63(){vfunc_called(this, "_ZN6S618C53v63Ev");}
void  S618C5 ::v64(){vfunc_called(this, "_ZN6S618C53v64Ev");}
void  S618C5 ::v65(){vfunc_called(this, "_ZN6S618C53v65Ev");}
void  S618C5 ::v66(){vfunc_called(this, "_ZN6S618C53v66Ev");}
void  S618C5 ::v67(){vfunc_called(this, "_ZN6S618C53v67Ev");}
void  S618C5 ::v68(){vfunc_called(this, "_ZN6S618C53v68Ev");}
S618C5 ::S618C5(){ note_ctor("S618C5", this);} // tgen

static void Test_S618C5()
{
  extern Class_Descriptor cd_S618C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S618C5, buf);
    S618C5 *dp, &lv = *(dp=new (buf) S618C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S618C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S618C5)");
    check_field_offset(lv, s618c5f0, ABISELECT(8,4), "S618C5.s618c5f0");
    check_field_offset(lv, s618c5f1, ABISELECT(16,8), "S618C5.s618c5f1");
    check_field_offset(lv, s618c5f2, ABISELECT(24,16), "S618C5.s618c5f2");
    check_field_offset(lv, s618c5f3, ABISELECT(56,32), "S618C5.s618c5f3");
    check_field_offset(lv, s618c5f4, ABISELECT(64,40), "S618C5.s618c5f4");
    check_field_offset(lv, s618c5f5, ABISELECT(72,44), "S618C5.s618c5f5");
    check_field_offset(lv, s618c5f6, ABISELECT(80,52), "S618C5.s618c5f6");
    test_class_info(&lv, &cd_S618C5);
    dp->~S618C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS618C5(Test_S618C5, "S618C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S618C5C1Ev();
extern void _ZN6S618C5D1Ev();
Name_Map name_map_S618C5[] = {
  NSPAIR(_ZN6S618C5C1Ev),
  NSPAIR(_ZN6S618C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S618C5[];
extern void _ZN6S618C5D1Ev();
extern void _ZN6S618C5D0Ev();
extern void _ZN6S618C52v5Ev();
extern void _ZN6S618C52v6Ev();
extern void _ZN6S618C52v7Ev();
extern void _ZN6S618C52v8Ev();
extern void _ZN6S618C52v9Ev();
extern void _ZN6S618C53v10Ev();
extern void _ZN6S618C53v11Ev();
extern void _ZN6S618C53v12Ev();
extern void _ZN6S618C53v13Ev();
extern void _ZN6S618C53v14Ev();
extern void _ZN6S618C53v15Ev();
extern void _ZN6S618C53v16Ev();
extern void _ZN6S618C53v17Ev();
extern void _ZN6S618C53v18Ev();
extern void _ZN6S618C53v19Ev();
extern void _ZN6S618C53v20Ev();
extern void _ZN6S618C53v21Ev();
extern void _ZN6S618C53v22Ev();
extern void _ZN6S618C53v23Ev();
extern void _ZN6S618C53v24Ev();
extern void _ZN6S618C53v25Ev();
extern void _ZN6S618C53v26Ev();
extern void _ZN6S618C53v27Ev();
extern void _ZN6S618C53v28Ev();
extern void _ZN6S618C53v29Ev();
extern void _ZN6S618C53v30Ev();
extern void _ZN6S618C53v31Ev();
extern void _ZN6S618C53v32Ev();
extern void _ZN6S618C53v33Ev();
extern void _ZN6S618C53v34Ev();
extern void _ZN6S618C53v35Ev();
extern void _ZN6S618C53v36Ev();
extern void _ZN6S618C53v37Ev();
extern void _ZN6S618C53v38Ev();
extern void _ZN6S618C53v39Ev();
extern void _ZN6S618C53v40Ev();
extern void _ZN6S618C53v41Ev();
extern void _ZN6S618C53v42Ev();
extern void _ZN6S618C53v43Ev();
extern void _ZN6S618C53v44Ev();
extern void _ZN6S618C53v45Ev();
extern void _ZN6S618C53v46Ev();
extern void _ZN6S618C53v47Ev();
extern void _ZN6S618C53v48Ev();
extern void _ZN6S618C53v49Ev();
extern void _ZN6S618C53v50Ev();
extern void _ZN6S618C53v51Ev();
extern void _ZN6S618C53v52Ev();
extern void _ZN6S618C53v53Ev();
extern void _ZN6S618C53v54Ev();
extern void _ZN6S618C53v55Ev();
extern void _ZN6S618C53v56Ev();
extern void _ZN6S618C53v57Ev();
extern void _ZN6S618C53v58Ev();
extern void _ZN6S618C53v59Ev();
extern void _ZN6S618C53v60Ev();
extern void _ZN6S618C53v61Ev();
extern void _ZN6S618C53v62Ev();
extern void _ZN6S618C53v63Ev();
extern void _ZN6S618C53v64Ev();
extern void _ZN6S618C53v65Ev();
extern void _ZN6S618C53v66Ev();
extern void _ZN6S618C53v67Ev();
extern void _ZN6S618C53v68Ev();
static  VTBL_ENTRY vtc_S618C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S618C5[0]),
  (VTBL_ENTRY)&_ZN6S618C5D1Ev,
  (VTBL_ENTRY)&_ZN6S618C5D0Ev,
  (VTBL_ENTRY)&_ZN6S618C52v5Ev,
  (VTBL_ENTRY)&_ZN6S618C52v6Ev,
  (VTBL_ENTRY)&_ZN6S618C52v7Ev,
  (VTBL_ENTRY)&_ZN6S618C52v8Ev,
  (VTBL_ENTRY)&_ZN6S618C52v9Ev,
  (VTBL_ENTRY)&_ZN6S618C53v10Ev,
  (VTBL_ENTRY)&_ZN6S618C53v11Ev,
  (VTBL_ENTRY)&_ZN6S618C53v12Ev,
  (VTBL_ENTRY)&_ZN6S618C53v13Ev,
  (VTBL_ENTRY)&_ZN6S618C53v14Ev,
  (VTBL_ENTRY)&_ZN6S618C53v15Ev,
  (VTBL_ENTRY)&_ZN6S618C53v16Ev,
  (VTBL_ENTRY)&_ZN6S618C53v17Ev,
  (VTBL_ENTRY)&_ZN6S618C53v18Ev,
  (VTBL_ENTRY)&_ZN6S618C53v19Ev,
  (VTBL_ENTRY)&_ZN6S618C53v20Ev,
  (VTBL_ENTRY)&_ZN6S618C53v21Ev,
  (VTBL_ENTRY)&_ZN6S618C53v22Ev,
  (VTBL_ENTRY)&_ZN6S618C53v23Ev,
  (VTBL_ENTRY)&_ZN6S618C53v24Ev,
  (VTBL_ENTRY)&_ZN6S618C53v25Ev,
  (VTBL_ENTRY)&_ZN6S618C53v26Ev,
  (VTBL_ENTRY)&_ZN6S618C53v27Ev,
  (VTBL_ENTRY)&_ZN6S618C53v28Ev,
  (VTBL_ENTRY)&_ZN6S618C53v29Ev,
  (VTBL_ENTRY)&_ZN6S618C53v30Ev,
  (VTBL_ENTRY)&_ZN6S618C53v31Ev,
  (VTBL_ENTRY)&_ZN6S618C53v32Ev,
  (VTBL_ENTRY)&_ZN6S618C53v33Ev,
  (VTBL_ENTRY)&_ZN6S618C53v34Ev,
  (VTBL_ENTRY)&_ZN6S618C53v35Ev,
  (VTBL_ENTRY)&_ZN6S618C53v36Ev,
  (VTBL_ENTRY)&_ZN6S618C53v37Ev,
  (VTBL_ENTRY)&_ZN6S618C53v38Ev,
  (VTBL_ENTRY)&_ZN6S618C53v39Ev,
  (VTBL_ENTRY)&_ZN6S618C53v40Ev,
  (VTBL_ENTRY)&_ZN6S618C53v41Ev,
  (VTBL_ENTRY)&_ZN6S618C53v42Ev,
  (VTBL_ENTRY)&_ZN6S618C53v43Ev,
  (VTBL_ENTRY)&_ZN6S618C53v44Ev,
  (VTBL_ENTRY)&_ZN6S618C53v45Ev,
  (VTBL_ENTRY)&_ZN6S618C53v46Ev,
  (VTBL_ENTRY)&_ZN6S618C53v47Ev,
  (VTBL_ENTRY)&_ZN6S618C53v48Ev,
  (VTBL_ENTRY)&_ZN6S618C53v49Ev,
  (VTBL_ENTRY)&_ZN6S618C53v50Ev,
  (VTBL_ENTRY)&_ZN6S618C53v51Ev,
  (VTBL_ENTRY)&_ZN6S618C53v52Ev,
  (VTBL_ENTRY)&_ZN6S618C53v53Ev,
  (VTBL_ENTRY)&_ZN6S618C53v54Ev,
  (VTBL_ENTRY)&_ZN6S618C53v55Ev,
  (VTBL_ENTRY)&_ZN6S618C53v56Ev,
  (VTBL_ENTRY)&_ZN6S618C53v57Ev,
  (VTBL_ENTRY)&_ZN6S618C53v58Ev,
  (VTBL_ENTRY)&_ZN6S618C53v59Ev,
  (VTBL_ENTRY)&_ZN6S618C53v60Ev,
  (VTBL_ENTRY)&_ZN6S618C53v61Ev,
  (VTBL_ENTRY)&_ZN6S618C53v62Ev,
  (VTBL_ENTRY)&_ZN6S618C53v63Ev,
  (VTBL_ENTRY)&_ZN6S618C53v64Ev,
  (VTBL_ENTRY)&_ZN6S618C53v65Ev,
  (VTBL_ENTRY)&_ZN6S618C53v66Ev,
  (VTBL_ENTRY)&_ZN6S618C53v67Ev,
  (VTBL_ENTRY)&_ZN6S618C53v68Ev,
};
extern VTBL_ENTRY _ZTI6S618C5[];
extern  VTBL_ENTRY _ZTV6S618C5[];
Class_Descriptor cd_S618C5 = {  "S618C5", // class name
  0,0,//no base classes
  &(vtc_S618C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S618C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S618C5),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  S618C13_nt  {
  int s618c13f0[4];
  void  mf618c13(); // _ZN10S618C13_nt8mf618c13Ev
};
//SIG(-1 S618C13_nt) C1{ m Fi[4]}


void  S618C13_nt ::mf618c13(){}

//skip512 S618C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S618C12_nt  {
  ::S618C13_nt s618c12f0;
  ::S3223C13_nt s618c12f1;
  int s618c12f2;
  void  mf618c12(); // _ZN10S618C12_nt8mf618c12Ev
};
//SIG(-1 S618C12_nt) C1{ m FC2{ m Fi[4]} FC3{ m Fi[3]} Fi}


void  S618C12_nt ::mf618c12(){}

//skip512 S618C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S618C4_nt  : S618C5 {
  void *s618c4f0;
  ::S3223C17 s618c4f1;
  ::S3223C4_nt s618c4f2;
  ::S3223C11 s618c4f3;
  ::S618C12_nt s618c4f4;
  int s618c4f5;
  unsigned int s618c4f6:1;
  unsigned int s618c4f7:1;
  unsigned int s618c4f8:1;
  unsigned int s618c4f9:1;
  int s618c4f10[11];
  virtual  ~S618C4_nt(); // _ZN9S618C4_ntD1Ev
  virtual void  v69(); // _ZN9S618C4_nt3v69Ev
  virtual void  v70(); // _ZN9S618C4_nt3v70Ev
  virtual void  v71(); // _ZN9S618C4_nt3v71Ev
  virtual void  v72(); // _ZN9S618C4_nt3v72Ev
  virtual void  v73(); // _ZN9S618C4_nt3v73Ev
  virtual void  v74(); // _ZN9S618C4_nt3v74Ev
  virtual void  v75(); // _ZN9S618C4_nt3v75Ev
  virtual void  v76(); // _ZN9S618C4_nt3v76Ev
  virtual void  v77(); // _ZN9S618C4_nt3v77Ev
  virtual void  v78(); // _ZN9S618C4_nt3v78Ev
  virtual void  v79(); // _ZN9S618C4_nt3v79Ev
  virtual void  v80(); // _ZN9S618C4_nt3v80Ev
  virtual void  v81(); // _ZN9S618C4_nt3v81Ev
  virtual void  v82(); // _ZN9S618C4_nt3v82Ev
  virtual void  v83(); // _ZN9S618C4_nt3v83Ev
  virtual void  v84(); // _ZN9S618C4_nt3v84Ev
  virtual void  v85(); // _ZN9S618C4_nt3v85Ev
  virtual void  v86(); // _ZN9S618C4_nt3v86Ev
  virtual void  v87(); // _ZN9S618C4_nt3v87Ev
  virtual void  v88(); // _ZN9S618C4_nt3v88Ev
  virtual void  v89(); // _ZN9S618C4_nt3v89Ev
  virtual void  v90(); // _ZN9S618C4_nt3v90Ev
  virtual void  v91(); // _ZN9S618C4_nt3v91Ev
  virtual void  v92(); // _ZN9S618C4_nt3v92Ev
  virtual void  v93(); // _ZN9S618C4_nt3v93Ev
  virtual void  v94(); // _ZN9S618C4_nt3v94Ev
  virtual void  v95(); // _ZN9S618C4_nt3v95Ev
  S618C4_nt(); // tgen
};
//SIG(-1 S618C4_nt) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 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 Fp FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC3 FC7{ BC8{ BC6}} FC9{ m FC10{ m Fi[4]} FC11{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]}


 S618C4_nt ::~S618C4_nt(){ note_dtor("S618C4_nt", this);}
void  S618C4_nt ::v69(){vfunc_called(this, "_ZN9S618C4_nt3v69Ev");}
void  S618C4_nt ::v70(){vfunc_called(this, "_ZN9S618C4_nt3v70Ev");}
void  S618C4_nt ::v71(){vfunc_called(this, "_ZN9S618C4_nt3v71Ev");}
void  S618C4_nt ::v72(){vfunc_called(this, "_ZN9S618C4_nt3v72Ev");}
void  S618C4_nt ::v73(){vfunc_called(this, "_ZN9S618C4_nt3v73Ev");}
void  S618C4_nt ::v74(){vfunc_called(this, "_ZN9S618C4_nt3v74Ev");}
void  S618C4_nt ::v75(){vfunc_called(this, "_ZN9S618C4_nt3v75Ev");}
void  S618C4_nt ::v76(){vfunc_called(this, "_ZN9S618C4_nt3v76Ev");}
void  S618C4_nt ::v77(){vfunc_called(this, "_ZN9S618C4_nt3v77Ev");}
void  S618C4_nt ::v78(){vfunc_called(this, "_ZN9S618C4_nt3v78Ev");}
void  S618C4_nt ::v79(){vfunc_called(this, "_ZN9S618C4_nt3v79Ev");}
void  S618C4_nt ::v80(){vfunc_called(this, "_ZN9S618C4_nt3v80Ev");}
void  S618C4_nt ::v81(){vfunc_called(this, "_ZN9S618C4_nt3v81Ev");}
void  S618C4_nt ::v82(){vfunc_called(this, "_ZN9S618C4_nt3v82Ev");}
void  S618C4_nt ::v83(){vfunc_called(this, "_ZN9S618C4_nt3v83Ev");}
void  S618C4_nt ::v84(){vfunc_called(this, "_ZN9S618C4_nt3v84Ev");}
void  S618C4_nt ::v85(){vfunc_called(this, "_ZN9S618C4_nt3v85Ev");}
void  S618C4_nt ::v86(){vfunc_called(this, "_ZN9S618C4_nt3v86Ev");}
void  S618C4_nt ::v87(){vfunc_called(this, "_ZN9S618C4_nt3v87Ev");}
void  S618C4_nt ::v88(){vfunc_called(this, "_ZN9S618C4_nt3v88Ev");}
void  S618C4_nt ::v89(){vfunc_called(this, "_ZN9S618C4_nt3v89Ev");}
void  S618C4_nt ::v90(){vfunc_called(this, "_ZN9S618C4_nt3v90Ev");}
void  S618C4_nt ::v91(){vfunc_called(this, "_ZN9S618C4_nt3v91Ev");}
void  S618C4_nt ::v92(){vfunc_called(this, "_ZN9S618C4_nt3v92Ev");}
void  S618C4_nt ::v93(){vfunc_called(this, "_ZN9S618C4_nt3v93Ev");}
void  S618C4_nt ::v94(){vfunc_called(this, "_ZN9S618C4_nt3v94Ev");}
void  S618C4_nt ::v95(){vfunc_called(this, "_ZN9S618C4_nt3v95Ev");}
S618C4_nt ::S618C4_nt(){ note_ctor("S618C4_nt", this);} // tgen

//skip512 S618C4_nt

#else // __cplusplus

extern void _ZN9S618C4_ntC1Ev();
extern void _ZN9S618C4_ntD1Ev();
Name_Map name_map_S618C4_nt[] = {
  NSPAIR(_ZN9S618C4_ntC1Ev),
  NSPAIR(_ZN9S618C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S618C5;
extern VTBL_ENTRY _ZTI6S618C5[];
extern  VTBL_ENTRY _ZTV6S618C5[];
static Base_Class bases_S618C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S618C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S618C4_nt[];
extern void _ZN9S618C4_ntD1Ev();
extern void _ZN9S618C4_ntD0Ev();
extern void _ZN6S618C52v5Ev();
extern void _ZN6S618C52v6Ev();
extern void _ZN6S618C52v7Ev();
extern void _ZN6S618C52v8Ev();
extern void _ZN6S618C52v9Ev();
extern void _ZN6S618C53v10Ev();
extern void _ZN6S618C53v11Ev();
extern void _ZN6S618C53v12Ev();
extern void _ZN6S618C53v13Ev();
extern void _ZN6S618C53v14Ev();
extern void _ZN6S618C53v15Ev();
extern void _ZN6S618C53v16Ev();
extern void _ZN6S618C53v17Ev();
extern void _ZN6S618C53v18Ev();
extern void _ZN6S618C53v19Ev();
extern void _ZN6S618C53v20Ev();
extern void _ZN6S618C53v21Ev();
extern void _ZN6S618C53v22Ev();
extern void _ZN6S618C53v23Ev();
extern void _ZN6S618C53v24Ev();
extern void _ZN6S618C53v25Ev();
extern void _ZN6S618C53v26Ev();
extern void _ZN6S618C53v27Ev();
extern void _ZN6S618C53v28Ev();
extern void _ZN6S618C53v29Ev();
extern void _ZN6S618C53v30Ev();
extern void _ZN6S618C53v31Ev();
extern void _ZN6S618C53v32Ev();
extern void _ZN6S618C53v33Ev();
extern void _ZN6S618C53v34Ev();
extern void _ZN6S618C53v35Ev();
extern void _ZN6S618C53v36Ev();
extern void _ZN6S618C53v37Ev();
extern void _ZN6S618C53v38Ev();
extern void _ZN6S618C53v39Ev();
extern void _ZN6S618C53v40Ev();
extern void _ZN6S618C53v41Ev();
extern void _ZN6S618C53v42Ev();
extern void _ZN6S618C53v43Ev();
extern void _ZN6S618C53v44Ev();
extern void _ZN6S618C53v45Ev();
extern void _ZN6S618C53v46Ev();
extern void _ZN6S618C53v47Ev();
extern void _ZN6S618C53v48Ev();
extern void _ZN6S618C53v49Ev();
extern void _ZN6S618C53v50Ev();
extern void _ZN6S618C53v51Ev();
extern void _ZN6S618C53v52Ev();
extern void _ZN6S618C53v53Ev();
extern void _ZN6S618C53v54Ev();
extern void _ZN6S618C53v55Ev();
extern void _ZN6S618C53v56Ev();
extern void _ZN6S618C53v57Ev();
extern void _ZN6S618C53v58Ev();
extern void _ZN6S618C53v59Ev();
extern void _ZN6S618C53v60Ev();
extern void _ZN6S618C53v61Ev();
extern void _ZN6S618C53v62Ev();
extern void _ZN6S618C53v63Ev();
extern void _ZN6S618C53v64Ev();
extern void _ZN6S618C53v65Ev();
extern void _ZN6S618C53v66Ev();
extern void _ZN6S618C53v67Ev();
extern void _ZN6S618C53v68Ev();
extern void _ZN9S618C4_nt3v69Ev();
extern void _ZN9S618C4_nt3v70Ev();
extern void _ZN9S618C4_nt3v71Ev();
extern void _ZN9S618C4_nt3v72Ev();
extern void _ZN9S618C4_nt3v73Ev();
extern void _ZN9S618C4_nt3v74Ev();
extern void _ZN9S618C4_nt3v75Ev();
extern void _ZN9S618C4_nt3v76Ev();
extern void _ZN9S618C4_nt3v77Ev();
extern void _ZN9S618C4_nt3v78Ev();
extern void _ZN9S618C4_nt3v79Ev();
extern void _ZN9S618C4_nt3v80Ev();
extern void _ZN9S618C4_nt3v81Ev();
extern void _ZN9S618C4_nt3v82Ev();
extern void _ZN9S618C4_nt3v83Ev();
extern void _ZN9S618C4_nt3v84Ev();
extern void _ZN9S618C4_nt3v85Ev();
extern void _ZN9S618C4_nt3v86Ev();
extern void _ZN9S618C4_nt3v87Ev();
extern void _ZN9S618C4_nt3v88Ev();
extern void _ZN9S618C4_nt3v89Ev();
extern void _ZN9S618C4_nt3v90Ev();
extern void _ZN9S618C4_nt3v91Ev();
extern void _ZN9S618C4_nt3v92Ev();
extern void _ZN9S618C4_nt3v93Ev();
extern void _ZN9S618C4_nt3v94Ev();
extern void _ZN9S618C4_nt3v95Ev();
static  VTBL_ENTRY vtc_S618C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S618C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S618C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S618C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S618C52v5Ev,
  (VTBL_ENTRY)&_ZN6S618C52v6Ev,
  (VTBL_ENTRY)&_ZN6S618C52v7Ev,
  (VTBL_ENTRY)&_ZN6S618C52v8Ev,
  (VTBL_ENTRY)&_ZN6S618C52v9Ev,
  (VTBL_ENTRY)&_ZN6S618C53v10Ev,
  (VTBL_ENTRY)&_ZN6S618C53v11Ev,
  (VTBL_ENTRY)&_ZN6S618C53v12Ev,
  (VTBL_ENTRY)&_ZN6S618C53v13Ev,
  (VTBL_ENTRY)&_ZN6S618C53v14Ev,
  (VTBL_ENTRY)&_ZN6S618C53v15Ev,
  (VTBL_ENTRY)&_ZN6S618C53v16Ev,
  (VTBL_ENTRY)&_ZN6S618C53v17Ev,
  (VTBL_ENTRY)&_ZN6S618C53v18Ev,
  (VTBL_ENTRY)&_ZN6S618C53v19Ev,
  (VTBL_ENTRY)&_ZN6S618C53v20Ev,
  (VTBL_ENTRY)&_ZN6S618C53v21Ev,
  (VTBL_ENTRY)&_ZN6S618C53v22Ev,
  (VTBL_ENTRY)&_ZN6S618C53v23Ev,
  (VTBL_ENTRY)&_ZN6S618C53v24Ev,
  (VTBL_ENTRY)&_ZN6S618C53v25Ev,
  (VTBL_ENTRY)&_ZN6S618C53v26Ev,
  (VTBL_ENTRY)&_ZN6S618C53v27Ev,
  (VTBL_ENTRY)&_ZN6S618C53v28Ev,
  (VTBL_ENTRY)&_ZN6S618C53v29Ev,
  (VTBL_ENTRY)&_ZN6S618C53v30Ev,
  (VTBL_ENTRY)&_ZN6S618C53v31Ev,
  (VTBL_ENTRY)&_ZN6S618C53v32Ev,
  (VTBL_ENTRY)&_ZN6S618C53v33Ev,
  (VTBL_ENTRY)&_ZN6S618C53v34Ev,
  (VTBL_ENTRY)&_ZN6S618C53v35Ev,
  (VTBL_ENTRY)&_ZN6S618C53v36Ev,
  (VTBL_ENTRY)&_ZN6S618C53v37Ev,
  (VTBL_ENTRY)&_ZN6S618C53v38Ev,
  (VTBL_ENTRY)&_ZN6S618C53v39Ev,
  (VTBL_ENTRY)&_ZN6S618C53v40Ev,
  (VTBL_ENTRY)&_ZN6S618C53v41Ev,
  (VTBL_ENTRY)&_ZN6S618C53v42Ev,
  (VTBL_ENTRY)&_ZN6S618C53v43Ev,
  (VTBL_ENTRY)&_ZN6S618C53v44Ev,
  (VTBL_ENTRY)&_ZN6S618C53v45Ev,
  (VTBL_ENTRY)&_ZN6S618C53v46Ev,
  (VTBL_ENTRY)&_ZN6S618C53v47Ev,
  (VTBL_ENTRY)&_ZN6S618C53v48Ev,
  (VTBL_ENTRY)&_ZN6S618C53v49Ev,
  (VTBL_ENTRY)&_ZN6S618C53v50Ev,
  (VTBL_ENTRY)&_ZN6S618C53v51Ev,
  (VTBL_ENTRY)&_ZN6S618C53v52Ev,
  (VTBL_ENTRY)&_ZN6S618C53v53Ev,
  (VTBL_ENTRY)&_ZN6S618C53v54Ev,
  (VTBL_ENTRY)&_ZN6S618C53v55Ev,
  (VTBL_ENTRY)&_ZN6S618C53v56Ev,
  (VTBL_ENTRY)&_ZN6S618C53v57Ev,
  (VTBL_ENTRY)&_ZN6S618C53v58Ev,
  (VTBL_ENTRY)&_ZN6S618C53v59Ev,
  (VTBL_ENTRY)&_ZN6S618C53v60Ev,
  (VTBL_ENTRY)&_ZN6S618C53v61Ev,
  (VTBL_ENTRY)&_ZN6S618C53v62Ev,
  (VTBL_ENTRY)&_ZN6S618C53v63Ev,
  (VTBL_ENTRY)&_ZN6S618C53v64Ev,
  (VTBL_ENTRY)&_ZN6S618C53v65Ev,
  (VTBL_ENTRY)&_ZN6S618C53v66Ev,
  (VTBL_ENTRY)&_ZN6S618C53v67Ev,
  (VTBL_ENTRY)&_ZN6S618C53v68Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v95Ev,
};
extern VTBL_ENTRY _ZTI9S618C4_nt[];
VTBL_ENTRY *P__ZTI9S618C4_nt = _ZTI9S618C4_nt; 
extern  VTBL_ENTRY _ZTV9S618C4_nt[];
Class_Descriptor cd_S618C4_nt = {  "S618C4_nt", // class name
  bases_S618C4_nt, 1,
  &(vtc_S618C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,180), // object size
  NSPAIRA(_ZTI9S618C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S618C4_nt),95, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S618C3_nt  : S618C4_nt {
  ::S3223C5_nt s618c3f0;
  unsigned int s618c3f1:1;
  virtual  ~S618C3_nt(); // _ZN9S618C3_ntD1Ev
  virtual void  v96(); // _ZN9S618C3_nt3v96Ev
  virtual void  v97(); // _ZN9S618C3_nt3v97Ev
  virtual void  v98(); // _ZN9S618C3_nt3v98Ev
  virtual void  v99(); // _ZN9S618C3_nt3v99Ev
  virtual void  v100(); // _ZN9S618C3_nt4v100Ev
  virtual void  v101(); // _ZN9S618C3_nt4v101Ev
  virtual void  v102(); // _ZN9S618C3_nt4v102Ev
  virtual void  v103(); // _ZN9S618C3_nt4v103Ev
  virtual void  v104(); // _ZN9S618C3_nt4v104Ev
  virtual void  v105(); // _ZN9S618C3_nt4v105Ev
  virtual void  v106(); // _ZN9S618C3_nt4v106Ev
  virtual void  v107(); // _ZN9S618C3_nt4v107Ev
  virtual void  v108(); // _ZN9S618C3_nt4v108Ev
  virtual void  v109(); // _ZN9S618C3_nt4v109Ev
  virtual void  v110(); // _ZN9S618C3_nt4v110Ev
  virtual void  v111(); // _ZN9S618C3_nt4v111Ev
  virtual void  v112(); // _ZN9S618C3_nt4v112Ev
  virtual void  v113(); // _ZN9S618C3_nt4v113Ev
  S618C3_nt(); // tgen
};
//SIG(-1 S618C3_nt) 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 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd 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 Fp FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC4 FC8{ BC9{ BC7}} FC10{ m FC11{ m Fi[4]} FC12{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 FC13{ BC14{ BC7}} Fi:1}


 S618C3_nt ::~S618C3_nt(){ note_dtor("S618C3_nt", this);}
void  S618C3_nt ::v96(){vfunc_called(this, "_ZN9S618C3_nt3v96Ev");}
void  S618C3_nt ::v97(){vfunc_called(this, "_ZN9S618C3_nt3v97Ev");}
void  S618C3_nt ::v98(){vfunc_called(this, "_ZN9S618C3_nt3v98Ev");}
void  S618C3_nt ::v99(){vfunc_called(this, "_ZN9S618C3_nt3v99Ev");}
void  S618C3_nt ::v100(){vfunc_called(this, "_ZN9S618C3_nt4v100Ev");}
void  S618C3_nt ::v101(){vfunc_called(this, "_ZN9S618C3_nt4v101Ev");}
void  S618C3_nt ::v102(){vfunc_called(this, "_ZN9S618C3_nt4v102Ev");}
void  S618C3_nt ::v103(){vfunc_called(this, "_ZN9S618C3_nt4v103Ev");}
void  S618C3_nt ::v104(){vfunc_called(this, "_ZN9S618C3_nt4v104Ev");}
void  S618C3_nt ::v105(){vfunc_called(this, "_ZN9S618C3_nt4v105Ev");}
void  S618C3_nt ::v106(){vfunc_called(this, "_ZN9S618C3_nt4v106Ev");}
void  S618C3_nt ::v107(){vfunc_called(this, "_ZN9S618C3_nt4v107Ev");}
void  S618C3_nt ::v108(){vfunc_called(this, "_ZN9S618C3_nt4v108Ev");}
void  S618C3_nt ::v109(){vfunc_called(this, "_ZN9S618C3_nt4v109Ev");}
void  S618C3_nt ::v110(){vfunc_called(this, "_ZN9S618C3_nt4v110Ev");}
void  S618C3_nt ::v111(){vfunc_called(this, "_ZN9S618C3_nt4v111Ev");}
void  S618C3_nt ::v112(){vfunc_called(this, "_ZN9S618C3_nt4v112Ev");}
void  S618C3_nt ::v113(){vfunc_called(this, "_ZN9S618C3_nt4v113Ev");}
S618C3_nt ::S618C3_nt(){ note_ctor("S618C3_nt", this);} // tgen

//skip512 S618C3_nt

#else // __cplusplus

extern void _ZN9S618C3_ntC1Ev();
extern void _ZN9S618C3_ntD1Ev();
Name_Map name_map_S618C3_nt[] = {
  NSPAIR(_ZN9S618C3_ntC1Ev),
  NSPAIR(_ZN9S618C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S618C5;
extern VTBL_ENTRY _ZTI6S618C5[];
extern  VTBL_ENTRY _ZTV6S618C5[];
extern Class_Descriptor cd_S618C4_nt;
extern VTBL_ENTRY _ZTI9S618C4_nt[];
extern  VTBL_ENTRY _ZTV9S618C4_nt[];
static Base_Class bases_S618C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S618C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S618C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S618C3_nt[];
extern void _ZN9S618C3_ntD1Ev();
extern void _ZN9S618C3_ntD0Ev();
extern void _ZN6S618C52v5Ev();
extern void _ZN6S618C52v6Ev();
extern void _ZN6S618C52v7Ev();
extern void _ZN6S618C52v8Ev();
extern void _ZN6S618C52v9Ev();
extern void _ZN6S618C53v10Ev();
extern void _ZN6S618C53v11Ev();
extern void _ZN6S618C53v12Ev();
extern void _ZN6S618C53v13Ev();
extern void _ZN6S618C53v14Ev();
extern void _ZN6S618C53v15Ev();
extern void _ZN6S618C53v16Ev();
extern void _ZN6S618C53v17Ev();
extern void _ZN6S618C53v18Ev();
extern void _ZN6S618C53v19Ev();
extern void _ZN6S618C53v20Ev();
extern void _ZN6S618C53v21Ev();
extern void _ZN6S618C53v22Ev();
extern void _ZN6S618C53v23Ev();
extern void _ZN6S618C53v24Ev();
extern void _ZN6S618C53v25Ev();
extern void _ZN6S618C53v26Ev();
extern void _ZN6S618C53v27Ev();
extern void _ZN6S618C53v28Ev();
extern void _ZN6S618C53v29Ev();
extern void _ZN6S618C53v30Ev();
extern void _ZN6S618C53v31Ev();
extern void _ZN6S618C53v32Ev();
extern void _ZN6S618C53v33Ev();
extern void _ZN6S618C53v34Ev();
extern void _ZN6S618C53v35Ev();
extern void _ZN6S618C53v36Ev();
extern void _ZN6S618C53v37Ev();
extern void _ZN6S618C53v38Ev();
extern void _ZN6S618C53v39Ev();
extern void _ZN6S618C53v40Ev();
extern void _ZN6S618C53v41Ev();
extern void _ZN6S618C53v42Ev();
extern void _ZN6S618C53v43Ev();
extern void _ZN6S618C53v44Ev();
extern void _ZN6S618C53v45Ev();
extern void _ZN6S618C53v46Ev();
extern void _ZN6S618C53v47Ev();
extern void _ZN6S618C53v48Ev();
extern void _ZN6S618C53v49Ev();
extern void _ZN6S618C53v50Ev();
extern void _ZN6S618C53v51Ev();
extern void _ZN6S618C53v52Ev();
extern void _ZN6S618C53v53Ev();
extern void _ZN6S618C53v54Ev();
extern void _ZN6S618C53v55Ev();
extern void _ZN6S618C53v56Ev();
extern void _ZN6S618C53v57Ev();
extern void _ZN6S618C53v58Ev();
extern void _ZN6S618C53v59Ev();
extern void _ZN6S618C53v60Ev();
extern void _ZN6S618C53v61Ev();
extern void _ZN6S618C53v62Ev();
extern void _ZN6S618C53v63Ev();
extern void _ZN6S618C53v64Ev();
extern void _ZN6S618C53v65Ev();
extern void _ZN6S618C53v66Ev();
extern void _ZN6S618C53v67Ev();
extern void _ZN6S618C53v68Ev();
extern void _ZN9S618C4_nt3v69Ev();
extern void _ZN9S618C4_nt3v70Ev();
extern void _ZN9S618C4_nt3v71Ev();
extern void _ZN9S618C4_nt3v72Ev();
extern void _ZN9S618C4_nt3v73Ev();
extern void _ZN9S618C4_nt3v74Ev();
extern void _ZN9S618C4_nt3v75Ev();
extern void _ZN9S618C4_nt3v76Ev();
extern void _ZN9S618C4_nt3v77Ev();
extern void _ZN9S618C4_nt3v78Ev();
extern void _ZN9S618C4_nt3v79Ev();
extern void _ZN9S618C4_nt3v80Ev();
extern void _ZN9S618C4_nt3v81Ev();
extern void _ZN9S618C4_nt3v82Ev();
extern void _ZN9S618C4_nt3v83Ev();
extern void _ZN9S618C4_nt3v84Ev();
extern void _ZN9S618C4_nt3v85Ev();
extern void _ZN9S618C4_nt3v86Ev();
extern void _ZN9S618C4_nt3v87Ev();
extern void _ZN9S618C4_nt3v88Ev();
extern void _ZN9S618C4_nt3v89Ev();
extern void _ZN9S618C4_nt3v90Ev();
extern void _ZN9S618C4_nt3v91Ev();
extern void _ZN9S618C4_nt3v92Ev();
extern void _ZN9S618C4_nt3v93Ev();
extern void _ZN9S618C4_nt3v94Ev();
extern void _ZN9S618C4_nt3v95Ev();
extern void _ZN9S618C3_nt3v96Ev();
extern void _ZN9S618C3_nt3v97Ev();
extern void _ZN9S618C3_nt3v98Ev();
extern void _ZN9S618C3_nt3v99Ev();
extern void _ZN9S618C3_nt4v100Ev();
extern void _ZN9S618C3_nt4v101Ev();
extern void _ZN9S618C3_nt4v102Ev();
extern void _ZN9S618C3_nt4v103Ev();
extern void _ZN9S618C3_nt4v104Ev();
extern void _ZN9S618C3_nt4v105Ev();
extern void _ZN9S618C3_nt4v106Ev();
extern void _ZN9S618C3_nt4v107Ev();
extern void _ZN9S618C3_nt4v108Ev();
extern void _ZN9S618C3_nt4v109Ev();
extern void _ZN9S618C3_nt4v110Ev();
extern void _ZN9S618C3_nt4v111Ev();
extern void _ZN9S618C3_nt4v112Ev();
extern void _ZN9S618C3_nt4v113Ev();
static  VTBL_ENTRY vtc_S618C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S618C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S618C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S618C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S618C52v5Ev,
  (VTBL_ENTRY)&_ZN6S618C52v6Ev,
  (VTBL_ENTRY)&_ZN6S618C52v7Ev,
  (VTBL_ENTRY)&_ZN6S618C52v8Ev,
  (VTBL_ENTRY)&_ZN6S618C52v9Ev,
  (VTBL_ENTRY)&_ZN6S618C53v10Ev,
  (VTBL_ENTRY)&_ZN6S618C53v11Ev,
  (VTBL_ENTRY)&_ZN6S618C53v12Ev,
  (VTBL_ENTRY)&_ZN6S618C53v13Ev,
  (VTBL_ENTRY)&_ZN6S618C53v14Ev,
  (VTBL_ENTRY)&_ZN6S618C53v15Ev,
  (VTBL_ENTRY)&_ZN6S618C53v16Ev,
  (VTBL_ENTRY)&_ZN6S618C53v17Ev,
  (VTBL_ENTRY)&_ZN6S618C53v18Ev,
  (VTBL_ENTRY)&_ZN6S618C53v19Ev,
  (VTBL_ENTRY)&_ZN6S618C53v20Ev,
  (VTBL_ENTRY)&_ZN6S618C53v21Ev,
  (VTBL_ENTRY)&_ZN6S618C53v22Ev,
  (VTBL_ENTRY)&_ZN6S618C53v23Ev,
  (VTBL_ENTRY)&_ZN6S618C53v24Ev,
  (VTBL_ENTRY)&_ZN6S618C53v25Ev,
  (VTBL_ENTRY)&_ZN6S618C53v26Ev,
  (VTBL_ENTRY)&_ZN6S618C53v27Ev,
  (VTBL_ENTRY)&_ZN6S618C53v28Ev,
  (VTBL_ENTRY)&_ZN6S618C53v29Ev,
  (VTBL_ENTRY)&_ZN6S618C53v30Ev,
  (VTBL_ENTRY)&_ZN6S618C53v31Ev,
  (VTBL_ENTRY)&_ZN6S618C53v32Ev,
  (VTBL_ENTRY)&_ZN6S618C53v33Ev,
  (VTBL_ENTRY)&_ZN6S618C53v34Ev,
  (VTBL_ENTRY)&_ZN6S618C53v35Ev,
  (VTBL_ENTRY)&_ZN6S618C53v36Ev,
  (VTBL_ENTRY)&_ZN6S618C53v37Ev,
  (VTBL_ENTRY)&_ZN6S618C53v38Ev,
  (VTBL_ENTRY)&_ZN6S618C53v39Ev,
  (VTBL_ENTRY)&_ZN6S618C53v40Ev,
  (VTBL_ENTRY)&_ZN6S618C53v41Ev,
  (VTBL_ENTRY)&_ZN6S618C53v42Ev,
  (VTBL_ENTRY)&_ZN6S618C53v43Ev,
  (VTBL_ENTRY)&_ZN6S618C53v44Ev,
  (VTBL_ENTRY)&_ZN6S618C53v45Ev,
  (VTBL_ENTRY)&_ZN6S618C53v46Ev,
  (VTBL_ENTRY)&_ZN6S618C53v47Ev,
  (VTBL_ENTRY)&_ZN6S618C53v48Ev,
  (VTBL_ENTRY)&_ZN6S618C53v49Ev,
  (VTBL_ENTRY)&_ZN6S618C53v50Ev,
  (VTBL_ENTRY)&_ZN6S618C53v51Ev,
  (VTBL_ENTRY)&_ZN6S618C53v52Ev,
  (VTBL_ENTRY)&_ZN6S618C53v53Ev,
  (VTBL_ENTRY)&_ZN6S618C53v54Ev,
  (VTBL_ENTRY)&_ZN6S618C53v55Ev,
  (VTBL_ENTRY)&_ZN6S618C53v56Ev,
  (VTBL_ENTRY)&_ZN6S618C53v57Ev,
  (VTBL_ENTRY)&_ZN6S618C53v58Ev,
  (VTBL_ENTRY)&_ZN6S618C53v59Ev,
  (VTBL_ENTRY)&_ZN6S618C53v60Ev,
  (VTBL_ENTRY)&_ZN6S618C53v61Ev,
  (VTBL_ENTRY)&_ZN6S618C53v62Ev,
  (VTBL_ENTRY)&_ZN6S618C53v63Ev,
  (VTBL_ENTRY)&_ZN6S618C53v64Ev,
  (VTBL_ENTRY)&_ZN6S618C53v65Ev,
  (VTBL_ENTRY)&_ZN6S618C53v66Ev,
  (VTBL_ENTRY)&_ZN6S618C53v67Ev,
  (VTBL_ENTRY)&_ZN6S618C53v68Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S618C3_nt[];
VTBL_ENTRY *P__ZTI9S618C3_nt = _ZTI9S618C3_nt; 
extern  VTBL_ENTRY _ZTV9S618C3_nt[];
Class_Descriptor cd_S618C3_nt = {  "S618C3_nt", // class name
  bases_S618C3_nt, 2,
  &(vtc_S618C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,196), // object size
  NSPAIRA(_ZTI9S618C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S618C3_nt),113, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S618C2_nt  : S618C3_nt {
  int s618c2f0[3];
  virtual  ~S618C2_nt(); // _ZN9S618C2_ntD1Ev
  virtual void  v114(); // _ZN9S618C2_nt4v114Ev
  virtual void  v115(); // _ZN9S618C2_nt4v115Ev
  virtual void  v116(); // _ZN9S618C2_nt4v116Ev
  virtual void  v117(); // _ZN9S618C2_nt4v117Ev
  virtual void  v118(); // _ZN9S618C2_nt4v118Ev
  virtual void  v119(); // _ZN9S618C2_nt4v119Ev
  virtual void  v120(); // _ZN9S618C2_nt4v120Ev
  S618C2_nt(); // tgen
};
//SIG(-1 S618C2_nt) C1{ BC2{ BC3{ BC4{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd 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 Fp FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC5 FC9{ BC10{ BC8}} FC11{ m FC12{ m Fi[4]} FC13{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 FC14{ BC15{ BC8}} Fi:1} vd v1 v2 v3 v4 v5 v6 v7 Fi[3]}


 S618C2_nt ::~S618C2_nt(){ note_dtor("S618C2_nt", this);}
void  S618C2_nt ::v114(){vfunc_called(this, "_ZN9S618C2_nt4v114Ev");}
void  S618C2_nt ::v115(){vfunc_called(this, "_ZN9S618C2_nt4v115Ev");}
void  S618C2_nt ::v116(){vfunc_called(this, "_ZN9S618C2_nt4v116Ev");}
void  S618C2_nt ::v117(){vfunc_called(this, "_ZN9S618C2_nt4v117Ev");}
void  S618C2_nt ::v118(){vfunc_called(this, "_ZN9S618C2_nt4v118Ev");}
void  S618C2_nt ::v119(){vfunc_called(this, "_ZN9S618C2_nt4v119Ev");}
void  S618C2_nt ::v120(){vfunc_called(this, "_ZN9S618C2_nt4v120Ev");}
S618C2_nt ::S618C2_nt(){ note_ctor("S618C2_nt", this);} // tgen

//skip512 S618C2_nt

#else // __cplusplus

extern void _ZN9S618C2_ntC1Ev();
extern void _ZN9S618C2_ntD1Ev();
Name_Map name_map_S618C2_nt[] = {
  NSPAIR(_ZN9S618C2_ntC1Ev),
  NSPAIR(_ZN9S618C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S618C5;
extern VTBL_ENTRY _ZTI6S618C5[];
extern  VTBL_ENTRY _ZTV6S618C5[];
extern Class_Descriptor cd_S618C4_nt;
extern VTBL_ENTRY _ZTI9S618C4_nt[];
extern  VTBL_ENTRY _ZTV9S618C4_nt[];
extern Class_Descriptor cd_S618C3_nt;
extern VTBL_ENTRY _ZTI9S618C3_nt[];
extern  VTBL_ENTRY _ZTV9S618C3_nt[];
static Base_Class bases_S618C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S618C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S618C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S618C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S618C2_nt[];
extern void _ZN9S618C2_ntD1Ev();
extern void _ZN9S618C2_ntD0Ev();
extern void _ZN6S618C52v5Ev();
extern void _ZN6S618C52v6Ev();
extern void _ZN6S618C52v7Ev();
extern void _ZN6S618C52v8Ev();
extern void _ZN6S618C52v9Ev();
extern void _ZN6S618C53v10Ev();
extern void _ZN6S618C53v11Ev();
extern void _ZN6S618C53v12Ev();
extern void _ZN6S618C53v13Ev();
extern void _ZN6S618C53v14Ev();
extern void _ZN6S618C53v15Ev();
extern void _ZN6S618C53v16Ev();
extern void _ZN6S618C53v17Ev();
extern void _ZN6S618C53v18Ev();
extern void _ZN6S618C53v19Ev();
extern void _ZN6S618C53v20Ev();
extern void _ZN6S618C53v21Ev();
extern void _ZN6S618C53v22Ev();
extern void _ZN6S618C53v23Ev();
extern void _ZN6S618C53v24Ev();
extern void _ZN6S618C53v25Ev();
extern void _ZN6S618C53v26Ev();
extern void _ZN6S618C53v27Ev();
extern void _ZN6S618C53v28Ev();
extern void _ZN6S618C53v29Ev();
extern void _ZN6S618C53v30Ev();
extern void _ZN6S618C53v31Ev();
extern void _ZN6S618C53v32Ev();
extern void _ZN6S618C53v33Ev();
extern void _ZN6S618C53v34Ev();
extern void _ZN6S618C53v35Ev();
extern void _ZN6S618C53v36Ev();
extern void _ZN6S618C53v37Ev();
extern void _ZN6S618C53v38Ev();
extern void _ZN6S618C53v39Ev();
extern void _ZN6S618C53v40Ev();
extern void _ZN6S618C53v41Ev();
extern void _ZN6S618C53v42Ev();
extern void _ZN6S618C53v43Ev();
extern void _ZN6S618C53v44Ev();
extern void _ZN6S618C53v45Ev();
extern void _ZN6S618C53v46Ev();
extern void _ZN6S618C53v47Ev();
extern void _ZN6S618C53v48Ev();
extern void _ZN6S618C53v49Ev();
extern void _ZN6S618C53v50Ev();
extern void _ZN6S618C53v51Ev();
extern void _ZN6S618C53v52Ev();
extern void _ZN6S618C53v53Ev();
extern void _ZN6S618C53v54Ev();
extern void _ZN6S618C53v55Ev();
extern void _ZN6S618C53v56Ev();
extern void _ZN6S618C53v57Ev();
extern void _ZN6S618C53v58Ev();
extern void _ZN6S618C53v59Ev();
extern void _ZN6S618C53v60Ev();
extern void _ZN6S618C53v61Ev();
extern void _ZN6S618C53v62Ev();
extern void _ZN6S618C53v63Ev();
extern void _ZN6S618C53v64Ev();
extern void _ZN6S618C53v65Ev();
extern void _ZN6S618C53v66Ev();
extern void _ZN6S618C53v67Ev();
extern void _ZN6S618C53v68Ev();
extern void _ZN9S618C4_nt3v69Ev();
extern void _ZN9S618C4_nt3v70Ev();
extern void _ZN9S618C4_nt3v71Ev();
extern void _ZN9S618C4_nt3v72Ev();
extern void _ZN9S618C4_nt3v73Ev();
extern void _ZN9S618C4_nt3v74Ev();
extern void _ZN9S618C4_nt3v75Ev();
extern void _ZN9S618C4_nt3v76Ev();
extern void _ZN9S618C4_nt3v77Ev();
extern void _ZN9S618C4_nt3v78Ev();
extern void _ZN9S618C4_nt3v79Ev();
extern void _ZN9S618C4_nt3v80Ev();
extern void _ZN9S618C4_nt3v81Ev();
extern void _ZN9S618C4_nt3v82Ev();
extern void _ZN9S618C4_nt3v83Ev();
extern void _ZN9S618C4_nt3v84Ev();
extern void _ZN9S618C4_nt3v85Ev();
extern void _ZN9S618C4_nt3v86Ev();
extern void _ZN9S618C4_nt3v87Ev();
extern void _ZN9S618C4_nt3v88Ev();
extern void _ZN9S618C4_nt3v89Ev();
extern void _ZN9S618C4_nt3v90Ev();
extern void _ZN9S618C4_nt3v91Ev();
extern void _ZN9S618C4_nt3v92Ev();
extern void _ZN9S618C4_nt3v93Ev();
extern void _ZN9S618C4_nt3v94Ev();
extern void _ZN9S618C4_nt3v95Ev();
extern void _ZN9S618C3_nt3v96Ev();
extern void _ZN9S618C3_nt3v97Ev();
extern void _ZN9S618C3_nt3v98Ev();
extern void _ZN9S618C3_nt3v99Ev();
extern void _ZN9S618C3_nt4v100Ev();
extern void _ZN9S618C3_nt4v101Ev();
extern void _ZN9S618C3_nt4v102Ev();
extern void _ZN9S618C3_nt4v103Ev();
extern void _ZN9S618C3_nt4v104Ev();
extern void _ZN9S618C3_nt4v105Ev();
extern void _ZN9S618C3_nt4v106Ev();
extern void _ZN9S618C3_nt4v107Ev();
extern void _ZN9S618C3_nt4v108Ev();
extern void _ZN9S618C3_nt4v109Ev();
extern void _ZN9S618C3_nt4v110Ev();
extern void _ZN9S618C3_nt4v111Ev();
extern void _ZN9S618C3_nt4v112Ev();
extern void _ZN9S618C3_nt4v113Ev();
extern void _ZN9S618C2_nt4v114Ev();
extern void _ZN9S618C2_nt4v115Ev();
extern void _ZN9S618C2_nt4v116Ev();
extern void _ZN9S618C2_nt4v117Ev();
extern void _ZN9S618C2_nt4v118Ev();
extern void _ZN9S618C2_nt4v119Ev();
extern void _ZN9S618C2_nt4v120Ev();
static  VTBL_ENTRY vtc_S618C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S618C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S618C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S618C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S618C52v5Ev,
  (VTBL_ENTRY)&_ZN6S618C52v6Ev,
  (VTBL_ENTRY)&_ZN6S618C52v7Ev,
  (VTBL_ENTRY)&_ZN6S618C52v8Ev,
  (VTBL_ENTRY)&_ZN6S618C52v9Ev,
  (VTBL_ENTRY)&_ZN6S618C53v10Ev,
  (VTBL_ENTRY)&_ZN6S618C53v11Ev,
  (VTBL_ENTRY)&_ZN6S618C53v12Ev,
  (VTBL_ENTRY)&_ZN6S618C53v13Ev,
  (VTBL_ENTRY)&_ZN6S618C53v14Ev,
  (VTBL_ENTRY)&_ZN6S618C53v15Ev,
  (VTBL_ENTRY)&_ZN6S618C53v16Ev,
  (VTBL_ENTRY)&_ZN6S618C53v17Ev,
  (VTBL_ENTRY)&_ZN6S618C53v18Ev,
  (VTBL_ENTRY)&_ZN6S618C53v19Ev,
  (VTBL_ENTRY)&_ZN6S618C53v20Ev,
  (VTBL_ENTRY)&_ZN6S618C53v21Ev,
  (VTBL_ENTRY)&_ZN6S618C53v22Ev,
  (VTBL_ENTRY)&_ZN6S618C53v23Ev,
  (VTBL_ENTRY)&_ZN6S618C53v24Ev,
  (VTBL_ENTRY)&_ZN6S618C53v25Ev,
  (VTBL_ENTRY)&_ZN6S618C53v26Ev,
  (VTBL_ENTRY)&_ZN6S618C53v27Ev,
  (VTBL_ENTRY)&_ZN6S618C53v28Ev,
  (VTBL_ENTRY)&_ZN6S618C53v29Ev,
  (VTBL_ENTRY)&_ZN6S618C53v30Ev,
  (VTBL_ENTRY)&_ZN6S618C53v31Ev,
  (VTBL_ENTRY)&_ZN6S618C53v32Ev,
  (VTBL_ENTRY)&_ZN6S618C53v33Ev,
  (VTBL_ENTRY)&_ZN6S618C53v34Ev,
  (VTBL_ENTRY)&_ZN6S618C53v35Ev,
  (VTBL_ENTRY)&_ZN6S618C53v36Ev,
  (VTBL_ENTRY)&_ZN6S618C53v37Ev,
  (VTBL_ENTRY)&_ZN6S618C53v38Ev,
  (VTBL_ENTRY)&_ZN6S618C53v39Ev,
  (VTBL_ENTRY)&_ZN6S618C53v40Ev,
  (VTBL_ENTRY)&_ZN6S618C53v41Ev,
  (VTBL_ENTRY)&_ZN6S618C53v42Ev,
  (VTBL_ENTRY)&_ZN6S618C53v43Ev,
  (VTBL_ENTRY)&_ZN6S618C53v44Ev,
  (VTBL_ENTRY)&_ZN6S618C53v45Ev,
  (VTBL_ENTRY)&_ZN6S618C53v46Ev,
  (VTBL_ENTRY)&_ZN6S618C53v47Ev,
  (VTBL_ENTRY)&_ZN6S618C53v48Ev,
  (VTBL_ENTRY)&_ZN6S618C53v49Ev,
  (VTBL_ENTRY)&_ZN6S618C53v50Ev,
  (VTBL_ENTRY)&_ZN6S618C53v51Ev,
  (VTBL_ENTRY)&_ZN6S618C53v52Ev,
  (VTBL_ENTRY)&_ZN6S618C53v53Ev,
  (VTBL_ENTRY)&_ZN6S618C53v54Ev,
  (VTBL_ENTRY)&_ZN6S618C53v55Ev,
  (VTBL_ENTRY)&_ZN6S618C53v56Ev,
  (VTBL_ENTRY)&_ZN6S618C53v57Ev,
  (VTBL_ENTRY)&_ZN6S618C53v58Ev,
  (VTBL_ENTRY)&_ZN6S618C53v59Ev,
  (VTBL_ENTRY)&_ZN6S618C53v60Ev,
  (VTBL_ENTRY)&_ZN6S618C53v61Ev,
  (VTBL_ENTRY)&_ZN6S618C53v62Ev,
  (VTBL_ENTRY)&_ZN6S618C53v63Ev,
  (VTBL_ENTRY)&_ZN6S618C53v64Ev,
  (VTBL_ENTRY)&_ZN6S618C53v65Ev,
  (VTBL_ENTRY)&_ZN6S618C53v66Ev,
  (VTBL_ENTRY)&_ZN6S618C53v67Ev,
  (VTBL_ENTRY)&_ZN6S618C53v68Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v120Ev,
};
extern VTBL_ENTRY _ZTI9S618C2_nt[];
VTBL_ENTRY *P__ZTI9S618C2_nt = _ZTI9S618C2_nt; 
extern  VTBL_ENTRY _ZTV9S618C2_nt[];
Class_Descriptor cd_S618C2_nt = {  "S618C2_nt", // class name
  bases_S618C2_nt, 3,
  &(vtc_S618C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,208), // object size
  NSPAIRA(_ZTI9S618C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S618C2_nt),120, //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  S618C1  : S618C2_nt {
  unsigned int s618c1f0:1;
  int s618c1f1;
  virtual  ~S618C1(); // _ZN6S618C1D1Ev
  virtual void  v1(); // _ZN6S618C12v1Ev
  virtual void  v2(); // _ZN6S618C12v2Ev
  virtual void  v3(); // _ZN6S618C12v3Ev
  virtual void  v4(); // _ZN6S618C12v4Ev
  S618C1(); // tgen
};
//SIG(1 S618C1) 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 v91 v92 v93 v94 v95 Fp FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC6 FC10{ BC11{ BC9}} FC12{ m FC13{ m Fi[4]} FC14{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 FC15{ BC16{ BC9}} Fi:1} vd v114 v115 v116 v117 v118 v119 v120 Fi[3]} vd v1 v2 v3 v4 Fi:1 Fi}


 S618C1 ::~S618C1(){ note_dtor("S618C1", this);}
void  S618C1 ::v1(){vfunc_called(this, "_ZN6S618C12v1Ev");}
void  S618C1 ::v2(){vfunc_called(this, "_ZN6S618C12v2Ev");}
void  S618C1 ::v3(){vfunc_called(this, "_ZN6S618C12v3Ev");}
void  S618C1 ::v4(){vfunc_called(this, "_ZN6S618C12v4Ev");}
S618C1 ::S618C1(){ note_ctor("S618C1", this);} // tgen

static void Test_S618C1()
{
  extern Class_Descriptor cd_S618C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,55)];
    init_test(&cd_S618C1, buf);
    S618C1 *dp, &lv = *(dp=new (buf) S618C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,216), "sizeof(S618C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S618C1)");
    check_base_class_offset(lv, (S618C5*)(S618C4_nt*)(S618C3_nt*)(S618C2_nt*), 0, "S618C1");
    check_base_class_offset(lv, (S618C4_nt*)(S618C3_nt*)(S618C2_nt*), 0, "S618C1");
    check_base_class_offset(lv, (S618C3_nt*)(S618C2_nt*), 0, "S618C1");
    check_base_class_offset(lv, (S618C2_nt*), 0, "S618C1");
    set_bf_and_test(lv, s618c1f0, ABISELECT(264,208), 0, 1, 1, "S618C1");
    check_field_offset(lv, s618c1f1, ABISELECT(268,212), "S618C1.s618c1f1");
    test_class_info(&lv, &cd_S618C1);
    dp->~S618C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS618C1(Test_S618C1, "S618C1", ABISELECT(272,216));

#else // __cplusplus

extern void _ZN6S618C1C1Ev();
extern void _ZN6S618C1D1Ev();
Name_Map name_map_S618C1[] = {
  NSPAIR(_ZN6S618C1C1Ev),
  NSPAIR(_ZN6S618C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S618C5;
extern VTBL_ENTRY _ZTI6S618C5[];
extern  VTBL_ENTRY _ZTV6S618C5[];
extern Class_Descriptor cd_S618C4_nt;
extern VTBL_ENTRY _ZTI9S618C4_nt[];
extern  VTBL_ENTRY _ZTV9S618C4_nt[];
extern Class_Descriptor cd_S618C3_nt;
extern VTBL_ENTRY _ZTI9S618C3_nt[];
extern  VTBL_ENTRY _ZTV9S618C3_nt[];
extern Class_Descriptor cd_S618C2_nt;
extern VTBL_ENTRY _ZTI9S618C2_nt[];
extern  VTBL_ENTRY _ZTV9S618C2_nt[];
static Base_Class bases_S618C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S618C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S618C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S618C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S618C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S618C1[];
extern void _ZN6S618C1D1Ev();
extern void _ZN6S618C1D0Ev();
extern void _ZN6S618C52v5Ev();
extern void _ZN6S618C52v6Ev();
extern void _ZN6S618C52v7Ev();
extern void _ZN6S618C52v8Ev();
extern void _ZN6S618C52v9Ev();
extern void _ZN6S618C53v10Ev();
extern void _ZN6S618C53v11Ev();
extern void _ZN6S618C53v12Ev();
extern void _ZN6S618C53v13Ev();
extern void _ZN6S618C53v14Ev();
extern void _ZN6S618C53v15Ev();
extern void _ZN6S618C53v16Ev();
extern void _ZN6S618C53v17Ev();
extern void _ZN6S618C53v18Ev();
extern void _ZN6S618C53v19Ev();
extern void _ZN6S618C53v20Ev();
extern void _ZN6S618C53v21Ev();
extern void _ZN6S618C53v22Ev();
extern void _ZN6S618C53v23Ev();
extern void _ZN6S618C53v24Ev();
extern void _ZN6S618C53v25Ev();
extern void _ZN6S618C53v26Ev();
extern void _ZN6S618C53v27Ev();
extern void _ZN6S618C53v28Ev();
extern void _ZN6S618C53v29Ev();
extern void _ZN6S618C53v30Ev();
extern void _ZN6S618C53v31Ev();
extern void _ZN6S618C53v32Ev();
extern void _ZN6S618C53v33Ev();
extern void _ZN6S618C53v34Ev();
extern void _ZN6S618C53v35Ev();
extern void _ZN6S618C53v36Ev();
extern void _ZN6S618C53v37Ev();
extern void _ZN6S618C53v38Ev();
extern void _ZN6S618C53v39Ev();
extern void _ZN6S618C53v40Ev();
extern void _ZN6S618C53v41Ev();
extern void _ZN6S618C53v42Ev();
extern void _ZN6S618C53v43Ev();
extern void _ZN6S618C53v44Ev();
extern void _ZN6S618C53v45Ev();
extern void _ZN6S618C53v46Ev();
extern void _ZN6S618C53v47Ev();
extern void _ZN6S618C53v48Ev();
extern void _ZN6S618C53v49Ev();
extern void _ZN6S618C53v50Ev();
extern void _ZN6S618C53v51Ev();
extern void _ZN6S618C53v52Ev();
extern void _ZN6S618C53v53Ev();
extern void _ZN6S618C53v54Ev();
extern void _ZN6S618C53v55Ev();
extern void _ZN6S618C53v56Ev();
extern void _ZN6S618C53v57Ev();
extern void _ZN6S618C53v58Ev();
extern void _ZN6S618C53v59Ev();
extern void _ZN6S618C53v60Ev();
extern void _ZN6S618C53v61Ev();
extern void _ZN6S618C53v62Ev();
extern void _ZN6S618C53v63Ev();
extern void _ZN6S618C53v64Ev();
extern void _ZN6S618C53v65Ev();
extern void _ZN6S618C53v66Ev();
extern void _ZN6S618C53v67Ev();
extern void _ZN6S618C53v68Ev();
extern void _ZN9S618C4_nt3v69Ev();
extern void _ZN9S618C4_nt3v70Ev();
extern void _ZN9S618C4_nt3v71Ev();
extern void _ZN9S618C4_nt3v72Ev();
extern void _ZN9S618C4_nt3v73Ev();
extern void _ZN9S618C4_nt3v74Ev();
extern void _ZN9S618C4_nt3v75Ev();
extern void _ZN9S618C4_nt3v76Ev();
extern void _ZN9S618C4_nt3v77Ev();
extern void _ZN9S618C4_nt3v78Ev();
extern void _ZN9S618C4_nt3v79Ev();
extern void _ZN9S618C4_nt3v80Ev();
extern void _ZN9S618C4_nt3v81Ev();
extern void _ZN9S618C4_nt3v82Ev();
extern void _ZN9S618C4_nt3v83Ev();
extern void _ZN9S618C4_nt3v84Ev();
extern void _ZN9S618C4_nt3v85Ev();
extern void _ZN9S618C4_nt3v86Ev();
extern void _ZN9S618C4_nt3v87Ev();
extern void _ZN9S618C4_nt3v88Ev();
extern void _ZN9S618C4_nt3v89Ev();
extern void _ZN9S618C4_nt3v90Ev();
extern void _ZN9S618C4_nt3v91Ev();
extern void _ZN9S618C4_nt3v92Ev();
extern void _ZN9S618C4_nt3v93Ev();
extern void _ZN9S618C4_nt3v94Ev();
extern void _ZN9S618C4_nt3v95Ev();
extern void _ZN9S618C3_nt3v96Ev();
extern void _ZN9S618C3_nt3v97Ev();
extern void _ZN9S618C3_nt3v98Ev();
extern void _ZN9S618C3_nt3v99Ev();
extern void _ZN9S618C3_nt4v100Ev();
extern void _ZN9S618C3_nt4v101Ev();
extern void _ZN9S618C3_nt4v102Ev();
extern void _ZN9S618C3_nt4v103Ev();
extern void _ZN9S618C3_nt4v104Ev();
extern void _ZN9S618C3_nt4v105Ev();
extern void _ZN9S618C3_nt4v106Ev();
extern void _ZN9S618C3_nt4v107Ev();
extern void _ZN9S618C3_nt4v108Ev();
extern void _ZN9S618C3_nt4v109Ev();
extern void _ZN9S618C3_nt4v110Ev();
extern void _ZN9S618C3_nt4v111Ev();
extern void _ZN9S618C3_nt4v112Ev();
extern void _ZN9S618C3_nt4v113Ev();
extern void _ZN9S618C2_nt4v114Ev();
extern void _ZN9S618C2_nt4v115Ev();
extern void _ZN9S618C2_nt4v116Ev();
extern void _ZN9S618C2_nt4v117Ev();
extern void _ZN9S618C2_nt4v118Ev();
extern void _ZN9S618C2_nt4v119Ev();
extern void _ZN9S618C2_nt4v120Ev();
extern void _ZN6S618C12v1Ev();
extern void _ZN6S618C12v2Ev();
extern void _ZN6S618C12v3Ev();
extern void _ZN6S618C12v4Ev();
static  VTBL_ENTRY vtc_S618C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S618C1[0]),
  (VTBL_ENTRY)&_ZN6S618C1D1Ev,
  (VTBL_ENTRY)&_ZN6S618C1D0Ev,
  (VTBL_ENTRY)&_ZN6S618C52v5Ev,
  (VTBL_ENTRY)&_ZN6S618C52v6Ev,
  (VTBL_ENTRY)&_ZN6S618C52v7Ev,
  (VTBL_ENTRY)&_ZN6S618C52v8Ev,
  (VTBL_ENTRY)&_ZN6S618C52v9Ev,
  (VTBL_ENTRY)&_ZN6S618C53v10Ev,
  (VTBL_ENTRY)&_ZN6S618C53v11Ev,
  (VTBL_ENTRY)&_ZN6S618C53v12Ev,
  (VTBL_ENTRY)&_ZN6S618C53v13Ev,
  (VTBL_ENTRY)&_ZN6S618C53v14Ev,
  (VTBL_ENTRY)&_ZN6S618C53v15Ev,
  (VTBL_ENTRY)&_ZN6S618C53v16Ev,
  (VTBL_ENTRY)&_ZN6S618C53v17Ev,
  (VTBL_ENTRY)&_ZN6S618C53v18Ev,
  (VTBL_ENTRY)&_ZN6S618C53v19Ev,
  (VTBL_ENTRY)&_ZN6S618C53v20Ev,
  (VTBL_ENTRY)&_ZN6S618C53v21Ev,
  (VTBL_ENTRY)&_ZN6S618C53v22Ev,
  (VTBL_ENTRY)&_ZN6S618C53v23Ev,
  (VTBL_ENTRY)&_ZN6S618C53v24Ev,
  (VTBL_ENTRY)&_ZN6S618C53v25Ev,
  (VTBL_ENTRY)&_ZN6S618C53v26Ev,
  (VTBL_ENTRY)&_ZN6S618C53v27Ev,
  (VTBL_ENTRY)&_ZN6S618C53v28Ev,
  (VTBL_ENTRY)&_ZN6S618C53v29Ev,
  (VTBL_ENTRY)&_ZN6S618C53v30Ev,
  (VTBL_ENTRY)&_ZN6S618C53v31Ev,
  (VTBL_ENTRY)&_ZN6S618C53v32Ev,
  (VTBL_ENTRY)&_ZN6S618C53v33Ev,
  (VTBL_ENTRY)&_ZN6S618C53v34Ev,
  (VTBL_ENTRY)&_ZN6S618C53v35Ev,
  (VTBL_ENTRY)&_ZN6S618C53v36Ev,
  (VTBL_ENTRY)&_ZN6S618C53v37Ev,
  (VTBL_ENTRY)&_ZN6S618C53v38Ev,
  (VTBL_ENTRY)&_ZN6S618C53v39Ev,
  (VTBL_ENTRY)&_ZN6S618C53v40Ev,
  (VTBL_ENTRY)&_ZN6S618C53v41Ev,
  (VTBL_ENTRY)&_ZN6S618C53v42Ev,
  (VTBL_ENTRY)&_ZN6S618C53v43Ev,
  (VTBL_ENTRY)&_ZN6S618C53v44Ev,
  (VTBL_ENTRY)&_ZN6S618C53v45Ev,
  (VTBL_ENTRY)&_ZN6S618C53v46Ev,
  (VTBL_ENTRY)&_ZN6S618C53v47Ev,
  (VTBL_ENTRY)&_ZN6S618C53v48Ev,
  (VTBL_ENTRY)&_ZN6S618C53v49Ev,
  (VTBL_ENTRY)&_ZN6S618C53v50Ev,
  (VTBL_ENTRY)&_ZN6S618C53v51Ev,
  (VTBL_ENTRY)&_ZN6S618C53v52Ev,
  (VTBL_ENTRY)&_ZN6S618C53v53Ev,
  (VTBL_ENTRY)&_ZN6S618C53v54Ev,
  (VTBL_ENTRY)&_ZN6S618C53v55Ev,
  (VTBL_ENTRY)&_ZN6S618C53v56Ev,
  (VTBL_ENTRY)&_ZN6S618C53v57Ev,
  (VTBL_ENTRY)&_ZN6S618C53v58Ev,
  (VTBL_ENTRY)&_ZN6S618C53v59Ev,
  (VTBL_ENTRY)&_ZN6S618C53v60Ev,
  (VTBL_ENTRY)&_ZN6S618C53v61Ev,
  (VTBL_ENTRY)&_ZN6S618C53v62Ev,
  (VTBL_ENTRY)&_ZN6S618C53v63Ev,
  (VTBL_ENTRY)&_ZN6S618C53v64Ev,
  (VTBL_ENTRY)&_ZN6S618C53v65Ev,
  (VTBL_ENTRY)&_ZN6S618C53v66Ev,
  (VTBL_ENTRY)&_ZN6S618C53v67Ev,
  (VTBL_ENTRY)&_ZN6S618C53v68Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S618C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S618C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S618C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN6S618C12v1Ev,
  (VTBL_ENTRY)&_ZN6S618C12v2Ev,
  (VTBL_ENTRY)&_ZN6S618C12v3Ev,
  (VTBL_ENTRY)&_ZN6S618C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S618C1[];
extern  VTBL_ENTRY _ZTV6S618C1[];
Class_Descriptor cd_S618C1 = {  "S618C1", // class name
  bases_S618C1, 4,
  &(vtc_S618C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,216), // object size
  NSPAIRA(_ZTI6S618C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S618C1),124, //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  S1415C4  {
  int s1415c4f0;
  __tsi64 s1415c4f1;
  void *s1415c4f2[4];
  int s1415c4f3[2];
  void *s1415c4f4;
  ::S3223C4_nt s1415c4f5;
  void *s1415c4f6[2];
  virtual  ~S1415C4(); // _ZN7S1415C4D1Ev
  virtual void  v4(); // _ZN7S1415C42v4Ev
  virtual void  v5(); // _ZN7S1415C42v5Ev
  virtual void  v6(); // _ZN7S1415C42v6Ev
  virtual void  v7(); // _ZN7S1415C42v7Ev
  virtual void  v8(); // _ZN7S1415C42v8Ev
  virtual void  v9(); // _ZN7S1415C42v9Ev
  virtual void  v10(); // _ZN7S1415C43v10Ev
  virtual void  v11(); // _ZN7S1415C43v11Ev
  virtual void  v12(); // _ZN7S1415C43v12Ev
  virtual void  v13(); // _ZN7S1415C43v13Ev
  virtual void  v14(); // _ZN7S1415C43v14Ev
  virtual void  v15(); // _ZN7S1415C43v15Ev
  virtual void  v16(); // _ZN7S1415C43v16Ev
  virtual void  v17(); // _ZN7S1415C43v17Ev
  virtual void  v18(); // _ZN7S1415C43v18Ev
  virtual void  v19(); // _ZN7S1415C43v19Ev
  virtual void  v20(); // _ZN7S1415C43v20Ev
  virtual void  v21(); // _ZN7S1415C43v21Ev
  virtual void  v22(); // _ZN7S1415C43v22Ev
  virtual void  v23(); // _ZN7S1415C43v23Ev
  virtual void  v24(); // _ZN7S1415C43v24Ev
  virtual void  v25(); // _ZN7S1415C43v25Ev
  virtual void  v26(); // _ZN7S1415C43v26Ev
  virtual void  v27(); // _ZN7S1415C43v27Ev
  virtual void  v28(); // _ZN7S1415C43v28Ev
  virtual void  v29(); // _ZN7S1415C43v29Ev
  virtual void  v30(); // _ZN7S1415C43v30Ev
  virtual void  v31(); // _ZN7S1415C43v31Ev
  virtual void  v32(); // _ZN7S1415C43v32Ev
  virtual void  v33(); // _ZN7S1415C43v33Ev
  virtual void  v34(); // _ZN7S1415C43v34Ev
  virtual void  v35(); // _ZN7S1415C43v35Ev
  virtual void  v36(); // _ZN7S1415C43v36Ev
  virtual void  v37(); // _ZN7S1415C43v37Ev
  virtual void  v38(); // _ZN7S1415C43v38Ev
  virtual void  v39(); // _ZN7S1415C43v39Ev
  virtual void  v40(); // _ZN7S1415C43v40Ev
  virtual void  v41(); // _ZN7S1415C43v41Ev
  virtual void  v42(); // _ZN7S1415C43v42Ev
  virtual void  v43(); // _ZN7S1415C43v43Ev
  virtual void  v44(); // _ZN7S1415C43v44Ev
  virtual void  v45(); // _ZN7S1415C43v45Ev
  virtual void  v46(); // _ZN7S1415C43v46Ev
  virtual void  v47(); // _ZN7S1415C43v47Ev
  virtual void  v48(); // _ZN7S1415C43v48Ev
  virtual void  v49(); // _ZN7S1415C43v49Ev
  virtual void  v50(); // _ZN7S1415C43v50Ev
  virtual void  v51(); // _ZN7S1415C43v51Ev
  virtual void  v52(); // _ZN7S1415C43v52Ev
  virtual void  v53(); // _ZN7S1415C43v53Ev
  virtual void  v54(); // _ZN7S1415C43v54Ev
  virtual void  v55(); // _ZN7S1415C43v55Ev
  virtual void  v56(); // _ZN7S1415C43v56Ev
  virtual void  v57(); // _ZN7S1415C43v57Ev
  virtual void  v58(); // _ZN7S1415C43v58Ev
  virtual void  v59(); // _ZN7S1415C43v59Ev
  virtual void  v60(); // _ZN7S1415C43v60Ev
  virtual void  v61(); // _ZN7S1415C43v61Ev
  virtual void  v62(); // _ZN7S1415C43v62Ev
  virtual void  v63(); // _ZN7S1415C43v63Ev
  virtual void  v64(); // _ZN7S1415C43v64Ev
  virtual void  v65(); // _ZN7S1415C43v65Ev
  virtual void  v66(); // _ZN7S1415C43v66Ev
  virtual void  v67(); // _ZN7S1415C43v67Ev
  S1415C4(); // tgen
};
//SIG(-1 S1415C4) 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]}


 S1415C4 ::~S1415C4(){ note_dtor("S1415C4", this);}
void  S1415C4 ::v4(){vfunc_called(this, "_ZN7S1415C42v4Ev");}
void  S1415C4 ::v5(){vfunc_called(this, "_ZN7S1415C42v5Ev");}
void  S1415C4 ::v6(){vfunc_called(this, "_ZN7S1415C42v6Ev");}
void  S1415C4 ::v7(){vfunc_called(this, "_ZN7S1415C42v7Ev");}
void  S1415C4 ::v8(){vfunc_called(this, "_ZN7S1415C42v8Ev");}
void  S1415C4 ::v9(){vfunc_called(this, "_ZN7S1415C42v9Ev");}
void  S1415C4 ::v10(){vfunc_called(this, "_ZN7S1415C43v10Ev");}
void  S1415C4 ::v11(){vfunc_called(this, "_ZN7S1415C43v11Ev");}
void  S1415C4 ::v12(){vfunc_called(this, "_ZN7S1415C43v12Ev");}
void  S1415C4 ::v13(){vfunc_called(this, "_ZN7S1415C43v13Ev");}
void  S1415C4 ::v14(){vfunc_called(this, "_ZN7S1415C43v14Ev");}
void  S1415C4 ::v15(){vfunc_called(this, "_ZN7S1415C43v15Ev");}
void  S1415C4 ::v16(){vfunc_called(this, "_ZN7S1415C43v16Ev");}
void  S1415C4 ::v17(){vfunc_called(this, "_ZN7S1415C43v17Ev");}
void  S1415C4 ::v18(){vfunc_called(this, "_ZN7S1415C43v18Ev");}
void  S1415C4 ::v19(){vfunc_called(this, "_ZN7S1415C43v19Ev");}
void  S1415C4 ::v20(){vfunc_called(this, "_ZN7S1415C43v20Ev");}
void  S1415C4 ::v21(){vfunc_called(this, "_ZN7S1415C43v21Ev");}
void  S1415C4 ::v22(){vfunc_called(this, "_ZN7S1415C43v22Ev");}
void  S1415C4 ::v23(){vfunc_called(this, "_ZN7S1415C43v23Ev");}
void  S1415C4 ::v24(){vfunc_called(this, "_ZN7S1415C43v24Ev");}
void  S1415C4 ::v25(){vfunc_called(this, "_ZN7S1415C43v25Ev");}
void  S1415C4 ::v26(){vfunc_called(this, "_ZN7S1415C43v26Ev");}
void  S1415C4 ::v27(){vfunc_called(this, "_ZN7S1415C43v27Ev");}
void  S1415C4 ::v28(){vfunc_called(this, "_ZN7S1415C43v28Ev");}
void  S1415C4 ::v29(){vfunc_called(this, "_ZN7S1415C43v29Ev");}
void  S1415C4 ::v30(){vfunc_called(this, "_ZN7S1415C43v30Ev");}
void  S1415C4 ::v31(){vfunc_called(this, "_ZN7S1415C43v31Ev");}
void  S1415C4 ::v32(){vfunc_called(this, "_ZN7S1415C43v32Ev");}
void  S1415C4 ::v33(){vfunc_called(this, "_ZN7S1415C43v33Ev");}
void  S1415C4 ::v34(){vfunc_called(this, "_ZN7S1415C43v34Ev");}
void  S1415C4 ::v35(){vfunc_called(this, "_ZN7S1415C43v35Ev");}
void  S1415C4 ::v36(){vfunc_called(this, "_ZN7S1415C43v36Ev");}
void  S1415C4 ::v37(){vfunc_called(this, "_ZN7S1415C43v37Ev");}
void  S1415C4 ::v38(){vfunc_called(this, "_ZN7S1415C43v38Ev");}
void  S1415C4 ::v39(){vfunc_called(this, "_ZN7S1415C43v39Ev");}
void  S1415C4 ::v40(){vfunc_called(this, "_ZN7S1415C43v40Ev");}
void  S1415C4 ::v41(){vfunc_called(this, "_ZN7S1415C43v41Ev");}
void  S1415C4 ::v42(){vfunc_called(this, "_ZN7S1415C43v42Ev");}
void  S1415C4 ::v43(){vfunc_called(this, "_ZN7S1415C43v43Ev");}
void  S1415C4 ::v44(){vfunc_called(this, "_ZN7S1415C43v44Ev");}
void  S1415C4 ::v45(){vfunc_called(this, "_ZN7S1415C43v45Ev");}
void  S1415C4 ::v46(){vfunc_called(this, "_ZN7S1415C43v46Ev");}
void  S1415C4 ::v47(){vfunc_called(this, "_ZN7S1415C43v47Ev");}
void  S1415C4 ::v48(){vfunc_called(this, "_ZN7S1415C43v48Ev");}
void  S1415C4 ::v49(){vfunc_called(this, "_ZN7S1415C43v49Ev");}
void  S1415C4 ::v50(){vfunc_called(this, "_ZN7S1415C43v50Ev");}
void  S1415C4 ::v51(){vfunc_called(this, "_ZN7S1415C43v51Ev");}
void  S1415C4 ::v52(){vfunc_called(this, "_ZN7S1415C43v52Ev");}
void  S1415C4 ::v53(){vfunc_called(this, "_ZN7S1415C43v53Ev");}
void  S1415C4 ::v54(){vfunc_called(this, "_ZN7S1415C43v54Ev");}
void  S1415C4 ::v55(){vfunc_called(this, "_ZN7S1415C43v55Ev");}
void  S1415C4 ::v56(){vfunc_called(this, "_ZN7S1415C43v56Ev");}
void  S1415C4 ::v57(){vfunc_called(this, "_ZN7S1415C43v57Ev");}
void  S1415C4 ::v58(){vfunc_called(this, "_ZN7S1415C43v58Ev");}
void  S1415C4 ::v59(){vfunc_called(this, "_ZN7S1415C43v59Ev");}
void  S1415C4 ::v60(){vfunc_called(this, "_ZN7S1415C43v60Ev");}
void  S1415C4 ::v61(){vfunc_called(this, "_ZN7S1415C43v61Ev");}
void  S1415C4 ::v62(){vfunc_called(this, "_ZN7S1415C43v62Ev");}
void  S1415C4 ::v63(){vfunc_called(this, "_ZN7S1415C43v63Ev");}
void  S1415C4 ::v64(){vfunc_called(this, "_ZN7S1415C43v64Ev");}
void  S1415C4 ::v65(){vfunc_called(this, "_ZN7S1415C43v65Ev");}
void  S1415C4 ::v66(){vfunc_called(this, "_ZN7S1415C43v66Ev");}
void  S1415C4 ::v67(){vfunc_called(this, "_ZN7S1415C43v67Ev");}
S1415C4 ::S1415C4(){ note_ctor("S1415C4", this);} // tgen

static void Test_S1415C4()
{
  extern Class_Descriptor cd_S1415C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1415C4, buf);
    S1415C4 *dp, &lv = *(dp=new (buf) S1415C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1415C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1415C4)");
    check_field_offset(lv, s1415c4f0, ABISELECT(8,4), "S1415C4.s1415c4f0");
    check_field_offset(lv, s1415c4f1, ABISELECT(16,8), "S1415C4.s1415c4f1");
    check_field_offset(lv, s1415c4f2, ABISELECT(24,16), "S1415C4.s1415c4f2");
    check_field_offset(lv, s1415c4f3, ABISELECT(56,32), "S1415C4.s1415c4f3");
    check_field_offset(lv, s1415c4f4, ABISELECT(64,40), "S1415C4.s1415c4f4");
    check_field_offset(lv, s1415c4f5, ABISELECT(72,44), "S1415C4.s1415c4f5");
    check_field_offset(lv, s1415c4f6, ABISELECT(80,52), "S1415C4.s1415c4f6");
    test_class_info(&lv, &cd_S1415C4);
    dp->~S1415C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1415C4(Test_S1415C4, "S1415C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1415C4C1Ev();
extern void _ZN7S1415C4D1Ev();
Name_Map name_map_S1415C4[] = {
  NSPAIR(_ZN7S1415C4C1Ev),
  NSPAIR(_ZN7S1415C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1415C4[];
extern void _ZN7S1415C4D1Ev();
extern void _ZN7S1415C4D0Ev();
extern void _ZN7S1415C42v4Ev();
extern void _ZN7S1415C42v5Ev();
extern void _ZN7S1415C42v6Ev();
extern void _ZN7S1415C42v7Ev();
extern void _ZN7S1415C42v8Ev();
extern void _ZN7S1415C42v9Ev();
extern void _ZN7S1415C43v10Ev();
extern void _ZN7S1415C43v11Ev();
extern void _ZN7S1415C43v12Ev();
extern void _ZN7S1415C43v13Ev();
extern void _ZN7S1415C43v14Ev();
extern void _ZN7S1415C43v15Ev();
extern void _ZN7S1415C43v16Ev();
extern void _ZN7S1415C43v17Ev();
extern void _ZN7S1415C43v18Ev();
extern void _ZN7S1415C43v19Ev();
extern void _ZN7S1415C43v20Ev();
extern void _ZN7S1415C43v21Ev();
extern void _ZN7S1415C43v22Ev();
extern void _ZN7S1415C43v23Ev();
extern void _ZN7S1415C43v24Ev();
extern void _ZN7S1415C43v25Ev();
extern void _ZN7S1415C43v26Ev();
extern void _ZN7S1415C43v27Ev();
extern void _ZN7S1415C43v28Ev();
extern void _ZN7S1415C43v29Ev();
extern void _ZN7S1415C43v30Ev();
extern void _ZN7S1415C43v31Ev();
extern void _ZN7S1415C43v32Ev();
extern void _ZN7S1415C43v33Ev();
extern void _ZN7S1415C43v34Ev();
extern void _ZN7S1415C43v35Ev();
extern void _ZN7S1415C43v36Ev();
extern void _ZN7S1415C43v37Ev();
extern void _ZN7S1415C43v38Ev();
extern void _ZN7S1415C43v39Ev();
extern void _ZN7S1415C43v40Ev();
extern void _ZN7S1415C43v41Ev();
extern void _ZN7S1415C43v42Ev();
extern void _ZN7S1415C43v43Ev();
extern void _ZN7S1415C43v44Ev();
extern void _ZN7S1415C43v45Ev();
extern void _ZN7S1415C43v46Ev();
extern void _ZN7S1415C43v47Ev();
extern void _ZN7S1415C43v48Ev();
extern void _ZN7S1415C43v49Ev();
extern void _ZN7S1415C43v50Ev();
extern void _ZN7S1415C43v51Ev();
extern void _ZN7S1415C43v52Ev();
extern void _ZN7S1415C43v53Ev();
extern void _ZN7S1415C43v54Ev();
extern void _ZN7S1415C43v55Ev();
extern void _ZN7S1415C43v56Ev();
extern void _ZN7S1415C43v57Ev();
extern void _ZN7S1415C43v58Ev();
extern void _ZN7S1415C43v59Ev();
extern void _ZN7S1415C43v60Ev();
extern void _ZN7S1415C43v61Ev();
extern void _ZN7S1415C43v62Ev();
extern void _ZN7S1415C43v63Ev();
extern void _ZN7S1415C43v64Ev();
extern void _ZN7S1415C43v65Ev();
extern void _ZN7S1415C43v66Ev();
extern void _ZN7S1415C43v67Ev();
static  VTBL_ENTRY vtc_S1415C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1415C4[0]),
  (VTBL_ENTRY)&_ZN7S1415C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1415C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1415C4[];
extern  VTBL_ENTRY _ZTV7S1415C4[];
Class_Descriptor cd_S1415C4 = {  "S1415C4", // class name
  0,0,//no base classes
  &(vtc_S1415C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1415C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1415C4),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  S1415C3  : S1415C4 {
  void *s1415c3f0;
  ::S3223C17 s1415c3f1;
  ::S3223C4_nt s1415c3f2;
  ::S3223C11 s1415c3f3;
  ::S618C12_nt s1415c3f4;
  int s1415c3f5;
  unsigned int s1415c3f6:1;
  unsigned int s1415c3f7:1;
  unsigned int s1415c3f8:1;
  unsigned int s1415c3f9:1;
  int s1415c3f10[11];
  virtual  ~S1415C3(); // _ZN7S1415C3D1Ev
  virtual void  v68(); // _ZN7S1415C33v68Ev
  virtual void  v69(); // _ZN7S1415C33v69Ev
  virtual void  v70(); // _ZN7S1415C33v70Ev
  virtual void  v71(); // _ZN7S1415C33v71Ev
  virtual void  v72(); // _ZN7S1415C33v72Ev
  virtual void  v73(); // _ZN7S1415C33v73Ev
  virtual void  v74(); // _ZN7S1415C33v74Ev
  virtual void  v75(); // _ZN7S1415C33v75Ev
  virtual void  v76(); // _ZN7S1415C33v76Ev
  virtual void  v77(); // _ZN7S1415C33v77Ev
  virtual void  v78(); // _ZN7S1415C33v78Ev
  virtual void  v79(); // _ZN7S1415C33v79Ev
  virtual void  v80(); // _ZN7S1415C33v80Ev
  virtual void  v81(); // _ZN7S1415C33v81Ev
  virtual void  v82(); // _ZN7S1415C33v82Ev
  virtual void  v83(); // _ZN7S1415C33v83Ev
  virtual void  v84(); // _ZN7S1415C33v84Ev
  virtual void  v85(); // _ZN7S1415C33v85Ev
  virtual void  v86(); // _ZN7S1415C33v86Ev
  virtual void  v87(); // _ZN7S1415C33v87Ev
  virtual void  v88(); // _ZN7S1415C33v88Ev
  virtual void  v89(); // _ZN7S1415C33v89Ev
  virtual void  v90(); // _ZN7S1415C33v90Ev
  virtual void  v91(); // _ZN7S1415C33v91Ev
  virtual void  v92(); // _ZN7S1415C33v92Ev
  virtual void  v93(); // _ZN7S1415C33v93Ev
  virtual void  v94(); // _ZN7S1415C33v94Ev
  S1415C3(); // tgen
};
//SIG(-1 S1415C3) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 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 Fp FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC3 FC7{ BC8{ BC6}} FC9{ m FC10{ m Fi[4]} FC11{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]}


 S1415C3 ::~S1415C3(){ note_dtor("S1415C3", this);}
void  S1415C3 ::v68(){vfunc_called(this, "_ZN7S1415C33v68Ev");}
void  S1415C3 ::v69(){vfunc_called(this, "_ZN7S1415C33v69Ev");}
void  S1415C3 ::v70(){vfunc_called(this, "_ZN7S1415C33v70Ev");}
void  S1415C3 ::v71(){vfunc_called(this, "_ZN7S1415C33v71Ev");}
void  S1415C3 ::v72(){vfunc_called(this, "_ZN7S1415C33v72Ev");}
void  S1415C3 ::v73(){vfunc_called(this, "_ZN7S1415C33v73Ev");}
void  S1415C3 ::v74(){vfunc_called(this, "_ZN7S1415C33v74Ev");}
void  S1415C3 ::v75(){vfunc_called(this, "_ZN7S1415C33v75Ev");}
void  S1415C3 ::v76(){vfunc_called(this, "_ZN7S1415C33v76Ev");}
void  S1415C3 ::v77(){vfunc_called(this, "_ZN7S1415C33v77Ev");}
void  S1415C3 ::v78(){vfunc_called(this, "_ZN7S1415C33v78Ev");}
void  S1415C3 ::v79(){vfunc_called(this, "_ZN7S1415C33v79Ev");}
void  S1415C3 ::v80(){vfunc_called(this, "_ZN7S1415C33v80Ev");}
void  S1415C3 ::v81(){vfunc_called(this, "_ZN7S1415C33v81Ev");}
void  S1415C3 ::v82(){vfunc_called(this, "_ZN7S1415C33v82Ev");}
void  S1415C3 ::v83(){vfunc_called(this, "_ZN7S1415C33v83Ev");}
void  S1415C3 ::v84(){vfunc_called(this, "_ZN7S1415C33v84Ev");}
void  S1415C3 ::v85(){vfunc_called(this, "_ZN7S1415C33v85Ev");}
void  S1415C3 ::v86(){vfunc_called(this, "_ZN7S1415C33v86Ev");}
void  S1415C3 ::v87(){vfunc_called(this, "_ZN7S1415C33v87Ev");}
void  S1415C3 ::v88(){vfunc_called(this, "_ZN7S1415C33v88Ev");}
void  S1415C3 ::v89(){vfunc_called(this, "_ZN7S1415C33v89Ev");}
void  S1415C3 ::v90(){vfunc_called(this, "_ZN7S1415C33v90Ev");}
void  S1415C3 ::v91(){vfunc_called(this, "_ZN7S1415C33v91Ev");}
void  S1415C3 ::v92(){vfunc_called(this, "_ZN7S1415C33v92Ev");}
void  S1415C3 ::v93(){vfunc_called(this, "_ZN7S1415C33v93Ev");}
void  S1415C3 ::v94(){vfunc_called(this, "_ZN7S1415C33v94Ev");}
S1415C3 ::S1415C3(){ note_ctor("S1415C3", this);} // tgen

static void Test_S1415C3()
{
  extern Class_Descriptor cd_S1415C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,46)];
    init_test(&cd_S1415C3, buf);
    S1415C3 *dp, &lv = *(dp=new (buf) S1415C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,180), "sizeof(S1415C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1415C3)");
    check_base_class_offset(lv, (S1415C4*), 0, "S1415C3");
    check_field_offset(lv, s1415c3f0, ABISELECT(96,60), "S1415C3.s1415c3f0");
    check_field_offset(lv, s1415c3f1, ABISELECT(104,64), "S1415C3.s1415c3f1");
    check_field_offset(lv, s1415c3f2, ABISELECT(120,76), "S1415C3.s1415c3f2");
    check_field_offset(lv, s1415c3f3, ABISELECT(128,84), "S1415C3.s1415c3f3");
    check_field_offset(lv, s1415c3f4, ABISELECT(144,96), "S1415C3.s1415c3f4");
    check_field_offset(lv, s1415c3f5, ABISELECT(176,128), "S1415C3.s1415c3f5");
    set_bf_and_test(lv, s1415c3f6, ABISELECT(180,132), 0, 1, 1, "S1415C3");
    set_bf_and_test(lv, s1415c3f7, ABISELECT(180,132), 1, 1, 1, "S1415C3");
    set_bf_and_test(lv, s1415c3f8, ABISELECT(180,132), 2, 1, 1, "S1415C3");
    set_bf_and_test(lv, s1415c3f9, ABISELECT(180,132), 3, 1, 1, "S1415C3");
    check_field_offset(lv, s1415c3f10, ABISELECT(184,136), "S1415C3.s1415c3f10");
    test_class_info(&lv, &cd_S1415C3);
    dp->~S1415C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1415C3(Test_S1415C3, "S1415C3", ABISELECT(232,180));

#else // __cplusplus

extern void _ZN7S1415C3C1Ev();
extern void _ZN7S1415C3D1Ev();
Name_Map name_map_S1415C3[] = {
  NSPAIR(_ZN7S1415C3C1Ev),
  NSPAIR(_ZN7S1415C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1415C4;
extern VTBL_ENTRY _ZTI7S1415C4[];
extern  VTBL_ENTRY _ZTV7S1415C4[];
static Base_Class bases_S1415C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1415C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1415C3[];
extern void _ZN7S1415C3D1Ev();
extern void _ZN7S1415C3D0Ev();
extern void _ZN7S1415C42v4Ev();
extern void _ZN7S1415C42v5Ev();
extern void _ZN7S1415C42v6Ev();
extern void _ZN7S1415C42v7Ev();
extern void _ZN7S1415C42v8Ev();
extern void _ZN7S1415C42v9Ev();
extern void _ZN7S1415C43v10Ev();
extern void _ZN7S1415C43v11Ev();
extern void _ZN7S1415C43v12Ev();
extern void _ZN7S1415C43v13Ev();
extern void _ZN7S1415C43v14Ev();
extern void _ZN7S1415C43v15Ev();
extern void _ZN7S1415C43v16Ev();
extern void _ZN7S1415C43v17Ev();
extern void _ZN7S1415C43v18Ev();
extern void _ZN7S1415C43v19Ev();
extern void _ZN7S1415C43v20Ev();
extern void _ZN7S1415C43v21Ev();
extern void _ZN7S1415C43v22Ev();
extern void _ZN7S1415C43v23Ev();
extern void _ZN7S1415C43v24Ev();
extern void _ZN7S1415C43v25Ev();
extern void _ZN7S1415C43v26Ev();
extern void _ZN7S1415C43v27Ev();
extern void _ZN7S1415C43v28Ev();
extern void _ZN7S1415C43v29Ev();
extern void _ZN7S1415C43v30Ev();
extern void _ZN7S1415C43v31Ev();
extern void _ZN7S1415C43v32Ev();
extern void _ZN7S1415C43v33Ev();
extern void _ZN7S1415C43v34Ev();
extern void _ZN7S1415C43v35Ev();
extern void _ZN7S1415C43v36Ev();
extern void _ZN7S1415C43v37Ev();
extern void _ZN7S1415C43v38Ev();
extern void _ZN7S1415C43v39Ev();
extern void _ZN7S1415C43v40Ev();
extern void _ZN7S1415C43v41Ev();
extern void _ZN7S1415C43v42Ev();
extern void _ZN7S1415C43v43Ev();
extern void _ZN7S1415C43v44Ev();
extern void _ZN7S1415C43v45Ev();
extern void _ZN7S1415C43v46Ev();
extern void _ZN7S1415C43v47Ev();
extern void _ZN7S1415C43v48Ev();
extern void _ZN7S1415C43v49Ev();
extern void _ZN7S1415C43v50Ev();
extern void _ZN7S1415C43v51Ev();
extern void _ZN7S1415C43v52Ev();
extern void _ZN7S1415C43v53Ev();
extern void _ZN7S1415C43v54Ev();
extern void _ZN7S1415C43v55Ev();
extern void _ZN7S1415C43v56Ev();
extern void _ZN7S1415C43v57Ev();
extern void _ZN7S1415C43v58Ev();
extern void _ZN7S1415C43v59Ev();
extern void _ZN7S1415C43v60Ev();
extern void _ZN7S1415C43v61Ev();
extern void _ZN7S1415C43v62Ev();
extern void _ZN7S1415C43v63Ev();
extern void _ZN7S1415C43v64Ev();
extern void _ZN7S1415C43v65Ev();
extern void _ZN7S1415C43v66Ev();
extern void _ZN7S1415C43v67Ev();
extern void _ZN7S1415C33v68Ev();
extern void _ZN7S1415C33v69Ev();
extern void _ZN7S1415C33v70Ev();
extern void _ZN7S1415C33v71Ev();
extern void _ZN7S1415C33v72Ev();
extern void _ZN7S1415C33v73Ev();
extern void _ZN7S1415C33v74Ev();
extern void _ZN7S1415C33v75Ev();
extern void _ZN7S1415C33v76Ev();
extern void _ZN7S1415C33v77Ev();
extern void _ZN7S1415C33v78Ev();
extern void _ZN7S1415C33v79Ev();
extern void _ZN7S1415C33v80Ev();
extern void _ZN7S1415C33v81Ev();
extern void _ZN7S1415C33v82Ev();
extern void _ZN7S1415C33v83Ev();
extern void _ZN7S1415C33v84Ev();
extern void _ZN7S1415C33v85Ev();
extern void _ZN7S1415C33v86Ev();
extern void _ZN7S1415C33v87Ev();
extern void _ZN7S1415C33v88Ev();
extern void _ZN7S1415C33v89Ev();
extern void _ZN7S1415C33v90Ev();
extern void _ZN7S1415C33v91Ev();
extern void _ZN7S1415C33v92Ev();
extern void _ZN7S1415C33v93Ev();
extern void _ZN7S1415C33v94Ev();
static  VTBL_ENTRY vtc_S1415C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1415C3[0]),
  (VTBL_ENTRY)&_ZN7S1415C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1415C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v94Ev,
};
extern VTBL_ENTRY _ZTI7S1415C3[];
extern  VTBL_ENTRY _ZTV7S1415C3[];
Class_Descriptor cd_S1415C3 = {  "S1415C3", // class name
  bases_S1415C3, 1,
  &(vtc_S1415C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,180), // object size
  NSPAIRA(_ZTI7S1415C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1415C3),95, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1415C2  : S1415C3 {
  ::S3223C5_nt s1415c2f0;
  unsigned int s1415c2f1:1;
  virtual  ~S1415C2(); // _ZN7S1415C2D1Ev
  virtual void  v95(); // _ZN7S1415C23v95Ev
  virtual void  v96(); // _ZN7S1415C23v96Ev
  virtual void  v97(); // _ZN7S1415C23v97Ev
  virtual void  v98(); // _ZN7S1415C23v98Ev
  virtual void  v99(); // _ZN7S1415C23v99Ev
  virtual void  v100(); // _ZN7S1415C24v100Ev
  virtual void  v101(); // _ZN7S1415C24v101Ev
  virtual void  v102(); // _ZN7S1415C24v102Ev
  virtual void  v103(); // _ZN7S1415C24v103Ev
  virtual void  v104(); // _ZN7S1415C24v104Ev
  virtual void  v105(); // _ZN7S1415C24v105Ev
  virtual void  v106(); // _ZN7S1415C24v106Ev
  virtual void  v107(); // _ZN7S1415C24v107Ev
  virtual void  v108(); // _ZN7S1415C24v108Ev
  virtual void  v109(); // _ZN7S1415C24v109Ev
  virtual void  v110(); // _ZN7S1415C24v110Ev
  virtual void  v111(); // _ZN7S1415C24v111Ev
  virtual void  v112(); // _ZN7S1415C24v112Ev
  S1415C2(); // tgen
};
//SIG(-1 S1415C2) 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 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd 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 Fp FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC4 FC8{ BC9{ BC7}} FC10{ m FC11{ m Fi[4]} FC12{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 FC13{ BC14{ BC7}} Fi:1}


 S1415C2 ::~S1415C2(){ note_dtor("S1415C2", this);}
void  S1415C2 ::v95(){vfunc_called(this, "_ZN7S1415C23v95Ev");}
void  S1415C2 ::v96(){vfunc_called(this, "_ZN7S1415C23v96Ev");}
void  S1415C2 ::v97(){vfunc_called(this, "_ZN7S1415C23v97Ev");}
void  S1415C2 ::v98(){vfunc_called(this, "_ZN7S1415C23v98Ev");}
void  S1415C2 ::v99(){vfunc_called(this, "_ZN7S1415C23v99Ev");}
void  S1415C2 ::v100(){vfunc_called(this, "_ZN7S1415C24v100Ev");}
void  S1415C2 ::v101(){vfunc_called(this, "_ZN7S1415C24v101Ev");}
void  S1415C2 ::v102(){vfunc_called(this, "_ZN7S1415C24v102Ev");}
void  S1415C2 ::v103(){vfunc_called(this, "_ZN7S1415C24v103Ev");}
void  S1415C2 ::v104(){vfunc_called(this, "_ZN7S1415C24v104Ev");}
void  S1415C2 ::v105(){vfunc_called(this, "_ZN7S1415C24v105Ev");}
void  S1415C2 ::v106(){vfunc_called(this, "_ZN7S1415C24v106Ev");}
void  S1415C2 ::v107(){vfunc_called(this, "_ZN7S1415C24v107Ev");}
void  S1415C2 ::v108(){vfunc_called(this, "_ZN7S1415C24v108Ev");}
void  S1415C2 ::v109(){vfunc_called(this, "_ZN7S1415C24v109Ev");}
void  S1415C2 ::v110(){vfunc_called(this, "_ZN7S1415C24v110Ev");}
void  S1415C2 ::v111(){vfunc_called(this, "_ZN7S1415C24v111Ev");}
void  S1415C2 ::v112(){vfunc_called(this, "_ZN7S1415C24v112Ev");}
S1415C2 ::S1415C2(){ note_ctor("S1415C2", this);} // tgen

static void Test_S1415C2()
{
  extern Class_Descriptor cd_S1415C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,50)];
    init_test(&cd_S1415C2, buf);
    S1415C2 *dp, &lv = *(dp=new (buf) S1415C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,196), "sizeof(S1415C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1415C2)");
    check_base_class_offset(lv, (S1415C4*)(S1415C3*), 0, "S1415C2");
    check_base_class_offset(lv, (S1415C3*), 0, "S1415C2");
    check_field_offset(lv, s1415c2f0, ABISELECT(232,180), "S1415C2.s1415c2f0");
    set_bf_and_test(lv, s1415c2f1, ABISELECT(248,192), 0, 1, 1, "S1415C2");
    test_class_info(&lv, &cd_S1415C2);
    dp->~S1415C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1415C2(Test_S1415C2, "S1415C2", ABISELECT(256,196));

#else // __cplusplus

extern void _ZN7S1415C2C1Ev();
extern void _ZN7S1415C2D1Ev();
Name_Map name_map_S1415C2[] = {
  NSPAIR(_ZN7S1415C2C1Ev),
  NSPAIR(_ZN7S1415C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1415C4;
extern VTBL_ENTRY _ZTI7S1415C4[];
extern  VTBL_ENTRY _ZTV7S1415C4[];
extern Class_Descriptor cd_S1415C3;
extern VTBL_ENTRY _ZTI7S1415C3[];
extern  VTBL_ENTRY _ZTV7S1415C3[];
static Base_Class bases_S1415C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1415C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1415C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1415C2[];
extern void _ZN7S1415C2D1Ev();
extern void _ZN7S1415C2D0Ev();
extern void _ZN7S1415C42v4Ev();
extern void _ZN7S1415C42v5Ev();
extern void _ZN7S1415C42v6Ev();
extern void _ZN7S1415C42v7Ev();
extern void _ZN7S1415C42v8Ev();
extern void _ZN7S1415C42v9Ev();
extern void _ZN7S1415C43v10Ev();
extern void _ZN7S1415C43v11Ev();
extern void _ZN7S1415C43v12Ev();
extern void _ZN7S1415C43v13Ev();
extern void _ZN7S1415C43v14Ev();
extern void _ZN7S1415C43v15Ev();
extern void _ZN7S1415C43v16Ev();
extern void _ZN7S1415C43v17Ev();
extern void _ZN7S1415C43v18Ev();
extern void _ZN7S1415C43v19Ev();
extern void _ZN7S1415C43v20Ev();
extern void _ZN7S1415C43v21Ev();
extern void _ZN7S1415C43v22Ev();
extern void _ZN7S1415C43v23Ev();
extern void _ZN7S1415C43v24Ev();
extern void _ZN7S1415C43v25Ev();
extern void _ZN7S1415C43v26Ev();
extern void _ZN7S1415C43v27Ev();
extern void _ZN7S1415C43v28Ev();
extern void _ZN7S1415C43v29Ev();
extern void _ZN7S1415C43v30Ev();
extern void _ZN7S1415C43v31Ev();
extern void _ZN7S1415C43v32Ev();
extern void _ZN7S1415C43v33Ev();
extern void _ZN7S1415C43v34Ev();
extern void _ZN7S1415C43v35Ev();
extern void _ZN7S1415C43v36Ev();
extern void _ZN7S1415C43v37Ev();
extern void _ZN7S1415C43v38Ev();
extern void _ZN7S1415C43v39Ev();
extern void _ZN7S1415C43v40Ev();
extern void _ZN7S1415C43v41Ev();
extern void _ZN7S1415C43v42Ev();
extern void _ZN7S1415C43v43Ev();
extern void _ZN7S1415C43v44Ev();
extern void _ZN7S1415C43v45Ev();
extern void _ZN7S1415C43v46Ev();
extern void _ZN7S1415C43v47Ev();
extern void _ZN7S1415C43v48Ev();
extern void _ZN7S1415C43v49Ev();
extern void _ZN7S1415C43v50Ev();
extern void _ZN7S1415C43v51Ev();
extern void _ZN7S1415C43v52Ev();
extern void _ZN7S1415C43v53Ev();
extern void _ZN7S1415C43v54Ev();
extern void _ZN7S1415C43v55Ev();
extern void _ZN7S1415C43v56Ev();
extern void _ZN7S1415C43v57Ev();
extern void _ZN7S1415C43v58Ev();
extern void _ZN7S1415C43v59Ev();
extern void _ZN7S1415C43v60Ev();
extern void _ZN7S1415C43v61Ev();
extern void _ZN7S1415C43v62Ev();
extern void _ZN7S1415C43v63Ev();
extern void _ZN7S1415C43v64Ev();
extern void _ZN7S1415C43v65Ev();
extern void _ZN7S1415C43v66Ev();
extern void _ZN7S1415C43v67Ev();
extern void _ZN7S1415C33v68Ev();
extern void _ZN7S1415C33v69Ev();
extern void _ZN7S1415C33v70Ev();
extern void _ZN7S1415C33v71Ev();
extern void _ZN7S1415C33v72Ev();
extern void _ZN7S1415C33v73Ev();
extern void _ZN7S1415C33v74Ev();
extern void _ZN7S1415C33v75Ev();
extern void _ZN7S1415C33v76Ev();
extern void _ZN7S1415C33v77Ev();
extern void _ZN7S1415C33v78Ev();
extern void _ZN7S1415C33v79Ev();
extern void _ZN7S1415C33v80Ev();
extern void _ZN7S1415C33v81Ev();
extern void _ZN7S1415C33v82Ev();
extern void _ZN7S1415C33v83Ev();
extern void _ZN7S1415C33v84Ev();
extern void _ZN7S1415C33v85Ev();
extern void _ZN7S1415C33v86Ev();
extern void _ZN7S1415C33v87Ev();
extern void _ZN7S1415C33v88Ev();
extern void _ZN7S1415C33v89Ev();
extern void _ZN7S1415C33v90Ev();
extern void _ZN7S1415C33v91Ev();
extern void _ZN7S1415C33v92Ev();
extern void _ZN7S1415C33v93Ev();
extern void _ZN7S1415C33v94Ev();
extern void _ZN7S1415C23v95Ev();
extern void _ZN7S1415C23v96Ev();
extern void _ZN7S1415C23v97Ev();
extern void _ZN7S1415C23v98Ev();
extern void _ZN7S1415C23v99Ev();
extern void _ZN7S1415C24v100Ev();
extern void _ZN7S1415C24v101Ev();
extern void _ZN7S1415C24v102Ev();
extern void _ZN7S1415C24v103Ev();
extern void _ZN7S1415C24v104Ev();
extern void _ZN7S1415C24v105Ev();
extern void _ZN7S1415C24v106Ev();
extern void _ZN7S1415C24v107Ev();
extern void _ZN7S1415C24v108Ev();
extern void _ZN7S1415C24v109Ev();
extern void _ZN7S1415C24v110Ev();
extern void _ZN7S1415C24v111Ev();
extern void _ZN7S1415C24v112Ev();
static  VTBL_ENTRY vtc_S1415C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1415C2[0]),
  (VTBL_ENTRY)&_ZN7S1415C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1415C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v95Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v96Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v97Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v98Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v99Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v100Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v101Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v102Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v103Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v104Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v105Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v106Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v107Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v108Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v109Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v110Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v111Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v112Ev,
};
extern VTBL_ENTRY _ZTI7S1415C2[];
extern  VTBL_ENTRY _ZTV7S1415C2[];
Class_Descriptor cd_S1415C2 = {  "S1415C2", // class name
  bases_S1415C2, 2,
  &(vtc_S1415C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,196), // object size
  NSPAIRA(_ZTI7S1415C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1415C2),113, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S1415C1 ::~S1415C1(){ note_dtor("S1415C1", this);}
void  S1415C1 ::v1(){vfunc_called(this, "_ZN7S1415C12v1Ev");}
void  S1415C1 ::v2(){vfunc_called(this, "_ZN7S1415C12v2Ev");}
void  S1415C1 ::v3(){vfunc_called(this, "_ZN7S1415C12v3Ev");}
S1415C1 ::S1415C1(){ note_ctor("S1415C1", this);} // tgen

static void Test_S1415C1()
{
  extern Class_Descriptor cd_S1415C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,50)];
    init_test(&cd_S1415C1, buf);
    S1415C1 *dp, &lv = *(dp=new (buf) S1415C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,196), "sizeof(S1415C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1415C1)");
    check_base_class_offset(lv, (S1415C4*)(S1415C3*)(S1415C2*), 0, "S1415C1");
    check_base_class_offset(lv, (S1415C3*)(S1415C2*), 0, "S1415C1");
    check_base_class_offset(lv, (S1415C2*), 0, "S1415C1");
    set_bf_and_test(lv, s1415c1f0, ABISELECT(249,193), 0, 1, 1, "S1415C1");
    test_class_info(&lv, &cd_S1415C1);
    dp->~S1415C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1415C1(Test_S1415C1, "S1415C1", ABISELECT(256,196));

#else // __cplusplus

extern void _ZN7S1415C1C1Ev();
extern void _ZN7S1415C1D1Ev();
Name_Map name_map_S1415C1[] = {
  NSPAIR(_ZN7S1415C1C1Ev),
  NSPAIR(_ZN7S1415C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1415C4;
extern VTBL_ENTRY _ZTI7S1415C4[];
extern  VTBL_ENTRY _ZTV7S1415C4[];
extern Class_Descriptor cd_S1415C3;
extern VTBL_ENTRY _ZTI7S1415C3[];
extern  VTBL_ENTRY _ZTV7S1415C3[];
extern Class_Descriptor cd_S1415C2;
extern VTBL_ENTRY _ZTI7S1415C2[];
extern  VTBL_ENTRY _ZTV7S1415C2[];
static Base_Class bases_S1415C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1415C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1415C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1415C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1415C1[];
extern void _ZN7S1415C1D1Ev();
extern void _ZN7S1415C1D0Ev();
extern void _ZN7S1415C42v4Ev();
extern void _ZN7S1415C42v5Ev();
extern void _ZN7S1415C42v6Ev();
extern void _ZN7S1415C42v7Ev();
extern void _ZN7S1415C42v8Ev();
extern void _ZN7S1415C42v9Ev();
extern void _ZN7S1415C43v10Ev();
extern void _ZN7S1415C43v11Ev();
extern void _ZN7S1415C43v12Ev();
extern void _ZN7S1415C43v13Ev();
extern void _ZN7S1415C43v14Ev();
extern void _ZN7S1415C43v15Ev();
extern void _ZN7S1415C43v16Ev();
extern void _ZN7S1415C43v17Ev();
extern void _ZN7S1415C43v18Ev();
extern void _ZN7S1415C43v19Ev();
extern void _ZN7S1415C43v20Ev();
extern void _ZN7S1415C43v21Ev();
extern void _ZN7S1415C43v22Ev();
extern void _ZN7S1415C43v23Ev();
extern void _ZN7S1415C43v24Ev();
extern void _ZN7S1415C43v25Ev();
extern void _ZN7S1415C43v26Ev();
extern void _ZN7S1415C43v27Ev();
extern void _ZN7S1415C43v28Ev();
extern void _ZN7S1415C43v29Ev();
extern void _ZN7S1415C43v30Ev();
extern void _ZN7S1415C43v31Ev();
extern void _ZN7S1415C43v32Ev();
extern void _ZN7S1415C43v33Ev();
extern void _ZN7S1415C43v34Ev();
extern void _ZN7S1415C43v35Ev();
extern void _ZN7S1415C43v36Ev();
extern void _ZN7S1415C43v37Ev();
extern void _ZN7S1415C43v38Ev();
extern void _ZN7S1415C43v39Ev();
extern void _ZN7S1415C43v40Ev();
extern void _ZN7S1415C43v41Ev();
extern void _ZN7S1415C43v42Ev();
extern void _ZN7S1415C43v43Ev();
extern void _ZN7S1415C43v44Ev();
extern void _ZN7S1415C43v45Ev();
extern void _ZN7S1415C43v46Ev();
extern void _ZN7S1415C43v47Ev();
extern void _ZN7S1415C43v48Ev();
extern void _ZN7S1415C43v49Ev();
extern void _ZN7S1415C43v50Ev();
extern void _ZN7S1415C43v51Ev();
extern void _ZN7S1415C43v52Ev();
extern void _ZN7S1415C43v53Ev();
extern void _ZN7S1415C43v54Ev();
extern void _ZN7S1415C43v55Ev();
extern void _ZN7S1415C43v56Ev();
extern void _ZN7S1415C43v57Ev();
extern void _ZN7S1415C43v58Ev();
extern void _ZN7S1415C43v59Ev();
extern void _ZN7S1415C43v60Ev();
extern void _ZN7S1415C43v61Ev();
extern void _ZN7S1415C43v62Ev();
extern void _ZN7S1415C43v63Ev();
extern void _ZN7S1415C43v64Ev();
extern void _ZN7S1415C43v65Ev();
extern void _ZN7S1415C43v66Ev();
extern void _ZN7S1415C43v67Ev();
extern void _ZN7S1415C33v68Ev();
extern void _ZN7S1415C33v69Ev();
extern void _ZN7S1415C33v70Ev();
extern void _ZN7S1415C33v71Ev();
extern void _ZN7S1415C33v72Ev();
extern void _ZN7S1415C33v73Ev();
extern void _ZN7S1415C33v74Ev();
extern void _ZN7S1415C33v75Ev();
extern void _ZN7S1415C33v76Ev();
extern void _ZN7S1415C33v77Ev();
extern void _ZN7S1415C33v78Ev();
extern void _ZN7S1415C33v79Ev();
extern void _ZN7S1415C33v80Ev();
extern void _ZN7S1415C33v81Ev();
extern void _ZN7S1415C33v82Ev();
extern void _ZN7S1415C33v83Ev();
extern void _ZN7S1415C33v84Ev();
extern void _ZN7S1415C33v85Ev();
extern void _ZN7S1415C33v86Ev();
extern void _ZN7S1415C33v87Ev();
extern void _ZN7S1415C33v88Ev();
extern void _ZN7S1415C33v89Ev();
extern void _ZN7S1415C33v90Ev();
extern void _ZN7S1415C33v91Ev();
extern void _ZN7S1415C33v92Ev();
extern void _ZN7S1415C33v93Ev();
extern void _ZN7S1415C33v94Ev();
extern void _ZN7S1415C23v95Ev();
extern void _ZN7S1415C23v96Ev();
extern void _ZN7S1415C23v97Ev();
extern void _ZN7S1415C23v98Ev();
extern void _ZN7S1415C23v99Ev();
extern void _ZN7S1415C24v100Ev();
extern void _ZN7S1415C24v101Ev();
extern void _ZN7S1415C24v102Ev();
extern void _ZN7S1415C24v103Ev();
extern void _ZN7S1415C24v104Ev();
extern void _ZN7S1415C24v105Ev();
extern void _ZN7S1415C24v106Ev();
extern void _ZN7S1415C24v107Ev();
extern void _ZN7S1415C24v108Ev();
extern void _ZN7S1415C24v109Ev();
extern void _ZN7S1415C24v110Ev();
extern void _ZN7S1415C24v111Ev();
extern void _ZN7S1415C24v112Ev();
extern void _ZN7S1415C12v1Ev();
extern void _ZN7S1415C12v2Ev();
extern void _ZN7S1415C12v3Ev();
static  VTBL_ENTRY vtc_S1415C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1415C1[0]),
  (VTBL_ENTRY)&_ZN7S1415C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1415C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1415C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1415C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1415C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v95Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v96Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v97Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v98Ev,
  (VTBL_ENTRY)&_ZN7S1415C23v99Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v100Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v101Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v102Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v103Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v104Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v105Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v106Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v107Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v108Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v109Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v110Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v111Ev,
  (VTBL_ENTRY)&_ZN7S1415C24v112Ev,
  (VTBL_ENTRY)&_ZN7S1415C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1415C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1415C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1415C1[];
extern  VTBL_ENTRY _ZTV7S1415C1[];
Class_Descriptor cd_S1415C1 = {  "S1415C1", // class name
  bases_S1415C1, 3,
  &(vtc_S1415C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,196), // object size
  NSPAIRA(_ZTI7S1415C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1415C1),116, //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  S3445C3  {
  int s3445c3f0;
  __tsi64 s3445c3f1;
  void *s3445c3f2[4];
  int s3445c3f3[2];
  void *s3445c3f4;
  ::S3223C4_nt s3445c3f5;
  void *s3445c3f6[2];
  virtual  ~S3445C3(); // _ZN7S3445C3D1Ev
  virtual void  v9(); // _ZN7S3445C32v9Ev
  virtual void  v10(); // _ZN7S3445C33v10Ev
  virtual void  v11(); // _ZN7S3445C33v11Ev
  virtual void  v12(); // _ZN7S3445C33v12Ev
  virtual void  v13(); // _ZN7S3445C33v13Ev
  virtual void  v14(); // _ZN7S3445C33v14Ev
  virtual void  v15(); // _ZN7S3445C33v15Ev
  virtual void  v16(); // _ZN7S3445C33v16Ev
  virtual void  v17(); // _ZN7S3445C33v17Ev
  virtual void  v18(); // _ZN7S3445C33v18Ev
  virtual void  v19(); // _ZN7S3445C33v19Ev
  virtual void  v20(); // _ZN7S3445C33v20Ev
  virtual void  v21(); // _ZN7S3445C33v21Ev
  virtual void  v22(); // _ZN7S3445C33v22Ev
  virtual void  v23(); // _ZN7S3445C33v23Ev
  virtual void  v24(); // _ZN7S3445C33v24Ev
  virtual void  v25(); // _ZN7S3445C33v25Ev
  virtual void  v26(); // _ZN7S3445C33v26Ev
  virtual void  v27(); // _ZN7S3445C33v27Ev
  virtual void  v28(); // _ZN7S3445C33v28Ev
  virtual void  v29(); // _ZN7S3445C33v29Ev
  virtual void  v30(); // _ZN7S3445C33v30Ev
  virtual void  v31(); // _ZN7S3445C33v31Ev
  virtual void  v32(); // _ZN7S3445C33v32Ev
  virtual void  v33(); // _ZN7S3445C33v33Ev
  virtual void  v34(); // _ZN7S3445C33v34Ev
  virtual void  v35(); // _ZN7S3445C33v35Ev
  virtual void  v36(); // _ZN7S3445C33v36Ev
  virtual void  v37(); // _ZN7S3445C33v37Ev
  virtual void  v38(); // _ZN7S3445C33v38Ev
  virtual void  v39(); // _ZN7S3445C33v39Ev
  virtual void  v40(); // _ZN7S3445C33v40Ev
  virtual void  v41(); // _ZN7S3445C33v41Ev
  virtual void  v42(); // _ZN7S3445C33v42Ev
  virtual void  v43(); // _ZN7S3445C33v43Ev
  virtual void  v44(); // _ZN7S3445C33v44Ev
  virtual void  v45(); // _ZN7S3445C33v45Ev
  virtual void  v46(); // _ZN7S3445C33v46Ev
  virtual void  v47(); // _ZN7S3445C33v47Ev
  virtual void  v48(); // _ZN7S3445C33v48Ev
  virtual void  v49(); // _ZN7S3445C33v49Ev
  virtual void  v50(); // _ZN7S3445C33v50Ev
  virtual void  v51(); // _ZN7S3445C33v51Ev
  virtual void  v52(); // _ZN7S3445C33v52Ev
  virtual void  v53(); // _ZN7S3445C33v53Ev
  virtual void  v54(); // _ZN7S3445C33v54Ev
  virtual void  v55(); // _ZN7S3445C33v55Ev
  virtual void  v56(); // _ZN7S3445C33v56Ev
  virtual void  v57(); // _ZN7S3445C33v57Ev
  virtual void  v58(); // _ZN7S3445C33v58Ev
  virtual void  v59(); // _ZN7S3445C33v59Ev
  virtual void  v60(); // _ZN7S3445C33v60Ev
  virtual void  v61(); // _ZN7S3445C33v61Ev
  virtual void  v62(); // _ZN7S3445C33v62Ev
  virtual void  v63(); // _ZN7S3445C33v63Ev
  virtual void  v64(); // _ZN7S3445C33v64Ev
  virtual void  v65(); // _ZN7S3445C33v65Ev
  virtual void  v66(); // _ZN7S3445C33v66Ev
  virtual void  v67(); // _ZN7S3445C33v67Ev
  virtual void  v68(); // _ZN7S3445C33v68Ev
  virtual void  v69(); // _ZN7S3445C33v69Ev
  virtual void  v70(); // _ZN7S3445C33v70Ev
  virtual void  v71(); // _ZN7S3445C33v71Ev
  virtual void  v72(); // _ZN7S3445C33v72Ev
  S3445C3(); // tgen
};
//SIG(-1 S3445C3) 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]}


 S3445C3 ::~S3445C3(){ note_dtor("S3445C3", this);}
void  S3445C3 ::v9(){vfunc_called(this, "_ZN7S3445C32v9Ev");}
void  S3445C3 ::v10(){vfunc_called(this, "_ZN7S3445C33v10Ev");}
void  S3445C3 ::v11(){vfunc_called(this, "_ZN7S3445C33v11Ev");}
void  S3445C3 ::v12(){vfunc_called(this, "_ZN7S3445C33v12Ev");}
void  S3445C3 ::v13(){vfunc_called(this, "_ZN7S3445C33v13Ev");}
void  S3445C3 ::v14(){vfunc_called(this, "_ZN7S3445C33v14Ev");}
void  S3445C3 ::v15(){vfunc_called(this, "_ZN7S3445C33v15Ev");}
void  S3445C3 ::v16(){vfunc_called(this, "_ZN7S3445C33v16Ev");}
void  S3445C3 ::v17(){vfunc_called(this, "_ZN7S3445C33v17Ev");}
void  S3445C3 ::v18(){vfunc_called(this, "_ZN7S3445C33v18Ev");}
void  S3445C3 ::v19(){vfunc_called(this, "_ZN7S3445C33v19Ev");}
void  S3445C3 ::v20(){vfunc_called(this, "_ZN7S3445C33v20Ev");}
void  S3445C3 ::v21(){vfunc_called(this, "_ZN7S3445C33v21Ev");}
void  S3445C3 ::v22(){vfunc_called(this, "_ZN7S3445C33v22Ev");}
void  S3445C3 ::v23(){vfunc_called(this, "_ZN7S3445C33v23Ev");}
void  S3445C3 ::v24(){vfunc_called(this, "_ZN7S3445C33v24Ev");}
void  S3445C3 ::v25(){vfunc_called(this, "_ZN7S3445C33v25Ev");}
void  S3445C3 ::v26(){vfunc_called(this, "_ZN7S3445C33v26Ev");}
void  S3445C3 ::v27(){vfunc_called(this, "_ZN7S3445C33v27Ev");}
void  S3445C3 ::v28(){vfunc_called(this, "_ZN7S3445C33v28Ev");}
void  S3445C3 ::v29(){vfunc_called(this, "_ZN7S3445C33v29Ev");}
void  S3445C3 ::v30(){vfunc_called(this, "_ZN7S3445C33v30Ev");}
void  S3445C3 ::v31(){vfunc_called(this, "_ZN7S3445C33v31Ev");}
void  S3445C3 ::v32(){vfunc_called(this, "_ZN7S3445C33v32Ev");}
void  S3445C3 ::v33(){vfunc_called(this, "_ZN7S3445C33v33Ev");}
void  S3445C3 ::v34(){vfunc_called(this, "_ZN7S3445C33v34Ev");}
void  S3445C3 ::v35(){vfunc_called(this, "_ZN7S3445C33v35Ev");}
void  S3445C3 ::v36(){vfunc_called(this, "_ZN7S3445C33v36Ev");}
void  S3445C3 ::v37(){vfunc_called(this, "_ZN7S3445C33v37Ev");}
void  S3445C3 ::v38(){vfunc_called(this, "_ZN7S3445C33v38Ev");}
void  S3445C3 ::v39(){vfunc_called(this, "_ZN7S3445C33v39Ev");}
void  S3445C3 ::v40(){vfunc_called(this, "_ZN7S3445C33v40Ev");}
void  S3445C3 ::v41(){vfunc_called(this, "_ZN7S3445C33v41Ev");}
void  S3445C3 ::v42(){vfunc_called(this, "_ZN7S3445C33v42Ev");}
void  S3445C3 ::v43(){vfunc_called(this, "_ZN7S3445C33v43Ev");}
void  S3445C3 ::v44(){vfunc_called(this, "_ZN7S3445C33v44Ev");}
void  S3445C3 ::v45(){vfunc_called(this, "_ZN7S3445C33v45Ev");}
void  S3445C3 ::v46(){vfunc_called(this, "_ZN7S3445C33v46Ev");}
void  S3445C3 ::v47(){vfunc_called(this, "_ZN7S3445C33v47Ev");}
void  S3445C3 ::v48(){vfunc_called(this, "_ZN7S3445C33v48Ev");}
void  S3445C3 ::v49(){vfunc_called(this, "_ZN7S3445C33v49Ev");}
void  S3445C3 ::v50(){vfunc_called(this, "_ZN7S3445C33v50Ev");}
void  S3445C3 ::v51(){vfunc_called(this, "_ZN7S3445C33v51Ev");}
void  S3445C3 ::v52(){vfunc_called(this, "_ZN7S3445C33v52Ev");}
void  S3445C3 ::v53(){vfunc_called(this, "_ZN7S3445C33v53Ev");}
void  S3445C3 ::v54(){vfunc_called(this, "_ZN7S3445C33v54Ev");}
void  S3445C3 ::v55(){vfunc_called(this, "_ZN7S3445C33v55Ev");}
void  S3445C3 ::v56(){vfunc_called(this, "_ZN7S3445C33v56Ev");}
void  S3445C3 ::v57(){vfunc_called(this, "_ZN7S3445C33v57Ev");}
void  S3445C3 ::v58(){vfunc_called(this, "_ZN7S3445C33v58Ev");}
void  S3445C3 ::v59(){vfunc_called(this, "_ZN7S3445C33v59Ev");}
void  S3445C3 ::v60(){vfunc_called(this, "_ZN7S3445C33v60Ev");}
void  S3445C3 ::v61(){vfunc_called(this, "_ZN7S3445C33v61Ev");}
void  S3445C3 ::v62(){vfunc_called(this, "_ZN7S3445C33v62Ev");}
void  S3445C3 ::v63(){vfunc_called(this, "_ZN7S3445C33v63Ev");}
void  S3445C3 ::v64(){vfunc_called(this, "_ZN7S3445C33v64Ev");}
void  S3445C3 ::v65(){vfunc_called(this, "_ZN7S3445C33v65Ev");}
void  S3445C3 ::v66(){vfunc_called(this, "_ZN7S3445C33v66Ev");}
void  S3445C3 ::v67(){vfunc_called(this, "_ZN7S3445C33v67Ev");}
void  S3445C3 ::v68(){vfunc_called(this, "_ZN7S3445C33v68Ev");}
void  S3445C3 ::v69(){vfunc_called(this, "_ZN7S3445C33v69Ev");}
void  S3445C3 ::v70(){vfunc_called(this, "_ZN7S3445C33v70Ev");}
void  S3445C3 ::v71(){vfunc_called(this, "_ZN7S3445C33v71Ev");}
void  S3445C3 ::v72(){vfunc_called(this, "_ZN7S3445C33v72Ev");}
S3445C3 ::S3445C3(){ note_ctor("S3445C3", this);} // tgen

static void Test_S3445C3()
{
  extern Class_Descriptor cd_S3445C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3445C3, buf);
    S3445C3 *dp, &lv = *(dp=new (buf) S3445C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3445C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C3)");
    check_field_offset(lv, s3445c3f0, ABISELECT(8,4), "S3445C3.s3445c3f0");
    check_field_offset(lv, s3445c3f1, ABISELECT(16,8), "S3445C3.s3445c3f1");
    check_field_offset(lv, s3445c3f2, ABISELECT(24,16), "S3445C3.s3445c3f2");
    check_field_offset(lv, s3445c3f3, ABISELECT(56,32), "S3445C3.s3445c3f3");
    check_field_offset(lv, s3445c3f4, ABISELECT(64,40), "S3445C3.s3445c3f4");
    check_field_offset(lv, s3445c3f5, ABISELECT(72,44), "S3445C3.s3445c3f5");
    check_field_offset(lv, s3445c3f6, ABISELECT(80,52), "S3445C3.s3445c3f6");
    test_class_info(&lv, &cd_S3445C3);
    dp->~S3445C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C3(Test_S3445C3, "S3445C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3445C3C1Ev();
extern void _ZN7S3445C3D1Ev();
Name_Map name_map_S3445C3[] = {
  NSPAIR(_ZN7S3445C3C1Ev),
  NSPAIR(_ZN7S3445C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3445C3[];
extern void _ZN7S3445C3D1Ev();
extern void _ZN7S3445C3D0Ev();
extern void _ZN7S3445C32v9Ev();
extern void _ZN7S3445C33v10Ev();
extern void _ZN7S3445C33v11Ev();
extern void _ZN7S3445C33v12Ev();
extern void _ZN7S3445C33v13Ev();
extern void _ZN7S3445C33v14Ev();
extern void _ZN7S3445C33v15Ev();
extern void _ZN7S3445C33v16Ev();
extern void _ZN7S3445C33v17Ev();
extern void _ZN7S3445C33v18Ev();
extern void _ZN7S3445C33v19Ev();
extern void _ZN7S3445C33v20Ev();
extern void _ZN7S3445C33v21Ev();
extern void _ZN7S3445C33v22Ev();
extern void _ZN7S3445C33v23Ev();
extern void _ZN7S3445C33v24Ev();
extern void _ZN7S3445C33v25Ev();
extern void _ZN7S3445C33v26Ev();
extern void _ZN7S3445C33v27Ev();
extern void _ZN7S3445C33v28Ev();
extern void _ZN7S3445C33v29Ev();
extern void _ZN7S3445C33v30Ev();
extern void _ZN7S3445C33v31Ev();
extern void _ZN7S3445C33v32Ev();
extern void _ZN7S3445C33v33Ev();
extern void _ZN7S3445C33v34Ev();
extern void _ZN7S3445C33v35Ev();
extern void _ZN7S3445C33v36Ev();
extern void _ZN7S3445C33v37Ev();
extern void _ZN7S3445C33v38Ev();
extern void _ZN7S3445C33v39Ev();
extern void _ZN7S3445C33v40Ev();
extern void _ZN7S3445C33v41Ev();
extern void _ZN7S3445C33v42Ev();
extern void _ZN7S3445C33v43Ev();
extern void _ZN7S3445C33v44Ev();
extern void _ZN7S3445C33v45Ev();
extern void _ZN7S3445C33v46Ev();
extern void _ZN7S3445C33v47Ev();
extern void _ZN7S3445C33v48Ev();
extern void _ZN7S3445C33v49Ev();
extern void _ZN7S3445C33v50Ev();
extern void _ZN7S3445C33v51Ev();
extern void _ZN7S3445C33v52Ev();
extern void _ZN7S3445C33v53Ev();
extern void _ZN7S3445C33v54Ev();
extern void _ZN7S3445C33v55Ev();
extern void _ZN7S3445C33v56Ev();
extern void _ZN7S3445C33v57Ev();
extern void _ZN7S3445C33v58Ev();
extern void _ZN7S3445C33v59Ev();
extern void _ZN7S3445C33v60Ev();
extern void _ZN7S3445C33v61Ev();
extern void _ZN7S3445C33v62Ev();
extern void _ZN7S3445C33v63Ev();
extern void _ZN7S3445C33v64Ev();
extern void _ZN7S3445C33v65Ev();
extern void _ZN7S3445C33v66Ev();
extern void _ZN7S3445C33v67Ev();
extern void _ZN7S3445C33v68Ev();
extern void _ZN7S3445C33v69Ev();
extern void _ZN7S3445C33v70Ev();
extern void _ZN7S3445C33v71Ev();
extern void _ZN7S3445C33v72Ev();
static  VTBL_ENTRY vtc_S3445C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3445C3[0]),
  (VTBL_ENTRY)&_ZN7S3445C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3445C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3445C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v72Ev,
};
extern VTBL_ENTRY _ZTI7S3445C3[];
extern  VTBL_ENTRY _ZTV7S3445C3[];
Class_Descriptor cd_S3445C3 = {  "S3445C3", // class name
  0,0,//no base classes
  &(vtc_S3445C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3445C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3445C3),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  S3445C6  : S3223C7_nt {
};
//SIG(-1 S3445C6) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3445C6()
{
  extern Class_Descriptor cd_S3445C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3445C6, buf);
    S3445C6 &lv = *(new (buf) S3445C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3445C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C6)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S3445C6");
    test_class_info(&lv, &cd_S3445C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C6(Test_S3445C6, "S3445C6", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
static Base_Class bases_S3445C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3445C6 = {  "S3445C6", // class name
  bases_S3445C6, 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  S3445C5_nt  : S3445C6 {
  void *s3445c5f0;
};
//SIG(-1 S3445C5_nt) C1{ BC2{ BC3{ m Fp Fi[2]}} Fp}



//skip512 S3445C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
extern Class_Descriptor cd_S3445C6;
static Base_Class bases_S3445C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3445C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3445C8_nt  {
  ::S3223C17 s3445c8f0;
  ::S3223C17 s3445c8f1;
  int s3445c8f2;
  ::S3223C17 s3445c8f3;
  ::S3223C18 s3445c8f4;
  ::S3223C17 s3445c8f5;
  int s3445c8f6;
  void  mf3445c8(); // _ZN10S3445C8_nt8mf3445c8Ev
};
//SIG(-1 S3445C8_nt) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC2 Fi FC2 FC3 FC2 Fi}


void  S3445C8_nt ::mf3445c8(){}

//skip512 S3445C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3445C2  : S3445C3 {
  ::S3445C5_nt s3445c2f0;
  ::S3445C8_nt s3445c2f1;
  virtual  ~S3445C2(); // _ZN7S3445C2D1Ev
  virtual void  v73(); // _ZN7S3445C23v73Ev
  virtual void  v74(); // _ZN7S3445C23v74Ev
  virtual void  v75(); // _ZN7S3445C23v75Ev
  S3445C2(); // tgen
};
//SIG(-1 S3445C2) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 FC4{ BC5{ BC6{ m Fp Fi[2]}} Fp} FC7{ m FC8{ BC9{ BC6}} FC8 Fi FC8 FC9 FC8 Fi}}


 S3445C2 ::~S3445C2(){ note_dtor("S3445C2", this);}
void  S3445C2 ::v73(){vfunc_called(this, "_ZN7S3445C23v73Ev");}
void  S3445C2 ::v74(){vfunc_called(this, "_ZN7S3445C23v74Ev");}
void  S3445C2 ::v75(){vfunc_called(this, "_ZN7S3445C23v75Ev");}
S3445C2 ::S3445C2(){ note_ctor("S3445C2", this);} // tgen

static void Test_S3445C2()
{
  extern Class_Descriptor cd_S3445C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,37)];
    init_test(&cd_S3445C2, buf);
    S3445C2 *dp, &lv = *(dp=new (buf) S3445C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,144), "sizeof(S3445C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C2)");
    check_base_class_offset(lv, (S3445C3*), 0, "S3445C2");
    check_field_offset(lv, s3445c2f0, ABISELECT(96,60), "S3445C2.s3445c2f0");
    check_field_offset(lv, s3445c2f1, ABISELECT(120,76), "S3445C2.s3445c2f1");
    test_class_info(&lv, &cd_S3445C2);
    dp->~S3445C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C2(Test_S3445C2, "S3445C2", ABISELECT(216,144));

#else // __cplusplus

extern void _ZN7S3445C2C1Ev();
extern void _ZN7S3445C2D1Ev();
Name_Map name_map_S3445C2[] = {
  NSPAIR(_ZN7S3445C2C1Ev),
  NSPAIR(_ZN7S3445C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3445C3;
extern VTBL_ENTRY _ZTI7S3445C3[];
extern  VTBL_ENTRY _ZTV7S3445C3[];
static Base_Class bases_S3445C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3445C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3445C2[];
extern void _ZN7S3445C2D1Ev();
extern void _ZN7S3445C2D0Ev();
extern void _ZN7S3445C32v9Ev();
extern void _ZN7S3445C33v10Ev();
extern void _ZN7S3445C33v11Ev();
extern void _ZN7S3445C33v12Ev();
extern void _ZN7S3445C33v13Ev();
extern void _ZN7S3445C33v14Ev();
extern void _ZN7S3445C33v15Ev();
extern void _ZN7S3445C33v16Ev();
extern void _ZN7S3445C33v17Ev();
extern void _ZN7S3445C33v18Ev();
extern void _ZN7S3445C33v19Ev();
extern void _ZN7S3445C33v20Ev();
extern void _ZN7S3445C33v21Ev();
extern void _ZN7S3445C33v22Ev();
extern void _ZN7S3445C33v23Ev();
extern void _ZN7S3445C33v24Ev();
extern void _ZN7S3445C33v25Ev();
extern void _ZN7S3445C33v26Ev();
extern void _ZN7S3445C33v27Ev();
extern void _ZN7S3445C33v28Ev();
extern void _ZN7S3445C33v29Ev();
extern void _ZN7S3445C33v30Ev();
extern void _ZN7S3445C33v31Ev();
extern void _ZN7S3445C33v32Ev();
extern void _ZN7S3445C33v33Ev();
extern void _ZN7S3445C33v34Ev();
extern void _ZN7S3445C33v35Ev();
extern void _ZN7S3445C33v36Ev();
extern void _ZN7S3445C33v37Ev();
extern void _ZN7S3445C33v38Ev();
extern void _ZN7S3445C33v39Ev();
extern void _ZN7S3445C33v40Ev();
extern void _ZN7S3445C33v41Ev();
extern void _ZN7S3445C33v42Ev();
extern void _ZN7S3445C33v43Ev();
extern void _ZN7S3445C33v44Ev();
extern void _ZN7S3445C33v45Ev();
extern void _ZN7S3445C33v46Ev();
extern void _ZN7S3445C33v47Ev();
extern void _ZN7S3445C33v48Ev();
extern void _ZN7S3445C33v49Ev();
extern void _ZN7S3445C33v50Ev();
extern void _ZN7S3445C33v51Ev();
extern void _ZN7S3445C33v52Ev();
extern void _ZN7S3445C33v53Ev();
extern void _ZN7S3445C33v54Ev();
extern void _ZN7S3445C33v55Ev();
extern void _ZN7S3445C33v56Ev();
extern void _ZN7S3445C33v57Ev();
extern void _ZN7S3445C33v58Ev();
extern void _ZN7S3445C33v59Ev();
extern void _ZN7S3445C33v60Ev();
extern void _ZN7S3445C33v61Ev();
extern void _ZN7S3445C33v62Ev();
extern void _ZN7S3445C33v63Ev();
extern void _ZN7S3445C33v64Ev();
extern void _ZN7S3445C33v65Ev();
extern void _ZN7S3445C33v66Ev();
extern void _ZN7S3445C33v67Ev();
extern void _ZN7S3445C33v68Ev();
extern void _ZN7S3445C33v69Ev();
extern void _ZN7S3445C33v70Ev();
extern void _ZN7S3445C33v71Ev();
extern void _ZN7S3445C33v72Ev();
extern void _ZN7S3445C23v73Ev();
extern void _ZN7S3445C23v74Ev();
extern void _ZN7S3445C23v75Ev();
static  VTBL_ENTRY vtc_S3445C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3445C2[0]),
  (VTBL_ENTRY)&_ZN7S3445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3445C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3445C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3445C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3445C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3445C23v75Ev,
};
extern VTBL_ENTRY _ZTI7S3445C2[];
extern  VTBL_ENTRY _ZTV7S3445C2[];
Class_Descriptor cd_S3445C2 = {  "S3445C2", // class name
  bases_S3445C2, 1,
  &(vtc_S3445C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,144), // object size
  NSPAIRA(_ZTI7S3445C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3445C2),71, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S3445C16()
{
  extern Class_Descriptor cd_S3445C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3445C16, buf);
    S3445C16 &lv = *(new (buf) S3445C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3445C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C16)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S3445C16");
    test_class_info(&lv, &cd_S3445C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C16(Test_S3445C16, "S3445C16", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
static Base_Class bases_S3445C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3445C16 = {  "S3445C16", // class name
  bases_S3445C16, 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  S3445C15_nt  {
  ::S3445C16 s3445c15f0;
  void *s3445c15f1;
  int s3445c15f2;
  void  mf3445c15(); // _ZN11S3445C15_nt9mf3445c15Ev
};
//SIG(-1 S3445C15_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S3445C15_nt ::mf3445c15(){}

//skip512 S3445C15_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S3445C14_nt  : S3445C15_nt {
};
//SIG(-1 S3445C14_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S3445C14_nt

#else // __cplusplus

extern Class_Descriptor cd_S3445C15_nt;
static Base_Class bases_S3445C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3445C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3445C23  : S3223C7_nt {
};
//SIG(-1 S3445C23) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3445C23()
{
  extern Class_Descriptor cd_S3445C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3445C23, buf);
    S3445C23 &lv = *(new (buf) S3445C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3445C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C23)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S3445C23");
    test_class_info(&lv, &cd_S3445C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C23(Test_S3445C23, "S3445C23", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
static Base_Class bases_S3445C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3445C23 = {  "S3445C23", // class name
  bases_S3445C23, 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  S3445C22  {
  ::S3445C23 s3445c22f0;
  void *s3445c22f1;
  int s3445c22f2;
  void  mf3445c22(); // _ZN8S3445C229mf3445c22Ev
};
//SIG(-1 S3445C22) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S3445C22 ::mf3445c22(){}

static void Test_S3445C22()
{
  {
    init_simple_test("S3445C22");
    S3445C22 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3445C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C22)");
    check_field_offset(lv, s3445c22f0, 0, "S3445C22.s3445c22f0");
    check_field_offset(lv, s3445c22f1, ABISELECT(16,12), "S3445C22.s3445c22f1");
    check_field_offset(lv, s3445c22f2, ABISELECT(24,16), "S3445C22.s3445c22f2");
  }
}
static Arrange_To_Call_Me vS3445C22(Test_S3445C22, "S3445C22", ABISELECT(32,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S3445C21  : S3445C22 {
};
//SIG(-1 S3445C21) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



static void Test_S3445C21()
{
  extern Class_Descriptor cd_S3445C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3445C21, buf);
    S3445C21 &lv = *(new (buf) S3445C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3445C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C21)");
    check_base_class_offset(lv, (S3445C22*), 0, "S3445C21");
    test_class_info(&lv, &cd_S3445C21);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C21(Test_S3445C21, "S3445C21", ABISELECT(32,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S3445C28()
{
  extern Class_Descriptor cd_S3445C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3445C28, buf);
    S3445C28 &lv = *(new (buf) S3445C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3445C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C28)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S3445C28");
    test_class_info(&lv, &cd_S3445C28);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C28(Test_S3445C28, "S3445C28", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
static Base_Class bases_S3445C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3445C28 = {  "S3445C28", // class name
  bases_S3445C28, 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  S3445C1  : S3445C2 {
  void *s3445c1f0;
  ::S3223C12 s3445c1f1;
  ::S3223C6_nt s3445c1f2;
  ::S3445C14_nt s3445c1f3;
  ::S3445C14_nt s3445c1f4;
  int s3445c1f5[3];
  void *s3445c1f6[2];
  ::S3445C16 s3445c1f7;
  int s3445c1f8;
  ::S3445C21 s3445c1f9;
  int s3445c1f10;
  ::S3445C23 s3445c1f11;
  ::S3445C21 s3445c1f12;
  ::S3445C28 s3445c1f13;
  void *s3445c1f14[4];
  ::S3445C6 s3445c1f15;
  int s3445c1f16[14];
  virtual  ~S3445C1(); // _ZN7S3445C1D1Ev
  virtual void  v1(); // _ZN7S3445C12v1Ev
  virtual void  v2(); // _ZN7S3445C12v2Ev
  virtual void  v3(); // _ZN7S3445C12v3Ev
  virtual void  v4(); // _ZN7S3445C12v4Ev
  virtual void  v5(); // _ZN7S3445C12v5Ev
  virtual void  v6(); // _ZN7S3445C12v6Ev
  virtual void  v7(); // _ZN7S3445C12v7Ev
  virtual void  v8(); // _ZN7S3445C12v8Ev
  S3445C1(); // tgen
};
//SIG(1 S3445C1) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd v73 v74 v75 FC5{ BC6{ BC7{ m Fp Fi[2]}} Fp} FC8{ m FC9{ BC10{ BC7}} FC9 Fi FC9 FC10 FC9 Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC11{ BC7} FC12{ BC7} FC13{ BC14{ m FC15{ BC7} Fp Fi}} FC13 Fi[3] Fp[2] FC15 Fi FC16{ BC17{ m FC18{ BC7} Fp Fi}} Fi FC18 FC16 FC19{ BC7} Fp[4] FC6 Fi[14]}


 S3445C1 ::~S3445C1(){ note_dtor("S3445C1", this);}
void  S3445C1 ::v1(){vfunc_called(this, "_ZN7S3445C12v1Ev");}
void  S3445C1 ::v2(){vfunc_called(this, "_ZN7S3445C12v2Ev");}
void  S3445C1 ::v3(){vfunc_called(this, "_ZN7S3445C12v3Ev");}
void  S3445C1 ::v4(){vfunc_called(this, "_ZN7S3445C12v4Ev");}
void  S3445C1 ::v5(){vfunc_called(this, "_ZN7S3445C12v5Ev");}
void  S3445C1 ::v6(){vfunc_called(this, "_ZN7S3445C12v6Ev");}
void  S3445C1 ::v7(){vfunc_called(this, "_ZN7S3445C12v7Ev");}
void  S3445C1 ::v8(){vfunc_called(this, "_ZN7S3445C12v8Ev");}
S3445C1 ::S3445C1(){ note_ctor("S3445C1", this);} // tgen

static void Test_S3445C1()
{
  extern Class_Descriptor cd_S3445C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(74,101)];
    init_test(&cd_S3445C1, buf);
    S3445C1 *dp, &lv = *(dp=new (buf) S3445C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(584,400), "sizeof(S3445C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3445C1)");
    check_base_class_offset(lv, (S3445C3*)(S3445C2*), 0, "S3445C1");
    check_base_class_offset(lv, (S3445C2*), 0, "S3445C1");
    check_field_offset(lv, s3445c1f0, ABISELECT(216,144), "S3445C1.s3445c1f0");
    check_field_offset(lv, s3445c1f1, ABISELECT(224,148), "S3445C1.s3445c1f1");
    check_field_offset(lv, s3445c1f2, ABISELECT(240,160), "S3445C1.s3445c1f2");
    check_field_offset(lv, s3445c1f3, ABISELECT(256,172), "S3445C1.s3445c1f3");
    check_field_offset(lv, s3445c1f4, ABISELECT(288,192), "S3445C1.s3445c1f4");
    check_field_offset(lv, s3445c1f5, ABISELECT(320,212), "S3445C1.s3445c1f5");
    check_field_offset(lv, s3445c1f6, ABISELECT(336,224), "S3445C1.s3445c1f6");
    check_field_offset(lv, s3445c1f7, ABISELECT(352,232), "S3445C1.s3445c1f7");
    check_field_offset(lv, s3445c1f8, ABISELECT(368,244), "S3445C1.s3445c1f8");
    check_field_offset(lv, s3445c1f9, ABISELECT(376,248), "S3445C1.s3445c1f9");
    check_field_offset(lv, s3445c1f10, ABISELECT(408,268), "S3445C1.s3445c1f10");
    check_field_offset(lv, s3445c1f11, ABISELECT(416,272), "S3445C1.s3445c1f11");
    check_field_offset(lv, s3445c1f12, ABISELECT(432,284), "S3445C1.s3445c1f12");
    check_field_offset(lv, s3445c1f13, ABISELECT(464,304), "S3445C1.s3445c1f13");
    check_field_offset(lv, s3445c1f14, ABISELECT(480,316), "S3445C1.s3445c1f14");
    check_field_offset(lv, s3445c1f15, ABISELECT(512,332), "S3445C1.s3445c1f15");
    check_field_offset(lv, s3445c1f16, ABISELECT(528,344), "S3445C1.s3445c1f16");
    test_class_info(&lv, &cd_S3445C1);
    dp->~S3445C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3445C1(Test_S3445C1, "S3445C1", ABISELECT(584,400));

#else // __cplusplus

extern void _ZN7S3445C1C1Ev();
extern void _ZN7S3445C1D1Ev();
Name_Map name_map_S3445C1[] = {
  NSPAIR(_ZN7S3445C1C1Ev),
  NSPAIR(_ZN7S3445C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3445C3;
extern VTBL_ENTRY _ZTI7S3445C3[];
extern  VTBL_ENTRY _ZTV7S3445C3[];
extern Class_Descriptor cd_S3445C2;
extern VTBL_ENTRY _ZTI7S3445C2[];
extern  VTBL_ENTRY _ZTV7S3445C2[];
static Base_Class bases_S3445C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3445C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3445C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3445C1[];
extern void _ZN7S3445C1D1Ev();
extern void _ZN7S3445C1D0Ev();
extern void _ZN7S3445C32v9Ev();
extern void _ZN7S3445C33v10Ev();
extern void _ZN7S3445C33v11Ev();
extern void _ZN7S3445C33v12Ev();
extern void _ZN7S3445C33v13Ev();
extern void _ZN7S3445C33v14Ev();
extern void _ZN7S3445C33v15Ev();
extern void _ZN7S3445C33v16Ev();
extern void _ZN7S3445C33v17Ev();
extern void _ZN7S3445C33v18Ev();
extern void _ZN7S3445C33v19Ev();
extern void _ZN7S3445C33v20Ev();
extern void _ZN7S3445C33v21Ev();
extern void _ZN7S3445C33v22Ev();
extern void _ZN7S3445C33v23Ev();
extern void _ZN7S3445C33v24Ev();
extern void _ZN7S3445C33v25Ev();
extern void _ZN7S3445C33v26Ev();
extern void _ZN7S3445C33v27Ev();
extern void _ZN7S3445C33v28Ev();
extern void _ZN7S3445C33v29Ev();
extern void _ZN7S3445C33v30Ev();
extern void _ZN7S3445C33v31Ev();
extern void _ZN7S3445C33v32Ev();
extern void _ZN7S3445C33v33Ev();
extern void _ZN7S3445C33v34Ev();
extern void _ZN7S3445C33v35Ev();
extern void _ZN7S3445C33v36Ev();
extern void _ZN7S3445C33v37Ev();
extern void _ZN7S3445C33v38Ev();
extern void _ZN7S3445C33v39Ev();
extern void _ZN7S3445C33v40Ev();
extern void _ZN7S3445C33v41Ev();
extern void _ZN7S3445C33v42Ev();
extern void _ZN7S3445C33v43Ev();
extern void _ZN7S3445C33v44Ev();
extern void _ZN7S3445C33v45Ev();
extern void _ZN7S3445C33v46Ev();
extern void _ZN7S3445C33v47Ev();
extern void _ZN7S3445C33v48Ev();
extern void _ZN7S3445C33v49Ev();
extern void _ZN7S3445C33v50Ev();
extern void _ZN7S3445C33v51Ev();
extern void _ZN7S3445C33v52Ev();
extern void _ZN7S3445C33v53Ev();
extern void _ZN7S3445C33v54Ev();
extern void _ZN7S3445C33v55Ev();
extern void _ZN7S3445C33v56Ev();
extern void _ZN7S3445C33v57Ev();
extern void _ZN7S3445C33v58Ev();
extern void _ZN7S3445C33v59Ev();
extern void _ZN7S3445C33v60Ev();
extern void _ZN7S3445C33v61Ev();
extern void _ZN7S3445C33v62Ev();
extern void _ZN7S3445C33v63Ev();
extern void _ZN7S3445C33v64Ev();
extern void _ZN7S3445C33v65Ev();
extern void _ZN7S3445C33v66Ev();
extern void _ZN7S3445C33v67Ev();
extern void _ZN7S3445C33v68Ev();
extern void _ZN7S3445C33v69Ev();
extern void _ZN7S3445C33v70Ev();
extern void _ZN7S3445C33v71Ev();
extern void _ZN7S3445C33v72Ev();
extern void _ZN7S3445C23v73Ev();
extern void _ZN7S3445C23v74Ev();
extern void _ZN7S3445C23v75Ev();
extern void _ZN7S3445C12v1Ev();
extern void _ZN7S3445C12v2Ev();
extern void _ZN7S3445C12v3Ev();
extern void _ZN7S3445C12v4Ev();
extern void _ZN7S3445C12v5Ev();
extern void _ZN7S3445C12v6Ev();
extern void _ZN7S3445C12v7Ev();
extern void _ZN7S3445C12v8Ev();
static  VTBL_ENTRY vtc_S3445C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3445C1[0]),
  (VTBL_ENTRY)&_ZN7S3445C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3445C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3445C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3445C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3445C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3445C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3445C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3445C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S3445C1[];
extern  VTBL_ENTRY _ZTV7S3445C1[];
Class_Descriptor cd_S3445C1 = {  "S3445C1", // class name
  bases_S3445C1, 2,
  &(vtc_S3445C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(584,400), // object size
  NSPAIRA(_ZTI7S3445C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3445C1),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1324C4  {
  int s1324c4f0;
  __tsi64 s1324c4f1;
  void *s1324c4f2[4];
  int s1324c4f3[2];
  void *s1324c4f4;
  ::S3223C4_nt s1324c4f5;
  void *s1324c4f6[2];
  virtual  ~S1324C4(); // _ZN7S1324C4D1Ev
  virtual void  v17(); // _ZN7S1324C43v17Ev
  virtual void  v18(); // _ZN7S1324C43v18Ev
  virtual void  v19(); // _ZN7S1324C43v19Ev
  virtual void  v20(); // _ZN7S1324C43v20Ev
  virtual void  v21(); // _ZN7S1324C43v21Ev
  virtual void  v22(); // _ZN7S1324C43v22Ev
  virtual void  v23(); // _ZN7S1324C43v23Ev
  virtual void  v24(); // _ZN7S1324C43v24Ev
  virtual void  v25(); // _ZN7S1324C43v25Ev
  virtual void  v26(); // _ZN7S1324C43v26Ev
  virtual void  v27(); // _ZN7S1324C43v27Ev
  virtual void  v28(); // _ZN7S1324C43v28Ev
  virtual void  v29(); // _ZN7S1324C43v29Ev
  virtual void  v30(); // _ZN7S1324C43v30Ev
  virtual void  v31(); // _ZN7S1324C43v31Ev
  virtual void  v32(); // _ZN7S1324C43v32Ev
  virtual void  v33(); // _ZN7S1324C43v33Ev
  virtual void  v34(); // _ZN7S1324C43v34Ev
  virtual void  v35(); // _ZN7S1324C43v35Ev
  virtual void  v36(); // _ZN7S1324C43v36Ev
  virtual void  v37(); // _ZN7S1324C43v37Ev
  virtual void  v38(); // _ZN7S1324C43v38Ev
  virtual void  v39(); // _ZN7S1324C43v39Ev
  virtual void  v40(); // _ZN7S1324C43v40Ev
  virtual void  v41(); // _ZN7S1324C43v41Ev
  virtual void  v42(); // _ZN7S1324C43v42Ev
  virtual void  v43(); // _ZN7S1324C43v43Ev
  virtual void  v44(); // _ZN7S1324C43v44Ev
  virtual void  v45(); // _ZN7S1324C43v45Ev
  virtual void  v46(); // _ZN7S1324C43v46Ev
  virtual void  v47(); // _ZN7S1324C43v47Ev
  virtual void  v48(); // _ZN7S1324C43v48Ev
  virtual void  v49(); // _ZN7S1324C43v49Ev
  virtual void  v50(); // _ZN7S1324C43v50Ev
  virtual void  v51(); // _ZN7S1324C43v51Ev
  virtual void  v52(); // _ZN7S1324C43v52Ev
  virtual void  v53(); // _ZN7S1324C43v53Ev
  virtual void  v54(); // _ZN7S1324C43v54Ev
  virtual void  v55(); // _ZN7S1324C43v55Ev
  virtual void  v56(); // _ZN7S1324C43v56Ev
  virtual void  v57(); // _ZN7S1324C43v57Ev
  virtual void  v58(); // _ZN7S1324C43v58Ev
  virtual void  v59(); // _ZN7S1324C43v59Ev
  virtual void  v60(); // _ZN7S1324C43v60Ev
  virtual void  v61(); // _ZN7S1324C43v61Ev
  virtual void  v62(); // _ZN7S1324C43v62Ev
  virtual void  v63(); // _ZN7S1324C43v63Ev
  virtual void  v64(); // _ZN7S1324C43v64Ev
  virtual void  v65(); // _ZN7S1324C43v65Ev
  virtual void  v66(); // _ZN7S1324C43v66Ev
  virtual void  v67(); // _ZN7S1324C43v67Ev
  virtual void  v68(); // _ZN7S1324C43v68Ev
  virtual void  v69(); // _ZN7S1324C43v69Ev
  virtual void  v70(); // _ZN7S1324C43v70Ev
  virtual void  v71(); // _ZN7S1324C43v71Ev
  virtual void  v72(); // _ZN7S1324C43v72Ev
  virtual void  v73(); // _ZN7S1324C43v73Ev
  virtual void  v74(); // _ZN7S1324C43v74Ev
  virtual void  v75(); // _ZN7S1324C43v75Ev
  virtual void  v76(); // _ZN7S1324C43v76Ev
  virtual void  v77(); // _ZN7S1324C43v77Ev
  virtual void  v78(); // _ZN7S1324C43v78Ev
  virtual void  v79(); // _ZN7S1324C43v79Ev
  virtual void  v80(); // _ZN7S1324C43v80Ev
  S1324C4(); // tgen
};
//SIG(-1 S1324C4) 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]}


 S1324C4 ::~S1324C4(){ note_dtor("S1324C4", this);}
void  S1324C4 ::v17(){vfunc_called(this, "_ZN7S1324C43v17Ev");}
void  S1324C4 ::v18(){vfunc_called(this, "_ZN7S1324C43v18Ev");}
void  S1324C4 ::v19(){vfunc_called(this, "_ZN7S1324C43v19Ev");}
void  S1324C4 ::v20(){vfunc_called(this, "_ZN7S1324C43v20Ev");}
void  S1324C4 ::v21(){vfunc_called(this, "_ZN7S1324C43v21Ev");}
void  S1324C4 ::v22(){vfunc_called(this, "_ZN7S1324C43v22Ev");}
void  S1324C4 ::v23(){vfunc_called(this, "_ZN7S1324C43v23Ev");}
void  S1324C4 ::v24(){vfunc_called(this, "_ZN7S1324C43v24Ev");}
void  S1324C4 ::v25(){vfunc_called(this, "_ZN7S1324C43v25Ev");}
void  S1324C4 ::v26(){vfunc_called(this, "_ZN7S1324C43v26Ev");}
void  S1324C4 ::v27(){vfunc_called(this, "_ZN7S1324C43v27Ev");}
void  S1324C4 ::v28(){vfunc_called(this, "_ZN7S1324C43v28Ev");}
void  S1324C4 ::v29(){vfunc_called(this, "_ZN7S1324C43v29Ev");}
void  S1324C4 ::v30(){vfunc_called(this, "_ZN7S1324C43v30Ev");}
void  S1324C4 ::v31(){vfunc_called(this, "_ZN7S1324C43v31Ev");}
void  S1324C4 ::v32(){vfunc_called(this, "_ZN7S1324C43v32Ev");}
void  S1324C4 ::v33(){vfunc_called(this, "_ZN7S1324C43v33Ev");}
void  S1324C4 ::v34(){vfunc_called(this, "_ZN7S1324C43v34Ev");}
void  S1324C4 ::v35(){vfunc_called(this, "_ZN7S1324C43v35Ev");}
void  S1324C4 ::v36(){vfunc_called(this, "_ZN7S1324C43v36Ev");}
void  S1324C4 ::v37(){vfunc_called(this, "_ZN7S1324C43v37Ev");}
void  S1324C4 ::v38(){vfunc_called(this, "_ZN7S1324C43v38Ev");}
void  S1324C4 ::v39(){vfunc_called(this, "_ZN7S1324C43v39Ev");}
void  S1324C4 ::v40(){vfunc_called(this, "_ZN7S1324C43v40Ev");}
void  S1324C4 ::v41(){vfunc_called(this, "_ZN7S1324C43v41Ev");}
void  S1324C4 ::v42(){vfunc_called(this, "_ZN7S1324C43v42Ev");}
void  S1324C4 ::v43(){vfunc_called(this, "_ZN7S1324C43v43Ev");}
void  S1324C4 ::v44(){vfunc_called(this, "_ZN7S1324C43v44Ev");}
void  S1324C4 ::v45(){vfunc_called(this, "_ZN7S1324C43v45Ev");}
void  S1324C4 ::v46(){vfunc_called(this, "_ZN7S1324C43v46Ev");}
void  S1324C4 ::v47(){vfunc_called(this, "_ZN7S1324C43v47Ev");}
void  S1324C4 ::v48(){vfunc_called(this, "_ZN7S1324C43v48Ev");}
void  S1324C4 ::v49(){vfunc_called(this, "_ZN7S1324C43v49Ev");}
void  S1324C4 ::v50(){vfunc_called(this, "_ZN7S1324C43v50Ev");}
void  S1324C4 ::v51(){vfunc_called(this, "_ZN7S1324C43v51Ev");}
void  S1324C4 ::v52(){vfunc_called(this, "_ZN7S1324C43v52Ev");}
void  S1324C4 ::v53(){vfunc_called(this, "_ZN7S1324C43v53Ev");}
void  S1324C4 ::v54(){vfunc_called(this, "_ZN7S1324C43v54Ev");}
void  S1324C4 ::v55(){vfunc_called(this, "_ZN7S1324C43v55Ev");}
void  S1324C4 ::v56(){vfunc_called(this, "_ZN7S1324C43v56Ev");}
void  S1324C4 ::v57(){vfunc_called(this, "_ZN7S1324C43v57Ev");}
void  S1324C4 ::v58(){vfunc_called(this, "_ZN7S1324C43v58Ev");}
void  S1324C4 ::v59(){vfunc_called(this, "_ZN7S1324C43v59Ev");}
void  S1324C4 ::v60(){vfunc_called(this, "_ZN7S1324C43v60Ev");}
void  S1324C4 ::v61(){vfunc_called(this, "_ZN7S1324C43v61Ev");}
void  S1324C4 ::v62(){vfunc_called(this, "_ZN7S1324C43v62Ev");}
void  S1324C4 ::v63(){vfunc_called(this, "_ZN7S1324C43v63Ev");}
void  S1324C4 ::v64(){vfunc_called(this, "_ZN7S1324C43v64Ev");}
void  S1324C4 ::v65(){vfunc_called(this, "_ZN7S1324C43v65Ev");}
void  S1324C4 ::v66(){vfunc_called(this, "_ZN7S1324C43v66Ev");}
void  S1324C4 ::v67(){vfunc_called(this, "_ZN7S1324C43v67Ev");}
void  S1324C4 ::v68(){vfunc_called(this, "_ZN7S1324C43v68Ev");}
void  S1324C4 ::v69(){vfunc_called(this, "_ZN7S1324C43v69Ev");}
void  S1324C4 ::v70(){vfunc_called(this, "_ZN7S1324C43v70Ev");}
void  S1324C4 ::v71(){vfunc_called(this, "_ZN7S1324C43v71Ev");}
void  S1324C4 ::v72(){vfunc_called(this, "_ZN7S1324C43v72Ev");}
void  S1324C4 ::v73(){vfunc_called(this, "_ZN7S1324C43v73Ev");}
void  S1324C4 ::v74(){vfunc_called(this, "_ZN7S1324C43v74Ev");}
void  S1324C4 ::v75(){vfunc_called(this, "_ZN7S1324C43v75Ev");}
void  S1324C4 ::v76(){vfunc_called(this, "_ZN7S1324C43v76Ev");}
void  S1324C4 ::v77(){vfunc_called(this, "_ZN7S1324C43v77Ev");}
void  S1324C4 ::v78(){vfunc_called(this, "_ZN7S1324C43v78Ev");}
void  S1324C4 ::v79(){vfunc_called(this, "_ZN7S1324C43v79Ev");}
void  S1324C4 ::v80(){vfunc_called(this, "_ZN7S1324C43v80Ev");}
S1324C4 ::S1324C4(){ note_ctor("S1324C4", this);} // tgen

static void Test_S1324C4()
{
  extern Class_Descriptor cd_S1324C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1324C4, buf);
    S1324C4 *dp, &lv = *(dp=new (buf) S1324C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1324C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1324C4)");
    check_field_offset(lv, s1324c4f0, ABISELECT(8,4), "S1324C4.s1324c4f0");
    check_field_offset(lv, s1324c4f1, ABISELECT(16,8), "S1324C4.s1324c4f1");
    check_field_offset(lv, s1324c4f2, ABISELECT(24,16), "S1324C4.s1324c4f2");
    check_field_offset(lv, s1324c4f3, ABISELECT(56,32), "S1324C4.s1324c4f3");
    check_field_offset(lv, s1324c4f4, ABISELECT(64,40), "S1324C4.s1324c4f4");
    check_field_offset(lv, s1324c4f5, ABISELECT(72,44), "S1324C4.s1324c4f5");
    check_field_offset(lv, s1324c4f6, ABISELECT(80,52), "S1324C4.s1324c4f6");
    test_class_info(&lv, &cd_S1324C4);
    dp->~S1324C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1324C4(Test_S1324C4, "S1324C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1324C4C1Ev();
extern void _ZN7S1324C4D1Ev();
Name_Map name_map_S1324C4[] = {
  NSPAIR(_ZN7S1324C4C1Ev),
  NSPAIR(_ZN7S1324C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1324C4[];
extern void _ZN7S1324C4D1Ev();
extern void _ZN7S1324C4D0Ev();
extern void _ZN7S1324C43v17Ev();
extern void _ZN7S1324C43v18Ev();
extern void _ZN7S1324C43v19Ev();
extern void _ZN7S1324C43v20Ev();
extern void _ZN7S1324C43v21Ev();
extern void _ZN7S1324C43v22Ev();
extern void _ZN7S1324C43v23Ev();
extern void _ZN7S1324C43v24Ev();
extern void _ZN7S1324C43v25Ev();
extern void _ZN7S1324C43v26Ev();
extern void _ZN7S1324C43v27Ev();
extern void _ZN7S1324C43v28Ev();
extern void _ZN7S1324C43v29Ev();
extern void _ZN7S1324C43v30Ev();
extern void _ZN7S1324C43v31Ev();
extern void _ZN7S1324C43v32Ev();
extern void _ZN7S1324C43v33Ev();
extern void _ZN7S1324C43v34Ev();
extern void _ZN7S1324C43v35Ev();
extern void _ZN7S1324C43v36Ev();
extern void _ZN7S1324C43v37Ev();
extern void _ZN7S1324C43v38Ev();
extern void _ZN7S1324C43v39Ev();
extern void _ZN7S1324C43v40Ev();
extern void _ZN7S1324C43v41Ev();
extern void _ZN7S1324C43v42Ev();
extern void _ZN7S1324C43v43Ev();
extern void _ZN7S1324C43v44Ev();
extern void _ZN7S1324C43v45Ev();
extern void _ZN7S1324C43v46Ev();
extern void _ZN7S1324C43v47Ev();
extern void _ZN7S1324C43v48Ev();
extern void _ZN7S1324C43v49Ev();
extern void _ZN7S1324C43v50Ev();
extern void _ZN7S1324C43v51Ev();
extern void _ZN7S1324C43v52Ev();
extern void _ZN7S1324C43v53Ev();
extern void _ZN7S1324C43v54Ev();
extern void _ZN7S1324C43v55Ev();
extern void _ZN7S1324C43v56Ev();
extern void _ZN7S1324C43v57Ev();
extern void _ZN7S1324C43v58Ev();
extern void _ZN7S1324C43v59Ev();
extern void _ZN7S1324C43v60Ev();
extern void _ZN7S1324C43v61Ev();
extern void _ZN7S1324C43v62Ev();
extern void _ZN7S1324C43v63Ev();
extern void _ZN7S1324C43v64Ev();
extern void _ZN7S1324C43v65Ev();
extern void _ZN7S1324C43v66Ev();
extern void _ZN7S1324C43v67Ev();
extern void _ZN7S1324C43v68Ev();
extern void _ZN7S1324C43v69Ev();
extern void _ZN7S1324C43v70Ev();
extern void _ZN7S1324C43v71Ev();
extern void _ZN7S1324C43v72Ev();
extern void _ZN7S1324C43v73Ev();
extern void _ZN7S1324C43v74Ev();
extern void _ZN7S1324C43v75Ev();
extern void _ZN7S1324C43v76Ev();
extern void _ZN7S1324C43v77Ev();
extern void _ZN7S1324C43v78Ev();
extern void _ZN7S1324C43v79Ev();
extern void _ZN7S1324C43v80Ev();
static  VTBL_ENTRY vtc_S1324C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1324C4[0]),
  (VTBL_ENTRY)&_ZN7S1324C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1324C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v80Ev,
};
extern VTBL_ENTRY _ZTI7S1324C4[];
extern  VTBL_ENTRY _ZTV7S1324C4[];
Class_Descriptor cd_S1324C4 = {  "S1324C4", // class name
  0,0,//no base classes
  &(vtc_S1324C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1324C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1324C4),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  S1324C3_nt  : S1324C4 {
  virtual  ~S1324C3_nt(); // _ZN10S1324C3_ntD1Ev
  virtual void  v81(); // _ZN10S1324C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1324C3_nt3v82Ev
  S1324C3_nt(); // tgen
};
//SIG(-1 S1324C3_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1324C3_nt ::~S1324C3_nt(){ note_dtor("S1324C3_nt", this);}
void  S1324C3_nt ::v81(){vfunc_called(this, "_ZN10S1324C3_nt3v81Ev");}
void  S1324C3_nt ::v82(){vfunc_called(this, "_ZN10S1324C3_nt3v82Ev");}
S1324C3_nt ::S1324C3_nt(){ note_ctor("S1324C3_nt", this);} // tgen

//skip512 S1324C3_nt

#else // __cplusplus

extern void _ZN10S1324C3_ntC1Ev();
extern void _ZN10S1324C3_ntD1Ev();
Name_Map name_map_S1324C3_nt[] = {
  NSPAIR(_ZN10S1324C3_ntC1Ev),
  NSPAIR(_ZN10S1324C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1324C4;
extern VTBL_ENTRY _ZTI7S1324C4[];
extern  VTBL_ENTRY _ZTV7S1324C4[];
static Base_Class bases_S1324C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1324C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1324C3_nt[];
extern void _ZN10S1324C3_ntD1Ev();
extern void _ZN10S1324C3_ntD0Ev();
extern void _ZN7S1324C43v17Ev();
extern void _ZN7S1324C43v18Ev();
extern void _ZN7S1324C43v19Ev();
extern void _ZN7S1324C43v20Ev();
extern void _ZN7S1324C43v21Ev();
extern void _ZN7S1324C43v22Ev();
extern void _ZN7S1324C43v23Ev();
extern void _ZN7S1324C43v24Ev();
extern void _ZN7S1324C43v25Ev();
extern void _ZN7S1324C43v26Ev();
extern void _ZN7S1324C43v27Ev();
extern void _ZN7S1324C43v28Ev();
extern void _ZN7S1324C43v29Ev();
extern void _ZN7S1324C43v30Ev();
extern void _ZN7S1324C43v31Ev();
extern void _ZN7S1324C43v32Ev();
extern void _ZN7S1324C43v33Ev();
extern void _ZN7S1324C43v34Ev();
extern void _ZN7S1324C43v35Ev();
extern void _ZN7S1324C43v36Ev();
extern void _ZN7S1324C43v37Ev();
extern void _ZN7S1324C43v38Ev();
extern void _ZN7S1324C43v39Ev();
extern void _ZN7S1324C43v40Ev();
extern void _ZN7S1324C43v41Ev();
extern void _ZN7S1324C43v42Ev();
extern void _ZN7S1324C43v43Ev();
extern void _ZN7S1324C43v44Ev();
extern void _ZN7S1324C43v45Ev();
extern void _ZN7S1324C43v46Ev();
extern void _ZN7S1324C43v47Ev();
extern void _ZN7S1324C43v48Ev();
extern void _ZN7S1324C43v49Ev();
extern void _ZN7S1324C43v50Ev();
extern void _ZN7S1324C43v51Ev();
extern void _ZN7S1324C43v52Ev();
extern void _ZN7S1324C43v53Ev();
extern void _ZN7S1324C43v54Ev();
extern void _ZN7S1324C43v55Ev();
extern void _ZN7S1324C43v56Ev();
extern void _ZN7S1324C43v57Ev();
extern void _ZN7S1324C43v58Ev();
extern void _ZN7S1324C43v59Ev();
extern void _ZN7S1324C43v60Ev();
extern void _ZN7S1324C43v61Ev();
extern void _ZN7S1324C43v62Ev();
extern void _ZN7S1324C43v63Ev();
extern void _ZN7S1324C43v64Ev();
extern void _ZN7S1324C43v65Ev();
extern void _ZN7S1324C43v66Ev();
extern void _ZN7S1324C43v67Ev();
extern void _ZN7S1324C43v68Ev();
extern void _ZN7S1324C43v69Ev();
extern void _ZN7S1324C43v70Ev();
extern void _ZN7S1324C43v71Ev();
extern void _ZN7S1324C43v72Ev();
extern void _ZN7S1324C43v73Ev();
extern void _ZN7S1324C43v74Ev();
extern void _ZN7S1324C43v75Ev();
extern void _ZN7S1324C43v76Ev();
extern void _ZN7S1324C43v77Ev();
extern void _ZN7S1324C43v78Ev();
extern void _ZN7S1324C43v79Ev();
extern void _ZN7S1324C43v80Ev();
extern void _ZN10S1324C3_nt3v81Ev();
extern void _ZN10S1324C3_nt3v82Ev();
static  VTBL_ENTRY vtc_S1324C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1324C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1324C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v80Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_nt3v82Ev,
};
extern VTBL_ENTRY _ZTI10S1324C3_nt[];
VTBL_ENTRY *P__ZTI10S1324C3_nt = _ZTI10S1324C3_nt; 
extern  VTBL_ENTRY _ZTV10S1324C3_nt[];
Class_Descriptor cd_S1324C3_nt = {  "S1324C3_nt", // class name
  bases_S1324C3_nt, 1,
  &(vtc_S1324C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S1324C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1324C3_nt),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1324C9_nt  {
  void *s1324c9f0;
  ::S3223C4_nt s1324c9f1;
  void  mf1324c9(); // _ZN10S1324C9_nt8mf1324c9Ev
};
//SIG(-1 S1324C9_nt) C1{ m Fp FC2{ m Fi[2]}}


void  S1324C9_nt ::mf1324c9(){}

//skip512 S1324C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1324C2_nt  : S1324C3_nt {
  char s1324c2f0;
  ::S3223C17 s1324c2f1;
  ::S1324C9_nt s1324c2f2;
  virtual  ~S1324C2_nt(); // _ZN10S1324C2_ntD1Ev
  virtual void  v83(); // _ZN10S1324C2_nt3v83Ev
  virtual void  v84(); // _ZN10S1324C2_nt3v84Ev
  virtual void  v85(); // _ZN10S1324C2_nt3v85Ev
  virtual void  v86(); // _ZN10S1324C2_nt3v86Ev
  virtual void  v87(); // _ZN10S1324C2_nt3v87Ev
  virtual void  v88(); // _ZN10S1324C2_nt3v88Ev
  virtual void  v89(); // _ZN10S1324C2_nt3v89Ev
  virtual void  v90(); // _ZN10S1324C2_nt3v90Ev
  virtual void  v91(); // _ZN10S1324C2_nt3v91Ev
  virtual void  v92(); // _ZN10S1324C2_nt3v92Ev
  virtual void  v93(); // _ZN10S1324C2_nt3v93Ev
  virtual void  v94(); // _ZN10S1324C2_nt3v94Ev
  S1324C2_nt(); // tgen
};
//SIG(-1 S1324C2_nt) C1{ BC2{ BC3{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v77 v78} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fc FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC8{ m Fp FC4}}


 S1324C2_nt ::~S1324C2_nt(){ note_dtor("S1324C2_nt", this);}
void  S1324C2_nt ::v83(){vfunc_called(this, "_ZN10S1324C2_nt3v83Ev");}
void  S1324C2_nt ::v84(){vfunc_called(this, "_ZN10S1324C2_nt3v84Ev");}
void  S1324C2_nt ::v85(){vfunc_called(this, "_ZN10S1324C2_nt3v85Ev");}
void  S1324C2_nt ::v86(){vfunc_called(this, "_ZN10S1324C2_nt3v86Ev");}
void  S1324C2_nt ::v87(){vfunc_called(this, "_ZN10S1324C2_nt3v87Ev");}
void  S1324C2_nt ::v88(){vfunc_called(this, "_ZN10S1324C2_nt3v88Ev");}
void  S1324C2_nt ::v89(){vfunc_called(this, "_ZN10S1324C2_nt3v89Ev");}
void  S1324C2_nt ::v90(){vfunc_called(this, "_ZN10S1324C2_nt3v90Ev");}
void  S1324C2_nt ::v91(){vfunc_called(this, "_ZN10S1324C2_nt3v91Ev");}
void  S1324C2_nt ::v92(){vfunc_called(this, "_ZN10S1324C2_nt3v92Ev");}
void  S1324C2_nt ::v93(){vfunc_called(this, "_ZN10S1324C2_nt3v93Ev");}
void  S1324C2_nt ::v94(){vfunc_called(this, "_ZN10S1324C2_nt3v94Ev");}
S1324C2_nt ::S1324C2_nt(){ note_ctor("S1324C2_nt", this);} // tgen

//skip512 S1324C2_nt

#else // __cplusplus

extern void _ZN10S1324C2_ntC1Ev();
extern void _ZN10S1324C2_ntD1Ev();
Name_Map name_map_S1324C2_nt[] = {
  NSPAIR(_ZN10S1324C2_ntC1Ev),
  NSPAIR(_ZN10S1324C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1324C4;
extern VTBL_ENTRY _ZTI7S1324C4[];
extern  VTBL_ENTRY _ZTV7S1324C4[];
extern Class_Descriptor cd_S1324C3_nt;
extern VTBL_ENTRY _ZTI10S1324C3_nt[];
extern  VTBL_ENTRY _ZTV10S1324C3_nt[];
static Base_Class bases_S1324C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1324C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1324C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1324C2_nt[];
extern void _ZN10S1324C2_ntD1Ev();
extern void _ZN10S1324C2_ntD0Ev();
extern void _ZN7S1324C43v17Ev();
extern void _ZN7S1324C43v18Ev();
extern void _ZN7S1324C43v19Ev();
extern void _ZN7S1324C43v20Ev();
extern void _ZN7S1324C43v21Ev();
extern void _ZN7S1324C43v22Ev();
extern void _ZN7S1324C43v23Ev();
extern void _ZN7S1324C43v24Ev();
extern void _ZN7S1324C43v25Ev();
extern void _ZN7S1324C43v26Ev();
extern void _ZN7S1324C43v27Ev();
extern void _ZN7S1324C43v28Ev();
extern void _ZN7S1324C43v29Ev();
extern void _ZN7S1324C43v30Ev();
extern void _ZN7S1324C43v31Ev();
extern void _ZN7S1324C43v32Ev();
extern void _ZN7S1324C43v33Ev();
extern void _ZN7S1324C43v34Ev();
extern void _ZN7S1324C43v35Ev();
extern void _ZN7S1324C43v36Ev();
extern void _ZN7S1324C43v37Ev();
extern void _ZN7S1324C43v38Ev();
extern void _ZN7S1324C43v39Ev();
extern void _ZN7S1324C43v40Ev();
extern void _ZN7S1324C43v41Ev();
extern void _ZN7S1324C43v42Ev();
extern void _ZN7S1324C43v43Ev();
extern void _ZN7S1324C43v44Ev();
extern void _ZN7S1324C43v45Ev();
extern void _ZN7S1324C43v46Ev();
extern void _ZN7S1324C43v47Ev();
extern void _ZN7S1324C43v48Ev();
extern void _ZN7S1324C43v49Ev();
extern void _ZN7S1324C43v50Ev();
extern void _ZN7S1324C43v51Ev();
extern void _ZN7S1324C43v52Ev();
extern void _ZN7S1324C43v53Ev();
extern void _ZN7S1324C43v54Ev();
extern void _ZN7S1324C43v55Ev();
extern void _ZN7S1324C43v56Ev();
extern void _ZN7S1324C43v57Ev();
extern void _ZN7S1324C43v58Ev();
extern void _ZN7S1324C43v59Ev();
extern void _ZN7S1324C43v60Ev();
extern void _ZN7S1324C43v61Ev();
extern void _ZN7S1324C43v62Ev();
extern void _ZN7S1324C43v63Ev();
extern void _ZN7S1324C43v64Ev();
extern void _ZN7S1324C43v65Ev();
extern void _ZN7S1324C43v66Ev();
extern void _ZN7S1324C43v67Ev();
extern void _ZN7S1324C43v68Ev();
extern void _ZN7S1324C43v69Ev();
extern void _ZN7S1324C43v70Ev();
extern void _ZN7S1324C43v71Ev();
extern void _ZN7S1324C43v72Ev();
extern void _ZN7S1324C43v73Ev();
extern void _ZN7S1324C43v74Ev();
extern void _ZN7S1324C43v75Ev();
extern void _ZN7S1324C43v76Ev();
extern void _ZN7S1324C43v77Ev();
extern void _ZN7S1324C43v78Ev();
extern void _ZN7S1324C43v79Ev();
extern void _ZN7S1324C43v80Ev();
extern void _ZN10S1324C3_nt3v81Ev();
extern void _ZN10S1324C3_nt3v82Ev();
extern void _ZN10S1324C2_nt3v83Ev();
extern void _ZN10S1324C2_nt3v84Ev();
extern void _ZN10S1324C2_nt3v85Ev();
extern void _ZN10S1324C2_nt3v86Ev();
extern void _ZN10S1324C2_nt3v87Ev();
extern void _ZN10S1324C2_nt3v88Ev();
extern void _ZN10S1324C2_nt3v89Ev();
extern void _ZN10S1324C2_nt3v90Ev();
extern void _ZN10S1324C2_nt3v91Ev();
extern void _ZN10S1324C2_nt3v92Ev();
extern void _ZN10S1324C2_nt3v93Ev();
extern void _ZN10S1324C2_nt3v94Ev();
static  VTBL_ENTRY vtc_S1324C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1324C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1324C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v80Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v94Ev,
};
extern VTBL_ENTRY _ZTI10S1324C2_nt[];
VTBL_ENTRY *P__ZTI10S1324C2_nt = _ZTI10S1324C2_nt; 
extern  VTBL_ENTRY _ZTV10S1324C2_nt[];
Class_Descriptor cd_S1324C2_nt = {  "S1324C2_nt", // class name
  bases_S1324C2_nt, 2,
  &(vtc_S1324C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI10S1324C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1324C2_nt),82, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1324C10_nt  {
  virtual  ~S1324C10_nt(); // _ZN11S1324C10_ntD1Ev
  virtual void  v95(); // _ZN11S1324C10_nt3v95Ev
  virtual void  v96(); // _ZN11S1324C10_nt3v96Ev
  virtual void  v97(); // _ZN11S1324C10_nt3v97Ev
  virtual void  v98(); // _ZN11S1324C10_nt3v98Ev
  virtual void  v99(); // _ZN11S1324C10_nt3v99Ev
  virtual void  v100(); // _ZN11S1324C10_nt4v100Ev
  virtual void  v101(); // _ZN11S1324C10_nt4v101Ev
  virtual void  v102(); // _ZN11S1324C10_nt4v102Ev
  S1324C10_nt(); // tgen
};
//SIG(-1 S1324C10_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1324C10_nt ::~S1324C10_nt(){ note_dtor("S1324C10_nt", this);}
void  S1324C10_nt ::v95(){vfunc_called(this, "_ZN11S1324C10_nt3v95Ev");}
void  S1324C10_nt ::v96(){vfunc_called(this, "_ZN11S1324C10_nt3v96Ev");}
void  S1324C10_nt ::v97(){vfunc_called(this, "_ZN11S1324C10_nt3v97Ev");}
void  S1324C10_nt ::v98(){vfunc_called(this, "_ZN11S1324C10_nt3v98Ev");}
void  S1324C10_nt ::v99(){vfunc_called(this, "_ZN11S1324C10_nt3v99Ev");}
void  S1324C10_nt ::v100(){vfunc_called(this, "_ZN11S1324C10_nt4v100Ev");}
void  S1324C10_nt ::v101(){vfunc_called(this, "_ZN11S1324C10_nt4v101Ev");}
void  S1324C10_nt ::v102(){vfunc_called(this, "_ZN11S1324C10_nt4v102Ev");}
S1324C10_nt ::S1324C10_nt(){ note_ctor("S1324C10_nt", this);} // tgen

//skip512 S1324C10_nt

#else // __cplusplus

extern void _ZN11S1324C10_ntC1Ev();
extern void _ZN11S1324C10_ntD1Ev();
Name_Map name_map_S1324C10_nt[] = {
  NSPAIR(_ZN11S1324C10_ntC1Ev),
  NSPAIR(_ZN11S1324C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S1324C10_nt[];
extern void _ZN11S1324C10_ntD1Ev();
extern void _ZN11S1324C10_ntD0Ev();
extern void _ZN11S1324C10_nt3v95Ev();
extern void _ZN11S1324C10_nt3v96Ev();
extern void _ZN11S1324C10_nt3v97Ev();
extern void _ZN11S1324C10_nt3v98Ev();
extern void _ZN11S1324C10_nt3v99Ev();
extern void _ZN11S1324C10_nt4v100Ev();
extern void _ZN11S1324C10_nt4v101Ev();
extern void _ZN11S1324C10_nt4v102Ev();
static  VTBL_ENTRY vtc_S1324C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1324C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S1324C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v95Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v96Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v97Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v98Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v99Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt4v100Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt4v101Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt4v102Ev,
};
extern VTBL_ENTRY _ZTI11S1324C10_nt[];
VTBL_ENTRY *P__ZTI11S1324C10_nt = _ZTI11S1324C10_nt; 
extern  VTBL_ENTRY _ZTV11S1324C10_nt[];
Class_Descriptor cd_S1324C10_nt = {  "S1324C10_nt", // class name
  0,0,//no base classes
  &(vtc_S1324C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S1324C10_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S1324C10_nt),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1324C11_nt  {
  virtual  ~S1324C11_nt(); // _ZN11S1324C11_ntD1Ev
  virtual void  v103(); // _ZN11S1324C11_nt4v103Ev
  virtual void  v104(); // _ZN11S1324C11_nt4v104Ev
  virtual void  v105(); // _ZN11S1324C11_nt4v105Ev
  virtual void  v106(); // _ZN11S1324C11_nt4v106Ev
  S1324C11_nt(); // tgen
};
//SIG(-1 S1324C11_nt) C1{ vd v1 v2 v3 v4}


 S1324C11_nt ::~S1324C11_nt(){ note_dtor("S1324C11_nt", this);}
void  S1324C11_nt ::v103(){vfunc_called(this, "_ZN11S1324C11_nt4v103Ev");}
void  S1324C11_nt ::v104(){vfunc_called(this, "_ZN11S1324C11_nt4v104Ev");}
void  S1324C11_nt ::v105(){vfunc_called(this, "_ZN11S1324C11_nt4v105Ev");}
void  S1324C11_nt ::v106(){vfunc_called(this, "_ZN11S1324C11_nt4v106Ev");}
S1324C11_nt ::S1324C11_nt(){ note_ctor("S1324C11_nt", this);} // tgen

//skip512 S1324C11_nt

#else // __cplusplus

extern void _ZN11S1324C11_ntC1Ev();
extern void _ZN11S1324C11_ntD1Ev();
Name_Map name_map_S1324C11_nt[] = {
  NSPAIR(_ZN11S1324C11_ntC1Ev),
  NSPAIR(_ZN11S1324C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S1324C11_nt[];
extern void _ZN11S1324C11_ntD1Ev();
extern void _ZN11S1324C11_ntD0Ev();
extern void _ZN11S1324C11_nt4v103Ev();
extern void _ZN11S1324C11_nt4v104Ev();
extern void _ZN11S1324C11_nt4v105Ev();
extern void _ZN11S1324C11_nt4v106Ev();
static  VTBL_ENTRY vtc_S1324C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1324C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S1324C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v103Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v104Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v105Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v106Ev,
};
extern VTBL_ENTRY _ZTI11S1324C11_nt[];
VTBL_ENTRY *P__ZTI11S1324C11_nt = _ZTI11S1324C11_nt; 
extern  VTBL_ENTRY _ZTV11S1324C11_nt[];
Class_Descriptor cd_S1324C11_nt = {  "S1324C11_nt", // class name
  0,0,//no base classes
  &(vtc_S1324C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S1324C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S1324C11_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  S1324C14  : S3223C7_nt {
};
//SIG(-1 S1324C14) C1{ BC2{ m Fp Fi[2]}}



static void Test_S1324C14()
{
  extern Class_Descriptor cd_S1324C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1324C14, buf);
    S1324C14 &lv = *(new (buf) S1324C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1324C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1324C14)");
    check_base_class_offset(lv, (S3223C7_nt*), 0, "S1324C14");
    test_class_info(&lv, &cd_S1324C14);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1324C14(Test_S1324C14, "S1324C14", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S1324C13()
{
  extern Class_Descriptor cd_S1324C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1324C13, buf);
    S1324C13 &lv = *(new (buf) S1324C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1324C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1324C13)");
    check_base_class_offset(lv, (S3223C7_nt*)(S1324C14*), 0, "S1324C13");
    check_base_class_offset(lv, (S1324C14*), 0, "S1324C13");
    test_class_info(&lv, &cd_S1324C13);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1324C13(Test_S1324C13, "S1324C13", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S1324C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S3223C7_nt;
extern Class_Descriptor cd_S1324C14;
extern Class_Descriptor cd_S1324C13;
static Base_Class bases_S1324C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1324C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1324C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1324C1  : S1324C2_nt , S1324C10_nt , S1324C11_nt {
  void *s1324c1f0;
  int s1324c1f1;
  ::S3223C4_nt s1324c1f2;
  ::S1324C12_nt s1324c1f3;
  ::S3223C11 s1324c1f4;
  virtual  ~S1324C1(); // _ZN7S1324C1D1Ev
  virtual void  v1(); // _ZN7S1324C12v1Ev
  virtual void  v2(); // _ZN7S1324C12v2Ev
  virtual void  v3(); // _ZN7S1324C12v3Ev
  virtual void  v4(); // _ZN7S1324C12v4Ev
  virtual void  v5(); // _ZN7S1324C12v5Ev
  virtual void  v6(); // _ZN7S1324C12v6Ev
  virtual void  v7(); // _ZN7S1324C12v7Ev
  virtual void  v8(); // _ZN7S1324C12v8Ev
  virtual void  v9(); // _ZN7S1324C12v9Ev
  virtual void  v10(); // _ZN7S1324C13v10Ev
  virtual void  v11(); // _ZN7S1324C13v11Ev
  virtual void  v12(); // _ZN7S1324C13v12Ev
  virtual void  v13(); // _ZN7S1324C13v13Ev
  virtual void  v14(); // _ZN7S1324C13v14Ev
  virtual void  v15(); // _ZN7S1324C13v15Ev
  virtual void  v16(); // _ZN7S1324C13v16Ev
  S1324C1(); // tgen
};
//SIG(1 S1324C1) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v81 v82} vd v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fc FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC9{ m Fp FC5}} BC10{ vd v95 v96 v97 v98 v99 v100 v101 v102} BC11{ vd v103 v104 v105 v106} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp Fi FC5 FC12{ BC13{ BC14{ BC8}}} FC15{ BC16{ BC8}}}


 S1324C1 ::~S1324C1(){ note_dtor("S1324C1", this);}
void  S1324C1 ::v1(){vfunc_called(this, "_ZN7S1324C12v1Ev");}
void  S1324C1 ::v2(){vfunc_called(this, "_ZN7S1324C12v2Ev");}
void  S1324C1 ::v3(){vfunc_called(this, "_ZN7S1324C12v3Ev");}
void  S1324C1 ::v4(){vfunc_called(this, "_ZN7S1324C12v4Ev");}
void  S1324C1 ::v5(){vfunc_called(this, "_ZN7S1324C12v5Ev");}
void  S1324C1 ::v6(){vfunc_called(this, "_ZN7S1324C12v6Ev");}
void  S1324C1 ::v7(){vfunc_called(this, "_ZN7S1324C12v7Ev");}
void  S1324C1 ::v8(){vfunc_called(this, "_ZN7S1324C12v8Ev");}
void  S1324C1 ::v9(){vfunc_called(this, "_ZN7S1324C12v9Ev");}
void  S1324C1 ::v10(){vfunc_called(this, "_ZN7S1324C13v10Ev");}
void  S1324C1 ::v11(){vfunc_called(this, "_ZN7S1324C13v11Ev");}
void  S1324C1 ::v12(){vfunc_called(this, "_ZN7S1324C13v12Ev");}
void  S1324C1 ::v13(){vfunc_called(this, "_ZN7S1324C13v13Ev");}
void  S1324C1 ::v14(){vfunc_called(this, "_ZN7S1324C13v14Ev");}
void  S1324C1 ::v15(){vfunc_called(this, "_ZN7S1324C13v15Ev");}
void  S1324C1 ::v16(){vfunc_called(this, "_ZN7S1324C13v16Ev");}
S1324C1 ::S1324C1(){ note_ctor("S1324C1", this);} // tgen

static void Test_S1324C1()
{
  extern Class_Descriptor cd_S1324C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,35)];
    init_test(&cd_S1324C1, buf);
    S1324C1 *dp, &lv = *(dp=new (buf) S1324C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,136), "sizeof(S1324C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1324C1)");
    check_base_class_offset(lv, (S1324C4*)(S1324C3_nt*)(S1324C2_nt*), 0, "S1324C1");
    check_base_class_offset(lv, (S1324C3_nt*)(S1324C2_nt*), 0, "S1324C1");
    check_base_class_offset(lv, (S1324C2_nt*), 0, "S1324C1");
    check_base_class_offset(lv, (S1324C10_nt*), ABISELECT(136,88), "S1324C1");
    check_base_class_offset(lv, (S1324C11_nt*), ABISELECT(144,92), "S1324C1");
    check_field_offset(lv, s1324c1f0, ABISELECT(152,96), "S1324C1.s1324c1f0");
    check_field_offset(lv, s1324c1f1, ABISELECT(160,100), "S1324C1.s1324c1f1");
    check_field_offset(lv, s1324c1f2, ABISELECT(164,104), "S1324C1.s1324c1f2");
    check_field_offset(lv, s1324c1f3, ABISELECT(176,112), "S1324C1.s1324c1f3");
    check_field_offset(lv, s1324c1f4, ABISELECT(192,124), "S1324C1.s1324c1f4");
    test_class_info(&lv, &cd_S1324C1);
    dp->~S1324C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1324C1(Test_S1324C1, "S1324C1", ABISELECT(208,136));

#else // __cplusplus

extern void _ZN7S1324C1C1Ev();
extern void _ZN7S1324C1D1Ev();
Name_Map name_map_S1324C1[] = {
  NSPAIR(_ZN7S1324C1C1Ev),
  NSPAIR(_ZN7S1324C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1324C4;
extern VTBL_ENTRY _ZTI7S1324C4[];
extern  VTBL_ENTRY _ZTV7S1324C4[];
extern Class_Descriptor cd_S1324C3_nt;
extern VTBL_ENTRY _ZTI10S1324C3_nt[];
extern  VTBL_ENTRY _ZTV10S1324C3_nt[];
extern Class_Descriptor cd_S1324C2_nt;
extern VTBL_ENTRY _ZTI10S1324C2_nt[];
extern  VTBL_ENTRY _ZTV10S1324C2_nt[];
extern Class_Descriptor cd_S1324C10_nt;
extern VTBL_ENTRY _ZTI11S1324C10_nt[];
extern  VTBL_ENTRY _ZTV11S1324C10_nt[];
extern Class_Descriptor cd_S1324C11_nt;
extern VTBL_ENTRY _ZTI11S1324C11_nt[];
extern  VTBL_ENTRY _ZTV11S1324C11_nt[];
static Base_Class bases_S1324C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1324C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1324C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1324C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1324C10_nt,    ABISELECT(136,88), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_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_S1324C11_nt,    ABISELECT(144,92), //bcp->offset
    110, //bcp->virtual_function_table_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 _ZTI7S1324C1[];
extern void _ZN7S1324C1D1Ev();
extern void _ZN7S1324C1D0Ev();
extern void _ZN7S1324C43v17Ev();
extern void _ZN7S1324C43v18Ev();
extern void _ZN7S1324C43v19Ev();
extern void _ZN7S1324C43v20Ev();
extern void _ZN7S1324C43v21Ev();
extern void _ZN7S1324C43v22Ev();
extern void _ZN7S1324C43v23Ev();
extern void _ZN7S1324C43v24Ev();
extern void _ZN7S1324C43v25Ev();
extern void _ZN7S1324C43v26Ev();
extern void _ZN7S1324C43v27Ev();
extern void _ZN7S1324C43v28Ev();
extern void _ZN7S1324C43v29Ev();
extern void _ZN7S1324C43v30Ev();
extern void _ZN7S1324C43v31Ev();
extern void _ZN7S1324C43v32Ev();
extern void _ZN7S1324C43v33Ev();
extern void _ZN7S1324C43v34Ev();
extern void _ZN7S1324C43v35Ev();
extern void _ZN7S1324C43v36Ev();
extern void _ZN7S1324C43v37Ev();
extern void _ZN7S1324C43v38Ev();
extern void _ZN7S1324C43v39Ev();
extern void _ZN7S1324C43v40Ev();
extern void _ZN7S1324C43v41Ev();
extern void _ZN7S1324C43v42Ev();
extern void _ZN7S1324C43v43Ev();
extern void _ZN7S1324C43v44Ev();
extern void _ZN7S1324C43v45Ev();
extern void _ZN7S1324C43v46Ev();
extern void _ZN7S1324C43v47Ev();
extern void _ZN7S1324C43v48Ev();
extern void _ZN7S1324C43v49Ev();
extern void _ZN7S1324C43v50Ev();
extern void _ZN7S1324C43v51Ev();
extern void _ZN7S1324C43v52Ev();
extern void _ZN7S1324C43v53Ev();
extern void _ZN7S1324C43v54Ev();
extern void _ZN7S1324C43v55Ev();
extern void _ZN7S1324C43v56Ev();
extern void _ZN7S1324C43v57Ev();
extern void _ZN7S1324C43v58Ev();
extern void _ZN7S1324C43v59Ev();
extern void _ZN7S1324C43v60Ev();
extern void _ZN7S1324C43v61Ev();
extern void _ZN7S1324C43v62Ev();
extern void _ZN7S1324C43v63Ev();
extern void _ZN7S1324C43v64Ev();
extern void _ZN7S1324C43v65Ev();
extern void _ZN7S1324C43v66Ev();
extern void _ZN7S1324C43v67Ev();
extern void _ZN7S1324C43v68Ev();
extern void _ZN7S1324C43v69Ev();
extern void _ZN7S1324C43v70Ev();
extern void _ZN7S1324C43v71Ev();
extern void _ZN7S1324C43v72Ev();
extern void _ZN7S1324C43v73Ev();
extern void _ZN7S1324C43v74Ev();
extern void _ZN7S1324C43v75Ev();
extern void _ZN7S1324C43v76Ev();
extern void _ZN7S1324C43v77Ev();
extern void _ZN7S1324C43v78Ev();
extern void _ZN7S1324C43v79Ev();
extern void _ZN7S1324C43v80Ev();
extern void _ZN10S1324C3_nt3v81Ev();
extern void _ZN10S1324C3_nt3v82Ev();
extern void _ZN10S1324C2_nt3v83Ev();
extern void _ZN10S1324C2_nt3v84Ev();
extern void _ZN10S1324C2_nt3v85Ev();
extern void _ZN10S1324C2_nt3v86Ev();
extern void _ZN10S1324C2_nt3v87Ev();
extern void _ZN10S1324C2_nt3v88Ev();
extern void _ZN10S1324C2_nt3v89Ev();
extern void _ZN10S1324C2_nt3v90Ev();
extern void _ZN10S1324C2_nt3v91Ev();
extern void _ZN10S1324C2_nt3v92Ev();
extern void _ZN10S1324C2_nt3v93Ev();
extern void _ZN10S1324C2_nt3v94Ev();
extern void _ZN7S1324C12v1Ev();
extern void _ZN7S1324C12v2Ev();
extern void _ZN7S1324C12v3Ev();
extern void _ZN7S1324C12v4Ev();
extern void _ZN7S1324C12v5Ev();
extern void _ZN7S1324C12v6Ev();
extern void _ZN7S1324C12v7Ev();
extern void _ZN7S1324C12v8Ev();
extern void _ZN7S1324C12v9Ev();
extern void _ZN7S1324C13v10Ev();
extern void _ZN7S1324C13v11Ev();
extern void _ZN7S1324C13v12Ev();
extern void _ZN7S1324C13v13Ev();
extern void _ZN7S1324C13v14Ev();
extern void _ZN7S1324C13v15Ev();
extern void _ZN7S1324C13v16Ev();
extern void ABISELECT(_ZThn136_N7S1324C1D1Ev,_ZThn88_N7S1324C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S1324C1D0Ev,_ZThn88_N7S1324C1D0Ev)();
extern void _ZN11S1324C10_nt3v95Ev();
extern void _ZN11S1324C10_nt3v96Ev();
extern void _ZN11S1324C10_nt3v97Ev();
extern void _ZN11S1324C10_nt3v98Ev();
extern void _ZN11S1324C10_nt3v99Ev();
extern void _ZN11S1324C10_nt4v100Ev();
extern void _ZN11S1324C10_nt4v101Ev();
extern void _ZN11S1324C10_nt4v102Ev();
extern void ABISELECT(_ZThn144_N7S1324C1D1Ev,_ZThn92_N7S1324C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S1324C1D0Ev,_ZThn92_N7S1324C1D0Ev)();
extern void _ZN11S1324C11_nt4v103Ev();
extern void _ZN11S1324C11_nt4v104Ev();
extern void _ZN11S1324C11_nt4v105Ev();
extern void _ZN11S1324C11_nt4v106Ev();
static  VTBL_ENTRY vtc_S1324C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1324C1[0]),
  (VTBL_ENTRY)&_ZN7S1324C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1324C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1324C43v80Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1324C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1324C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1324C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1324C13v16Ev,
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S1324C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S1324C1D1Ev,_ZThn88_N7S1324C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S1324C1D0Ev,_ZThn88_N7S1324C1D0Ev),
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v95Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v96Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v97Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v98Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt3v99Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt4v100Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt4v101Ev,
  (VTBL_ENTRY)&_ZN11S1324C10_nt4v102Ev,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S1324C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S1324C1D1Ev,_ZThn92_N7S1324C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S1324C1D0Ev,_ZThn92_N7S1324C1D0Ev),
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v103Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v104Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v105Ev,
  (VTBL_ENTRY)&_ZN11S1324C11_nt4v106Ev,
};
extern VTBL_ENTRY _ZTI7S1324C1[];
extern  VTBL_ENTRY _ZTV7S1324C1[];
Class_Descriptor cd_S1324C1 = {  "S1324C1", // class name
  bases_S1324C1, 5,
  &(vtc_S1324C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,136), // object size
  NSPAIRA(_ZTI7S1324C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1324C1),118, //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  S1515C4  {
  int s1515c4f0;
  __tsi64 s1515c4f1;
  void *s1515c4f2[4];
  int s1515c4f3[2];
  void *s1515c4f4;
  ::S3223C4_nt s1515c4f5;
  void *s1515c4f6[2];
  virtual  ~S1515C4(); // _ZN7S1515C4D1Ev
  virtual void  v6(); // _ZN7S1515C42v6Ev
  virtual void  v7(); // _ZN7S1515C42v7Ev
  virtual void  v8(); // _ZN7S1515C42v8Ev
  virtual void  v9(); // _ZN7S1515C42v9Ev
  virtual void  v10(); // _ZN7S1515C43v10Ev
  virtual void  v11(); // _ZN7S1515C43v11Ev
  virtual void  v12(); // _ZN7S1515C43v12Ev
  virtual void  v13(); // _ZN7S1515C43v13Ev
  virtual void  v14(); // _ZN7S1515C43v14Ev
  virtual void  v15(); // _ZN7S1515C43v15Ev
  virtual void  v16(); // _ZN7S1515C43v16Ev
  virtual void  v17(); // _ZN7S1515C43v17Ev
  virtual void  v18(); // _ZN7S1515C43v18Ev
  virtual void  v19(); // _ZN7S1515C43v19Ev
  virtual void  v20(); // _ZN7S1515C43v20Ev
  virtual void  v21(); // _ZN7S1515C43v21Ev
  virtual void  v22(); // _ZN7S1515C43v22Ev
  virtual void  v23(); // _ZN7S1515C43v23Ev
  virtual void  v24(); // _ZN7S1515C43v24Ev
  virtual void  v25(); // _ZN7S1515C43v25Ev
  virtual void  v26(); // _ZN7S1515C43v26Ev
  virtual void  v27(); // _ZN7S1515C43v27Ev
  virtual void  v28(); // _ZN7S1515C43v28Ev
  virtual void  v29(); // _ZN7S1515C43v29Ev
  virtual void  v30(); // _ZN7S1515C43v30Ev
  virtual void  v31(); // _ZN7S1515C43v31Ev
  virtual void  v32(); // _ZN7S1515C43v32Ev
  virtual void  v33(); // _ZN7S1515C43v33Ev
  virtual void  v34(); // _ZN7S1515C43v34Ev
  virtual void  v35(); // _ZN7S1515C43v35Ev
  virtual void  v36(); // _ZN7S1515C43v36Ev
  virtual void  v37(); // _ZN7S1515C43v37Ev
  virtual void  v38(); // _ZN7S1515C43v38Ev
  virtual void  v39(); // _ZN7S1515C43v39Ev
  virtual void  v40(); // _ZN7S1515C43v40Ev
  virtual void  v41(); // _ZN7S1515C43v41Ev
  virtual void  v42(); // _ZN7S1515C43v42Ev
  virtual void  v43(); // _ZN7S1515C43v43Ev
  virtual void  v44(); // _ZN7S1515C43v44Ev
  virtual void  v45(); // _ZN7S1515C43v45Ev
  virtual void  v46(); // _ZN7S1515C43v46Ev
  virtual void  v47(); // _ZN7S1515C43v47Ev
  virtual void  v48(); // _ZN7S1515C43v48Ev
  virtual void  v49(); // _ZN7S1515C43v49Ev
  virtual void  v50(); // _ZN7S1515C43v50Ev
  virtual void  v51(); // _ZN7S1515C43v51Ev
  virtual void  v52(); // _ZN7S1515C43v52Ev
  virtual void  v53(); // _ZN7S1515C43v53Ev
  virtual void  v54(); // _ZN7S1515C43v54Ev
  virtual void  v55(); // _ZN7S1515C43v55Ev
  virtual void  v56(); // _ZN7S1515C43v56Ev
  virtual void  v57(); // _ZN7S1515C43v57Ev
  virtual void  v58(); // _ZN7S1515C43v58Ev
  virtual void  v59(); // _ZN7S1515C43v59Ev
  virtual void  v60(); // _ZN7S1515C43v60Ev
  virtual void  v61(); // _ZN7S1515C43v61Ev
  virtual void  v62(); // _ZN7S1515C43v62Ev
  virtual void  v63(); // _ZN7S1515C43v63Ev
  virtual void  v64(); // _ZN7S1515C43v64Ev
  virtual void  v65(); // _ZN7S1515C43v65Ev
  virtual void  v66(); // _ZN7S1515C43v66Ev
  virtual void  v67(); // _ZN7S1515C43v67Ev
  virtual void  v68(); // _ZN7S1515C43v68Ev
  virtual void  v69(); // _ZN7S1515C43v69Ev
  S1515C4(); // tgen
};
//SIG(-1 S1515C4) 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]}


 S1515C4 ::~S1515C4(){ note_dtor("S1515C4", this);}
void  S1515C4 ::v6(){vfunc_called(this, "_ZN7S1515C42v6Ev");}
void  S1515C4 ::v7(){vfunc_called(this, "_ZN7S1515C42v7Ev");}
void  S1515C4 ::v8(){vfunc_called(this, "_ZN7S1515C42v8Ev");}
void  S1515C4 ::v9(){vfunc_called(this, "_ZN7S1515C42v9Ev");}
void  S1515C4 ::v10(){vfunc_called(this, "_ZN7S1515C43v10Ev");}
void  S1515C4 ::v11(){vfunc_called(this, "_ZN7S1515C43v11Ev");}
void  S1515C4 ::v12(){vfunc_called(this, "_ZN7S1515C43v12Ev");}
void  S1515C4 ::v13(){vfunc_called(this, "_ZN7S1515C43v13Ev");}
void  S1515C4 ::v14(){vfunc_called(this, "_ZN7S1515C43v14Ev");}
void  S1515C4 ::v15(){vfunc_called(this, "_ZN7S1515C43v15Ev");}
void  S1515C4 ::v16(){vfunc_called(this, "_ZN7S1515C43v16Ev");}
void  S1515C4 ::v17(){vfunc_called(this, "_ZN7S1515C43v17Ev");}
void  S1515C4 ::v18(){vfunc_called(this, "_ZN7S1515C43v18Ev");}
void  S1515C4 ::v19(){vfunc_called(this, "_ZN7S1515C43v19Ev");}
void  S1515C4 ::v20(){vfunc_called(this, "_ZN7S1515C43v20Ev");}
void  S1515C4 ::v21(){vfunc_called(this, "_ZN7S1515C43v21Ev");}
void  S1515C4 ::v22(){vfunc_called(this, "_ZN7S1515C43v22Ev");}
void  S1515C4 ::v23(){vfunc_called(this, "_ZN7S1515C43v23Ev");}
void  S1515C4 ::v24(){vfunc_called(this, "_ZN7S1515C43v24Ev");}
void  S1515C4 ::v25(){vfunc_called(this, "_ZN7S1515C43v25Ev");}
void  S1515C4 ::v26(){vfunc_called(this, "_ZN7S1515C43v26Ev");}
void  S1515C4 ::v27(){vfunc_called(this, "_ZN7S1515C43v27Ev");}
void  S1515C4 ::v28(){vfunc_called(this, "_ZN7S1515C43v28Ev");}
void  S1515C4 ::v29(){vfunc_called(this, "_ZN7S1515C43v29Ev");}
void  S1515C4 ::v30(){vfunc_called(this, "_ZN7S1515C43v30Ev");}
void  S1515C4 ::v31(){vfunc_called(this, "_ZN7S1515C43v31Ev");}
void  S1515C4 ::v32(){vfunc_called(this, "_ZN7S1515C43v32Ev");}
void  S1515C4 ::v33(){vfunc_called(this, "_ZN7S1515C43v33Ev");}
void  S1515C4 ::v34(){vfunc_called(this, "_ZN7S1515C43v34Ev");}
void  S1515C4 ::v35(){vfunc_called(this, "_ZN7S1515C43v35Ev");}
void  S1515C4 ::v36(){vfunc_called(this, "_ZN7S1515C43v36Ev");}
void  S1515C4 ::v37(){vfunc_called(this, "_ZN7S1515C43v37Ev");}
void  S1515C4 ::v38(){vfunc_called(this, "_ZN7S1515C43v38Ev");}
void  S1515C4 ::v39(){vfunc_called(this, "_ZN7S1515C43v39Ev");}
void  S1515C4 ::v40(){vfunc_called(this, "_ZN7S1515C43v40Ev");}
void  S1515C4 ::v41(){vfunc_called(this, "_ZN7S1515C43v41Ev");}
void  S1515C4 ::v42(){vfunc_called(this, "_ZN7S1515C43v42Ev");}
void  S1515C4 ::v43(){vfunc_called(this, "_ZN7S1515C43v43Ev");}
void  S1515C4 ::v44(){vfunc_called(this, "_ZN7S1515C43v44Ev");}
void  S1515C4 ::v45(){vfunc_called(this, "_ZN7S1515C43v45Ev");}
void  S1515C4 ::v46(){vfunc_called(this, "_ZN7S1515C43v46Ev");}
void  S1515C4 ::v47(){vfunc_called(this, "_ZN7S1515C43v47Ev");}
void  S1515C4 ::v48(){vfunc_called(this, "_ZN7S1515C43v48Ev");}
void  S1515C4 ::v49(){vfunc_called(this, "_ZN7S1515C43v49Ev");}
void  S1515C4 ::v50(){vfunc_called(this, "_ZN7S1515C43v50Ev");}
void  S1515C4 ::v51(){vfunc_called(this, "_ZN7S1515C43v51Ev");}
void  S1515C4 ::v52(){vfunc_called(this, "_ZN7S1515C43v52Ev");}
void  S1515C4 ::v53(){vfunc_called(this, "_ZN7S1515C43v53Ev");}
void  S1515C4 ::v54(){vfunc_called(this, "_ZN7S1515C43v54Ev");}
void  S1515C4 ::v55(){vfunc_called(this, "_ZN7S1515C43v55Ev");}
void  S1515C4 ::v56(){vfunc_called(this, "_ZN7S1515C43v56Ev");}
void  S1515C4 ::v57(){vfunc_called(this, "_ZN7S1515C43v57Ev");}
void  S1515C4 ::v58(){vfunc_called(this, "_ZN7S1515C43v58Ev");}
void  S1515C4 ::v59(){vfunc_called(this, "_ZN7S1515C43v59Ev");}
void  S1515C4 ::v60(){vfunc_called(this, "_ZN7S1515C43v60Ev");}
void  S1515C4 ::v61(){vfunc_called(this, "_ZN7S1515C43v61Ev");}
void  S1515C4 ::v62(){vfunc_called(this, "_ZN7S1515C43v62Ev");}
void  S1515C4 ::v63(){vfunc_called(this, "_ZN7S1515C43v63Ev");}
void  S1515C4 ::v64(){vfunc_called(this, "_ZN7S1515C43v64Ev");}
void  S1515C4 ::v65(){vfunc_called(this, "_ZN7S1515C43v65Ev");}
void  S1515C4 ::v66(){vfunc_called(this, "_ZN7S1515C43v66Ev");}
void  S1515C4 ::v67(){vfunc_called(this, "_ZN7S1515C43v67Ev");}
void  S1515C4 ::v68(){vfunc_called(this, "_ZN7S1515C43v68Ev");}
void  S1515C4 ::v69(){vfunc_called(this, "_ZN7S1515C43v69Ev");}
S1515C4 ::S1515C4(){ note_ctor("S1515C4", this);} // tgen

static void Test_S1515C4()
{
  extern Class_Descriptor cd_S1515C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1515C4, buf);
    S1515C4 *dp, &lv = *(dp=new (buf) S1515C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1515C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1515C4)");
    check_field_offset(lv, s1515c4f0, ABISELECT(8,4), "S1515C4.s1515c4f0");
    check_field_offset(lv, s1515c4f1, ABISELECT(16,8), "S1515C4.s1515c4f1");
    check_field_offset(lv, s1515c4f2, ABISELECT(24,16), "S1515C4.s1515c4f2");
    check_field_offset(lv, s1515c4f3, ABISELECT(56,32), "S1515C4.s1515c4f3");
    check_field_offset(lv, s1515c4f4, ABISELECT(64,40), "S1515C4.s1515c4f4");
    check_field_offset(lv, s1515c4f5, ABISELECT(72,44), "S1515C4.s1515c4f5");
    check_field_offset(lv, s1515c4f6, ABISELECT(80,52), "S1515C4.s1515c4f6");
    test_class_info(&lv, &cd_S1515C4);
    dp->~S1515C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1515C4(Test_S1515C4, "S1515C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1515C4C1Ev();
extern void _ZN7S1515C4D1Ev();
Name_Map name_map_S1515C4[] = {
  NSPAIR(_ZN7S1515C4C1Ev),
  NSPAIR(_ZN7S1515C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1515C4[];
extern void _ZN7S1515C4D1Ev();
extern void _ZN7S1515C4D0Ev();
extern void _ZN7S1515C42v6Ev();
extern void _ZN7S1515C42v7Ev();
extern void _ZN7S1515C42v8Ev();
extern void _ZN7S1515C42v9Ev();
extern void _ZN7S1515C43v10Ev();
extern void _ZN7S1515C43v11Ev();
extern void _ZN7S1515C43v12Ev();
extern void _ZN7S1515C43v13Ev();
extern void _ZN7S1515C43v14Ev();
extern void _ZN7S1515C43v15Ev();
extern void _ZN7S1515C43v16Ev();
extern void _ZN7S1515C43v17Ev();
extern void _ZN7S1515C43v18Ev();
extern void _ZN7S1515C43v19Ev();
extern void _ZN7S1515C43v20Ev();
extern void _ZN7S1515C43v21Ev();
extern void _ZN7S1515C43v22Ev();
extern void _ZN7S1515C43v23Ev();
extern void _ZN7S1515C43v24Ev();
extern void _ZN7S1515C43v25Ev();
extern void _ZN7S1515C43v26Ev();
extern void _ZN7S1515C43v27Ev();
extern void _ZN7S1515C43v28Ev();
extern void _ZN7S1515C43v29Ev();
extern void _ZN7S1515C43v30Ev();
extern void _ZN7S1515C43v31Ev();
extern void _ZN7S1515C43v32Ev();
extern void _ZN7S1515C43v33Ev();
extern void _ZN7S1515C43v34Ev();
extern void _ZN7S1515C43v35Ev();
extern void _ZN7S1515C43v36Ev();
extern void _ZN7S1515C43v37Ev();
extern void _ZN7S1515C43v38Ev();
extern void _ZN7S1515C43v39Ev();
extern void _ZN7S1515C43v40Ev();
extern void _ZN7S1515C43v41Ev();
extern void _ZN7S1515C43v42Ev();
extern void _ZN7S1515C43v43Ev();
extern void _ZN7S1515C43v44Ev();
extern void _ZN7S1515C43v45Ev();
extern void _ZN7S1515C43v46Ev();
extern void _ZN7S1515C43v47Ev();
extern void _ZN7S1515C43v48Ev();
extern void _ZN7S1515C43v49Ev();
extern void _ZN7S1515C43v50Ev();
extern void _ZN7S1515C43v51Ev();
extern void _ZN7S1515C43v52Ev();
extern void _ZN7S1515C43v53Ev();
extern void _ZN7S1515C43v54Ev();
extern void _ZN7S1515C43v55Ev();
extern void _ZN7S1515C43v56Ev();
extern void _ZN7S1515C43v57Ev();
extern void _ZN7S1515C43v58Ev();
extern void _ZN7S1515C43v59Ev();
extern void _ZN7S1515C43v60Ev();
extern void _ZN7S1515C43v61Ev();
extern void _ZN7S1515C43v62Ev();
extern void _ZN7S1515C43v63Ev();
extern void _ZN7S1515C43v64Ev();
extern void _ZN7S1515C43v65Ev();
extern void _ZN7S1515C43v66Ev();
extern void _ZN7S1515C43v67Ev();
extern void _ZN7S1515C43v68Ev();
extern void _ZN7S1515C43v69Ev();
static  VTBL_ENTRY vtc_S1515C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1515C4[0]),
  (VTBL_ENTRY)&_ZN7S1515C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1515C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1515C4[];
extern  VTBL_ENTRY _ZTV7S1515C4[];
Class_Descriptor cd_S1515C4 = {  "S1515C4", // class name
  0,0,//no base classes
  &(vtc_S1515C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1515C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1515C4),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  S1515C3_nt  : S1515C4 {
  unsigned int s1515c3f0:1;
  unsigned int s1515c3f1:1;
  unsigned int s1515c3f2:1;
  unsigned int s1515c3f3:1;
  unsigned int s1515c3f4:1;
  unsigned int s1515c3f5:1;
  unsigned int s1515c3f6:1;
  ::S3619C26 s1515c3f7;
  virtual  ~S1515C3_nt(); // _ZN10S1515C3_ntD1Ev
  virtual void  v70(); // _ZN10S1515C3_nt3v70Ev
  virtual void  v71(); // _ZN10S1515C3_nt3v71Ev
  virtual void  v72(); // _ZN10S1515C3_nt3v72Ev
  virtual void  v73(); // _ZN10S1515C3_nt3v73Ev
  virtual void  v74(); // _ZN10S1515C3_nt3v74Ev
  virtual void  v75(); // _ZN10S1515C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1515C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1515C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1515C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1515C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1515C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1515C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1515C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1515C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1515C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1515C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1515C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1515C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1515C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1515C3_nt3v89Ev
  S1515C3_nt(); // tgen
};
//SIG(-1 S1515C3_nt) C1{ BC2{ 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 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ m}}


 S1515C3_nt ::~S1515C3_nt(){ note_dtor("S1515C3_nt", this);}
void  S1515C3_nt ::v70(){vfunc_called(this, "_ZN10S1515C3_nt3v70Ev");}
void  S1515C3_nt ::v71(){vfunc_called(this, "_ZN10S1515C3_nt3v71Ev");}
void  S1515C3_nt ::v72(){vfunc_called(this, "_ZN10S1515C3_nt3v72Ev");}
void  S1515C3_nt ::v73(){vfunc_called(this, "_ZN10S1515C3_nt3v73Ev");}
void  S1515C3_nt ::v74(){vfunc_called(this, "_ZN10S1515C3_nt3v74Ev");}
void  S1515C3_nt ::v75(){vfunc_called(this, "_ZN10S1515C3_nt3v75Ev");}
void  S1515C3_nt ::v76(){vfunc_called(this, "_ZN10S1515C3_nt3v76Ev");}
void  S1515C3_nt ::v77(){vfunc_called(this, "_ZN10S1515C3_nt3v77Ev");}
void  S1515C3_nt ::v78(){vfunc_called(this, "_ZN10S1515C3_nt3v78Ev");}
void  S1515C3_nt ::v79(){vfunc_called(this, "_ZN10S1515C3_nt3v79Ev");}
void  S1515C3_nt ::v80(){vfunc_called(this, "_ZN10S1515C3_nt3v80Ev");}
void  S1515C3_nt ::v81(){vfunc_called(this, "_ZN10S1515C3_nt3v81Ev");}
void  S1515C3_nt ::v82(){vfunc_called(this, "_ZN10S1515C3_nt3v82Ev");}
void  S1515C3_nt ::v83(){vfunc_called(this, "_ZN10S1515C3_nt3v83Ev");}
void  S1515C3_nt ::v84(){vfunc_called(this, "_ZN10S1515C3_nt3v84Ev");}
void  S1515C3_nt ::v85(){vfunc_called(this, "_ZN10S1515C3_nt3v85Ev");}
void  S1515C3_nt ::v86(){vfunc_called(this, "_ZN10S1515C3_nt3v86Ev");}
void  S1515C3_nt ::v87(){vfunc_called(this, "_ZN10S1515C3_nt3v87Ev");}
void  S1515C3_nt ::v88(){vfunc_called(this, "_ZN10S1515C3_nt3v88Ev");}
void  S1515C3_nt ::v89(){vfunc_called(this, "_ZN10S1515C3_nt3v89Ev");}
S1515C3_nt ::S1515C3_nt(){ note_ctor("S1515C3_nt", this);} // tgen

//skip512 S1515C3_nt

#else // __cplusplus

extern void _ZN10S1515C3_ntC1Ev();
extern void _ZN10S1515C3_ntD1Ev();
Name_Map name_map_S1515C3_nt[] = {
  NSPAIR(_ZN10S1515C3_ntC1Ev),
  NSPAIR(_ZN10S1515C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1515C4;
extern VTBL_ENTRY _ZTI7S1515C4[];
extern  VTBL_ENTRY _ZTV7S1515C4[];
static Base_Class bases_S1515C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1515C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1515C3_nt[];
extern void _ZN10S1515C3_ntD1Ev();
extern void _ZN10S1515C3_ntD0Ev();
extern void _ZN7S1515C42v6Ev();
extern void _ZN7S1515C42v7Ev();
extern void _ZN7S1515C42v8Ev();
extern void _ZN7S1515C42v9Ev();
extern void _ZN7S1515C43v10Ev();
extern void _ZN7S1515C43v11Ev();
extern void _ZN7S1515C43v12Ev();
extern void _ZN7S1515C43v13Ev();
extern void _ZN7S1515C43v14Ev();
extern void _ZN7S1515C43v15Ev();
extern void _ZN7S1515C43v16Ev();
extern void _ZN7S1515C43v17Ev();
extern void _ZN7S1515C43v18Ev();
extern void _ZN7S1515C43v19Ev();
extern void _ZN7S1515C43v20Ev();
extern void _ZN7S1515C43v21Ev();
extern void _ZN7S1515C43v22Ev();
extern void _ZN7S1515C43v23Ev();
extern void _ZN7S1515C43v24Ev();
extern void _ZN7S1515C43v25Ev();
extern void _ZN7S1515C43v26Ev();
extern void _ZN7S1515C43v27Ev();
extern void _ZN7S1515C43v28Ev();
extern void _ZN7S1515C43v29Ev();
extern void _ZN7S1515C43v30Ev();
extern void _ZN7S1515C43v31Ev();
extern void _ZN7S1515C43v32Ev();
extern void _ZN7S1515C43v33Ev();
extern void _ZN7S1515C43v34Ev();
extern void _ZN7S1515C43v35Ev();
extern void _ZN7S1515C43v36Ev();
extern void _ZN7S1515C43v37Ev();
extern void _ZN7S1515C43v38Ev();
extern void _ZN7S1515C43v39Ev();
extern void _ZN7S1515C43v40Ev();
extern void _ZN7S1515C43v41Ev();
extern void _ZN7S1515C43v42Ev();
extern void _ZN7S1515C43v43Ev();
extern void _ZN7S1515C43v44Ev();
extern void _ZN7S1515C43v45Ev();
extern void _ZN7S1515C43v46Ev();
extern void _ZN7S1515C43v47Ev();
extern void _ZN7S1515C43v48Ev();
extern void _ZN7S1515C43v49Ev();
extern void _ZN7S1515C43v50Ev();
extern void _ZN7S1515C43v51Ev();
extern void _ZN7S1515C43v52Ev();
extern void _ZN7S1515C43v53Ev();
extern void _ZN7S1515C43v54Ev();
extern void _ZN7S1515C43v55Ev();
extern void _ZN7S1515C43v56Ev();
extern void _ZN7S1515C43v57Ev();
extern void _ZN7S1515C43v58Ev();
extern void _ZN7S1515C43v59Ev();
extern void _ZN7S1515C43v60Ev();
extern void _ZN7S1515C43v61Ev();
extern void _ZN7S1515C43v62Ev();
extern void _ZN7S1515C43v63Ev();
extern void _ZN7S1515C43v64Ev();
extern void _ZN7S1515C43v65Ev();
extern void _ZN7S1515C43v66Ev();
extern void _ZN7S1515C43v67Ev();
extern void _ZN7S1515C43v68Ev();
extern void _ZN7S1515C43v69Ev();
extern void _ZN10S1515C3_nt3v70Ev();
extern void _ZN10S1515C3_nt3v71Ev();
extern void _ZN10S1515C3_nt3v72Ev();
extern void _ZN10S1515C3_nt3v73Ev();
extern void _ZN10S1515C3_nt3v74Ev();
extern void _ZN10S1515C3_nt3v75Ev();
extern void _ZN10S1515C3_nt3v76Ev();
extern void _ZN10S1515C3_nt3v77Ev();
extern void _ZN10S1515C3_nt3v78Ev();
extern void _ZN10S1515C3_nt3v79Ev();
extern void _ZN10S1515C3_nt3v80Ev();
extern void _ZN10S1515C3_nt3v81Ev();
extern void _ZN10S1515C3_nt3v82Ev();
extern void _ZN10S1515C3_nt3v83Ev();
extern void _ZN10S1515C3_nt3v84Ev();
extern void _ZN10S1515C3_nt3v85Ev();
extern void _ZN10S1515C3_nt3v86Ev();
extern void _ZN10S1515C3_nt3v87Ev();
extern void _ZN10S1515C3_nt3v88Ev();
extern void _ZN10S1515C3_nt3v89Ev();
static  VTBL_ENTRY vtc_S1515C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1515C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1515C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI10S1515C3_nt[];
VTBL_ENTRY *P__ZTI10S1515C3_nt = _ZTI10S1515C3_nt; 
extern  VTBL_ENTRY _ZTV10S1515C3_nt[];
Class_Descriptor cd_S1515C3_nt = {  "S1515C3_nt", // class name
  bases_S1515C3_nt, 1,
  &(vtc_S1515C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1515C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1515C3_nt),88, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1515C2_nt  : S1515C3_nt {
  ::S3223C17 s1515c2f0;
  virtual  ~S1515C2_nt(); // _ZN10S1515C2_ntD1Ev
  virtual void  v90(); // _ZN10S1515C2_nt3v90Ev
  virtual void  v91(); // _ZN10S1515C2_nt3v91Ev
  virtual void  v92(); // _ZN10S1515C2_nt3v92Ev
  virtual void  v93(); // _ZN10S1515C2_nt3v93Ev
  S1515C2_nt(); // tgen
};
//SIG(-1 S1515C2_nt) 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m}} vd v1 v2 v3 v4 FC6{ BC7{ BC8{ m Fp Fi[2]}}}}


 S1515C2_nt ::~S1515C2_nt(){ note_dtor("S1515C2_nt", this);}
void  S1515C2_nt ::v90(){vfunc_called(this, "_ZN10S1515C2_nt3v90Ev");}
void  S1515C2_nt ::v91(){vfunc_called(this, "_ZN10S1515C2_nt3v91Ev");}
void  S1515C2_nt ::v92(){vfunc_called(this, "_ZN10S1515C2_nt3v92Ev");}
void  S1515C2_nt ::v93(){vfunc_called(this, "_ZN10S1515C2_nt3v93Ev");}
S1515C2_nt ::S1515C2_nt(){ note_ctor("S1515C2_nt", this);} // tgen

//skip512 S1515C2_nt

#else // __cplusplus

extern void _ZN10S1515C2_ntC1Ev();
extern void _ZN10S1515C2_ntD1Ev();
Name_Map name_map_S1515C2_nt[] = {
  NSPAIR(_ZN10S1515C2_ntC1Ev),
  NSPAIR(_ZN10S1515C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1515C4;
extern VTBL_ENTRY _ZTI7S1515C4[];
extern  VTBL_ENTRY _ZTV7S1515C4[];
extern Class_Descriptor cd_S1515C3_nt;
extern VTBL_ENTRY _ZTI10S1515C3_nt[];
extern  VTBL_ENTRY _ZTV10S1515C3_nt[];
static Base_Class bases_S1515C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1515C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1515C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1515C2_nt[];
extern void _ZN10S1515C2_ntD1Ev();
extern void _ZN10S1515C2_ntD0Ev();
extern void _ZN7S1515C42v6Ev();
extern void _ZN7S1515C42v7Ev();
extern void _ZN7S1515C42v8Ev();
extern void _ZN7S1515C42v9Ev();
extern void _ZN7S1515C43v10Ev();
extern void _ZN7S1515C43v11Ev();
extern void _ZN7S1515C43v12Ev();
extern void _ZN7S1515C43v13Ev();
extern void _ZN7S1515C43v14Ev();
extern void _ZN7S1515C43v15Ev();
extern void _ZN7S1515C43v16Ev();
extern void _ZN7S1515C43v17Ev();
extern void _ZN7S1515C43v18Ev();
extern void _ZN7S1515C43v19Ev();
extern void _ZN7S1515C43v20Ev();
extern void _ZN7S1515C43v21Ev();
extern void _ZN7S1515C43v22Ev();
extern void _ZN7S1515C43v23Ev();
extern void _ZN7S1515C43v24Ev();
extern void _ZN7S1515C43v25Ev();
extern void _ZN7S1515C43v26Ev();
extern void _ZN7S1515C43v27Ev();
extern void _ZN7S1515C43v28Ev();
extern void _ZN7S1515C43v29Ev();
extern void _ZN7S1515C43v30Ev();
extern void _ZN7S1515C43v31Ev();
extern void _ZN7S1515C43v32Ev();
extern void _ZN7S1515C43v33Ev();
extern void _ZN7S1515C43v34Ev();
extern void _ZN7S1515C43v35Ev();
extern void _ZN7S1515C43v36Ev();
extern void _ZN7S1515C43v37Ev();
extern void _ZN7S1515C43v38Ev();
extern void _ZN7S1515C43v39Ev();
extern void _ZN7S1515C43v40Ev();
extern void _ZN7S1515C43v41Ev();
extern void _ZN7S1515C43v42Ev();
extern void _ZN7S1515C43v43Ev();
extern void _ZN7S1515C43v44Ev();
extern void _ZN7S1515C43v45Ev();
extern void _ZN7S1515C43v46Ev();
extern void _ZN7S1515C43v47Ev();
extern void _ZN7S1515C43v48Ev();
extern void _ZN7S1515C43v49Ev();
extern void _ZN7S1515C43v50Ev();
extern void _ZN7S1515C43v51Ev();
extern void _ZN7S1515C43v52Ev();
extern void _ZN7S1515C43v53Ev();
extern void _ZN7S1515C43v54Ev();
extern void _ZN7S1515C43v55Ev();
extern void _ZN7S1515C43v56Ev();
extern void _ZN7S1515C43v57Ev();
extern void _ZN7S1515C43v58Ev();
extern void _ZN7S1515C43v59Ev();
extern void _ZN7S1515C43v60Ev();
extern void _ZN7S1515C43v61Ev();
extern void _ZN7S1515C43v62Ev();
extern void _ZN7S1515C43v63Ev();
extern void _ZN7S1515C43v64Ev();
extern void _ZN7S1515C43v65Ev();
extern void _ZN7S1515C43v66Ev();
extern void _ZN7S1515C43v67Ev();
extern void _ZN7S1515C43v68Ev();
extern void _ZN7S1515C43v69Ev();
extern void _ZN10S1515C3_nt3v70Ev();
extern void _ZN10S1515C3_nt3v71Ev();
extern void _ZN10S1515C3_nt3v72Ev();
extern void _ZN10S1515C3_nt3v73Ev();
extern void _ZN10S1515C3_nt3v74Ev();
extern void _ZN10S1515C3_nt3v75Ev();
extern void _ZN10S1515C3_nt3v76Ev();
extern void _ZN10S1515C3_nt3v77Ev();
extern void _ZN10S1515C3_nt3v78Ev();
extern void _ZN10S1515C3_nt3v79Ev();
extern void _ZN10S1515C3_nt3v80Ev();
extern void _ZN10S1515C3_nt3v81Ev();
extern void _ZN10S1515C3_nt3v82Ev();
extern void _ZN10S1515C3_nt3v83Ev();
extern void _ZN10S1515C3_nt3v84Ev();
extern void _ZN10S1515C3_nt3v85Ev();
extern void _ZN10S1515C3_nt3v86Ev();
extern void _ZN10S1515C3_nt3v87Ev();
extern void _ZN10S1515C3_nt3v88Ev();
extern void _ZN10S1515C3_nt3v89Ev();
extern void _ZN10S1515C2_nt3v90Ev();
extern void _ZN10S1515C2_nt3v91Ev();
extern void _ZN10S1515C2_nt3v92Ev();
extern void _ZN10S1515C2_nt3v93Ev();
static  VTBL_ENTRY vtc_S1515C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1515C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1515C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v93Ev,
};
extern VTBL_ENTRY _ZTI10S1515C2_nt[];
VTBL_ENTRY *P__ZTI10S1515C2_nt = _ZTI10S1515C2_nt; 
extern  VTBL_ENTRY _ZTV10S1515C2_nt[];
Class_Descriptor cd_S1515C2_nt = {  "S1515C2_nt", // class name
  bases_S1515C2_nt, 2,
  &(vtc_S1515C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,76), // object size
  NSPAIRA(_ZTI10S1515C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1515C2_nt),92, //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  S1515C11_nt  {
  char s1515c11f0[4];
  ::S3223C11 s1515c11f1;
  int s1515c11f2[2];
  void  mf1515c11(); // _ZN11S1515C11_nt9mf1515c11Ev
};
//SIG(-1 S1515C11_nt) C1{ m Fc[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[2]}


void  S1515C11_nt ::mf1515c11(){}

//skip512 S1515C11_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

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



//skip512 S1515C10_nt

#else // __cplusplus

extern Class_Descriptor cd_S1515C11_nt;
static Base_Class bases_S1515C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1515C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1515C1  : S1515C2_nt {
  ::S1515C10_nt s1515c1f0;
  ::S1515C10_nt s1515c1f1;
  ::S1515C10_nt s1515c1f2;
  ::S1515C10_nt s1515c1f3;
  ::S1515C10_nt s1515c1f4;
  ::S1515C10_nt s1515c1f5;
  virtual  ~S1515C1(); // _ZN7S1515C1D1Ev
  virtual void  v1(); // _ZN7S1515C12v1Ev
  virtual void  v2(); // _ZN7S1515C12v2Ev
  virtual void  v3(); // _ZN7S1515C12v3Ev
  virtual void  v4(); // _ZN7S1515C12v4Ev
  virtual void  v5(); // _ZN7S1515C12v5Ev
  S1515C1(); // tgen
};
//SIG(1 S1515C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v90 v91 v92 v93 FC7{ BC8{ BC9{ m Fp Fi[2]}}}} vd v1 v2 v3 v4 v5 FC10{ BC11{ m Fc[4] FC12{ BC13{ BC9}} Fi[2]} Fp} FC10 FC10 FC10 FC10 FC10}


 S1515C1 ::~S1515C1(){ note_dtor("S1515C1", this);}
void  S1515C1 ::v1(){vfunc_called(this, "_ZN7S1515C12v1Ev");}
void  S1515C1 ::v2(){vfunc_called(this, "_ZN7S1515C12v2Ev");}
void  S1515C1 ::v3(){vfunc_called(this, "_ZN7S1515C12v3Ev");}
void  S1515C1 ::v4(){vfunc_called(this, "_ZN7S1515C12v4Ev");}
void  S1515C1 ::v5(){vfunc_called(this, "_ZN7S1515C12v5Ev");}
S1515C1 ::S1515C1(){ note_ctor("S1515C1", this);} // tgen

static void Test_S1515C1()
{
  extern Class_Descriptor cd_S1515C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,62)];
    init_test(&cd_S1515C1, buf);
    S1515C1 *dp, &lv = *(dp=new (buf) S1515C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,244), "sizeof(S1515C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1515C1)");
    check_base_class_offset(lv, (S1515C4*)(S1515C3_nt*)(S1515C2_nt*), 0, "S1515C1");
    check_base_class_offset(lv, (S1515C3_nt*)(S1515C2_nt*), 0, "S1515C1");
    check_base_class_offset(lv, (S1515C2_nt*), 0, "S1515C1");
    check_field_offset(lv, s1515c1f0, ABISELECT(120,76), "S1515C1.s1515c1f0");
    check_field_offset(lv, s1515c1f1, ABISELECT(160,104), "S1515C1.s1515c1f1");
    check_field_offset(lv, s1515c1f2, ABISELECT(200,132), "S1515C1.s1515c1f2");
    check_field_offset(lv, s1515c1f3, ABISELECT(240,160), "S1515C1.s1515c1f3");
    check_field_offset(lv, s1515c1f4, ABISELECT(280,188), "S1515C1.s1515c1f4");
    check_field_offset(lv, s1515c1f5, ABISELECT(320,216), "S1515C1.s1515c1f5");
    test_class_info(&lv, &cd_S1515C1);
    dp->~S1515C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1515C1(Test_S1515C1, "S1515C1", ABISELECT(360,244));

#else // __cplusplus

extern void _ZN7S1515C1C1Ev();
extern void _ZN7S1515C1D1Ev();
Name_Map name_map_S1515C1[] = {
  NSPAIR(_ZN7S1515C1C1Ev),
  NSPAIR(_ZN7S1515C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1515C4;
extern VTBL_ENTRY _ZTI7S1515C4[];
extern  VTBL_ENTRY _ZTV7S1515C4[];
extern Class_Descriptor cd_S1515C3_nt;
extern VTBL_ENTRY _ZTI10S1515C3_nt[];
extern  VTBL_ENTRY _ZTV10S1515C3_nt[];
extern Class_Descriptor cd_S1515C2_nt;
extern VTBL_ENTRY _ZTI10S1515C2_nt[];
extern  VTBL_ENTRY _ZTV10S1515C2_nt[];
static Base_Class bases_S1515C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1515C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1515C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1515C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1515C1[];
extern void _ZN7S1515C1D1Ev();
extern void _ZN7S1515C1D0Ev();
extern void _ZN7S1515C42v6Ev();
extern void _ZN7S1515C42v7Ev();
extern void _ZN7S1515C42v8Ev();
extern void _ZN7S1515C42v9Ev();
extern void _ZN7S1515C43v10Ev();
extern void _ZN7S1515C43v11Ev();
extern void _ZN7S1515C43v12Ev();
extern void _ZN7S1515C43v13Ev();
extern void _ZN7S1515C43v14Ev();
extern void _ZN7S1515C43v15Ev();
extern void _ZN7S1515C43v16Ev();
extern void _ZN7S1515C43v17Ev();
extern void _ZN7S1515C43v18Ev();
extern void _ZN7S1515C43v19Ev();
extern void _ZN7S1515C43v20Ev();
extern void _ZN7S1515C43v21Ev();
extern void _ZN7S1515C43v22Ev();
extern void _ZN7S1515C43v23Ev();
extern void _ZN7S1515C43v24Ev();
extern void _ZN7S1515C43v25Ev();
extern void _ZN7S1515C43v26Ev();
extern void _ZN7S1515C43v27Ev();
extern void _ZN7S1515C43v28Ev();
extern void _ZN7S1515C43v29Ev();
extern void _ZN7S1515C43v30Ev();
extern void _ZN7S1515C43v31Ev();
extern void _ZN7S1515C43v32Ev();
extern void _ZN7S1515C43v33Ev();
extern void _ZN7S1515C43v34Ev();
extern void _ZN7S1515C43v35Ev();
extern void _ZN7S1515C43v36Ev();
extern void _ZN7S1515C43v37Ev();
extern void _ZN7S1515C43v38Ev();
extern void _ZN7S1515C43v39Ev();
extern void _ZN7S1515C43v40Ev();
extern void _ZN7S1515C43v41Ev();
extern void _ZN7S1515C43v42Ev();
extern void _ZN7S1515C43v43Ev();
extern void _ZN7S1515C43v44Ev();
extern void _ZN7S1515C43v45Ev();
extern void _ZN7S1515C43v46Ev();
extern void _ZN7S1515C43v47Ev();
extern void _ZN7S1515C43v48Ev();
extern void _ZN7S1515C43v49Ev();
extern void _ZN7S1515C43v50Ev();
extern void _ZN7S1515C43v51Ev();
extern void _ZN7S1515C43v52Ev();
extern void _ZN7S1515C43v53Ev();
extern void _ZN7S1515C43v54Ev();
extern void _ZN7S1515C43v55Ev();
extern void _ZN7S1515C43v56Ev();
extern void _ZN7S1515C43v57Ev();
extern void _ZN7S1515C43v58Ev();
extern void _ZN7S1515C43v59Ev();
extern void _ZN7S1515C43v60Ev();
extern void _ZN7S1515C43v61Ev();
extern void _ZN7S1515C43v62Ev();
extern void _ZN7S1515C43v63Ev();
extern void _ZN7S1515C43v64Ev();
extern void _ZN7S1515C43v65Ev();
extern void _ZN7S1515C43v66Ev();
extern void _ZN7S1515C43v67Ev();
extern void _ZN7S1515C43v68Ev();
extern void _ZN7S1515C43v69Ev();
extern void _ZN10S1515C3_nt3v70Ev();
extern void _ZN10S1515C3_nt3v71Ev();
extern void _ZN10S1515C3_nt3v72Ev();
extern void _ZN10S1515C3_nt3v73Ev();
extern void _ZN10S1515C3_nt3v74Ev();
extern void _ZN10S1515C3_nt3v75Ev();
extern void _ZN10S1515C3_nt3v76Ev();
extern void _ZN10S1515C3_nt3v77Ev();
extern void _ZN10S1515C3_nt3v78Ev();
extern void _ZN10S1515C3_nt3v79Ev();
extern void _ZN10S1515C3_nt3v80Ev();
extern void _ZN10S1515C3_nt3v81Ev();
extern void _ZN10S1515C3_nt3v82Ev();
extern void _ZN10S1515C3_nt3v83Ev();
extern void _ZN10S1515C3_nt3v84Ev();
extern void _ZN10S1515C3_nt3v85Ev();
extern void _ZN10S1515C3_nt3v86Ev();
extern void _ZN10S1515C3_nt3v87Ev();
extern void _ZN10S1515C3_nt3v88Ev();
extern void _ZN10S1515C3_nt3v89Ev();
extern void _ZN10S1515C2_nt3v90Ev();
extern void _ZN10S1515C2_nt3v91Ev();
extern void _ZN10S1515C2_nt3v92Ev();
extern void _ZN10S1515C2_nt3v93Ev();
extern void _ZN7S1515C12v1Ev();
extern void _ZN7S1515C12v2Ev();
extern void _ZN7S1515C12v3Ev();
extern void _ZN7S1515C12v4Ev();
extern void _ZN7S1515C12v5Ev();
static  VTBL_ENTRY vtc_S1515C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1515C1[0]),
  (VTBL_ENTRY)&_ZN7S1515C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1515C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1515C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1515C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1515C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1515C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN7S1515C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1515C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1515C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1515C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1515C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1515C1[];
extern  VTBL_ENTRY _ZTV7S1515C1[];
Class_Descriptor cd_S1515C1 = {  "S1515C1", // class name
  bases_S1515C1, 3,
  &(vtc_S1515C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(360,244), // object size
  NSPAIRA(_ZTI7S1515C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1515C1),97, //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  S19894C5_nt  {
  virtual void  v1(); // _ZN11S19894C5_nt2v1Ev
  ~S19894C5_nt(); // tgen
  S19894C5_nt(); // tgen
};
//SIG(-1 S19894C5_nt) C1{ v1}


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

//skip512 S19894C5_nt

#else // __cplusplus

extern void _ZN11S19894C5_ntC1Ev();
extern void _ZN11S19894C5_ntD1Ev();
Name_Map name_map_S19894C5_nt[] = {
  NSPAIR(_ZN11S19894C5_ntC1Ev),
  NSPAIR(_ZN11S19894C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19894C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
VTBL_ENTRY *P__ZTI11S19894C5_nt = _ZTI11S19894C5_nt; 
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
Class_Descriptor cd_S19894C5_nt = {  "S19894C5_nt", // class name
  0,0,//no base classes
  &(vtc_S19894C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19894C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19894C5_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  S19894C6_nt  {
  void *s19894c6f0;
  void  mf19894c6(); // _ZN11S19894C6_nt9mf19894c6Ev
};
//SIG(-1 S19894C6_nt) C1{ m Fp}


void  S19894C6_nt ::mf19894c6(){}

//skip512 S19894C6_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19894C6_nt[];
VTBL_ENTRY *P__ZTI11S19894C6_nt = _ZTI11S19894C6_nt; 
Class_Descriptor cd_S19894C6_nt = {  "S19894C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19894C6_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  S19894C7  : virtual S3619C26 , virtual S19894C5_nt {
  ::S19894C5_nt s19894c7f0;
  ~S19894C7(); // tgen
  S19894C7(); // tgen
};
//SIG(-1 S19894C7) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S19894C7()
{
  extern Class_Descriptor cd_S19894C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19894C7, buf);
    S19894C7 *dp, &lv = *(dp=new (buf) S19894C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19894C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C7)");
    check_base_class_offset(lv, (S3619C26*), 0, "S19894C7");
    check_base_class_offset(lv, (S19894C5_nt*), 0, "S19894C7");
    check_field_offset(lv, s19894c7f0, ABISELECT(8,4), "S19894C7.s19894c7f0");
    test_class_info(&lv, &cd_S19894C7);
    dp->~S19894C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C7(Test_S19894C7, "S19894C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19894C7C1Ev();
extern void _ZN8S19894C7D1Ev();
Name_Map name_map_S19894C7[] = {
  NSPAIR(_ZN8S19894C7C1Ev),
  NSPAIR(_ZN8S19894C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
static Base_Class bases_S19894C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19894C7[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV8S19894C7[];
static  VTT_ENTRY vtt_S19894C7[] = {
  {&(_ZTV8S19894C7[5]),  5,6},
  {&(_ZTV8S19894C7[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
Class_Descriptor cd_S19894C7 = {  "S19894C7", // class name
  bases_S19894C7, 2,
  &(vtc_S19894C7[0]), // expected_vtbl_contents
  &(vtt_S19894C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19894C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19894C7),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19894C7),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  S19894C4  : S19894C5_nt , S19894C6_nt , virtual S19894C7 {
  virtual void  v2(); // _ZN8S19894C42v2Ev
  ~S19894C4(); // tgen
  S19894C4(); // tgen
};
//SIG(-1 S19894C4) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S19894C4()
{
  extern Class_Descriptor cd_S19894C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19894C4, buf);
    S19894C4 *dp, &lv = *(dp=new (buf) S19894C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19894C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C4)");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*), 0, "S19894C4");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19894C4");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C4");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(16,8), "S19894C4");
    check_base_class_offset(lv, (S19894C7*), ABISELECT(16,8), "S19894C4");
    test_class_info(&lv, &cd_S19894C4);
    dp->~S19894C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C4(Test_S19894C4, "S19894C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19894C4C1Ev();
extern void _ZN8S19894C4D1Ev();
Name_Map name_map_S19894C4[] = {
  NSPAIR(_ZN8S19894C4C1Ev),
  NSPAIR(_ZN8S19894C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
static Base_Class bases_S19894C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S19894C4[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C4[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV8S19894C4[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C4[] = {
  {&(_ZTV8S19894C4[5]),  5,13},
  {&(_ZTV8S19894C4[12]),  12,13},
  {&(_ZTV8S19894C4[12]),  12,13},
  {&(_tg__ZTV8S19894C7__8S19894C4[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
Class_Descriptor cd_S19894C4 = {  "S19894C4", // class name
  bases_S19894C4, 5,
  &(vtc_S19894C4[0]), // expected_vtbl_contents
  &(vtt_S19894C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19894C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19894C4),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19894C4),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C3  : virtual S19894C4 {
  ~S19894C3(); // tgen
  S19894C3(); // tgen
};
//SIG(-1 S19894C3) C1{ VBC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2}}


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

static void Test_S19894C3()
{
  extern Class_Descriptor cd_S19894C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19894C3, buf);
    S19894C3 *dp, &lv = *(dp=new (buf) S19894C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19894C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C3)");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(8,4), "S19894C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(16,8), "S19894C3");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C3");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C3");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(24,12), "S19894C3");
    check_base_class_offset(lv, (S19894C4*), ABISELECT(8,4), "S19894C3");
    test_class_info(&lv, &cd_S19894C3);
    dp->~S19894C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C3(Test_S19894C3, "S19894C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19894C3C1Ev();
extern void _ZN8S19894C3D1Ev();
Name_Map name_map_S19894C3[] = {
  NSPAIR(_ZN8S19894C3C1Ev),
  NSPAIR(_ZN8S19894C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
static Base_Class bases_S19894C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(24,12), //bcp->offset
    17, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19894C3[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C3[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C3[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19894C3[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19894C3[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV8S19894C3[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__8S19894C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__8S19894C3[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__8S19894C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C3[] = {
  {&(_ZTV8S19894C3[7]),  7,23},
  {&(_ZTV8S19894C3[15]),  15,23},
  {&(_ZTV8S19894C3[22]),  22,23},
  {&(_ZTV8S19894C3[7]),  7,23},
  {&(_tg__ZTV8S19894C4__8S19894C3[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__8S19894C3[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__8S19894C3[3]),  3,4},
  {&(_tg__ZTV8S19894C7__8S19894C3[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__8S19894C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19894C3[];
extern  VTBL_ENTRY _ZTV8S19894C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C3[];
Class_Descriptor cd_S19894C3 = {  "S19894C3", // class name
  bases_S19894C3, 6,
  &(vtc_S19894C3[0]), // expected_vtbl_contents
  &(vtt_S19894C3[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19894C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19894C3),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19894C3),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C10  : S19894C7 , S3619C26 , S19894C5_nt {
  virtual  ~S19894C10(); // _ZN9S19894C10D2Ev
  S19894C10(); // tgen
};
//SIG(-1 S19894C10) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S19894C10()
{
  extern Class_Descriptor cd_S19894C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19894C10, buf);
    S19894C10 *dp, &lv = *(dp=new (buf) S19894C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19894C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C10)");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(24,12), "S19894C10");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C10");
    check_base_class_offset(lv, (S19894C7*), 0, "S19894C10");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*), 0, "S19894C10");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*), ABISELECT(16,8), "S19894C10");
    test_class_info(&lv, &cd_S19894C10);
    dp->~S19894C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C10(Test_S19894C10, "S19894C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19894C10C1Ev();
extern void _ZN9S19894C10D2Ev();
Name_Map name_map_S19894C10[] = {
  NSPAIR(_ZN9S19894C10C1Ev),
  NSPAIR(_ZN9S19894C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
static Base_Class bases_S19894C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C5_nt,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C10[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C10[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C10[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C10[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C10[] = {
  {&(_ZTV9S19894C10[5]),  5,11},
  {&(_tg__ZTV8S19894C7__9S19894C10[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C10[5]),  5,6},
  {&(_ZTV9S19894C10[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
Class_Descriptor cd_S19894C10 = {  "S19894C10", // class name
  bases_S19894C10, 5,
  &(vtc_S19894C10[0]), // expected_vtbl_contents
  &(vtt_S19894C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19894C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19894C10),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C10),4, //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  S19894C9  : S19894C6_nt , S19894C5_nt , virtual S19894C4 , S19894C7 , S19894C10 {
  virtual  ~S19894C9(); // _ZN8S19894C9D2Ev
  S19894C9(); // tgen
};
//SIG(-1 S19894C9) C1{ BC2{ m Fp} BC3{ v1} VBC4{ BC3 BC2 VBC5{ VBC6{ m} VBC3 FC3} v2} BC5 BC7{ BC5 BC6 BC3 vd} vd}


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

static void Test_S19894C9()
{
  extern Class_Descriptor cd_S19894C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S19894C9, buf);
    S19894C9 *dp, &lv = *(dp=new (buf) S19894C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S19894C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C9)");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19894C9");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*), 0, "S19894C9");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(56,28), "S19894C9");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(64,32), "S19894C9");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C9");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C9");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), 0, "S19894C9");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(72,36), "S19894C9");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(72,36), "S19894C9");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(72,36), "S19894C9");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(72,36), "S19894C9");
    check_base_class_offset(lv, (S19894C4*), ABISELECT(56,28), "S19894C9");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), ABISELECT(16,8), "S19894C9");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(32,16), "S19894C9");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(32,16), "S19894C9");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(48,24), "S19894C9");
    check_base_class_offset(lv, (S19894C10*), ABISELECT(32,16), "S19894C9");
    test_class_info(&lv, &cd_S19894C9);
    dp->~S19894C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C9(Test_S19894C9, "S19894C9", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN8S19894C9C1Ev();
extern void _ZN8S19894C9D2Ev();
Name_Map name_map_S19894C9[] = {
  NSPAIR(_ZN8S19894C9C1Ev),
  NSPAIR(_ZN8S19894C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
static Base_Class bases_S19894C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19894C5_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(72,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(48,24), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI8S19894C9[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C9[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV8S19894C9[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__A__8S19894C9[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A2__8S19894C9[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A2__8S19894C9[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__8S19894C9[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__8S19894C9[] = {
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9[] = {
  0,
  ABISELECT(-72,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C9[] = {
  {&(_ZTV8S19894C9[6]),  6,41},
  {&(_tg__ZTV8S19894C7__A__8S19894C9[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__A__8S19894C9[3]),  3,4},
  {&(_tg__ZTV9S19894C10__8S19894C9[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A2__8S19894C9[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A2__8S19894C9[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__8S19894C9[3]),  3,4},
  {&(_ZTV8S19894C9[33]),  33,41},
  {&(_ZTV8S19894C9[40]),  40,41},
  {&(_ZTV8S19894C9[40]),  40,41},
  {&(_ZTV8S19894C9[14]),  14,41},
  {&(_ZTV8S19894C9[20]),  20,41},
  {&(_tg__ZTV8S19894C4__8S19894C9[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__8S19894C9[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4__8S19894C9[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C9[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C9[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
Class_Descriptor cd_S19894C9 = {  "S19894C9", // class name
  bases_S19894C9, 13,
  &(vtc_S19894C9[0]), // expected_vtbl_contents
  &(vtt_S19894C9[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI8S19894C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19894C9),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19894C9),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  S19894C13  : virtual S19894C7 , virtual S19894C4 {
  ~S19894C13(); // tgen
  S19894C13(); // tgen
};
//SIG(-1 S19894C13) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S19894C13()
{
  extern Class_Descriptor cd_S19894C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19894C13, buf);
    S19894C13 *dp, &lv = *(dp=new (buf) S19894C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19894C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C13)");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C13");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C13");
    check_base_class_offset(lv, (S19894C7*), ABISELECT(8,4), "S19894C13");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(8,4), "S19894C13");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(24,12), "S19894C13");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(32,16), "S19894C13");
    check_base_class_offset(lv, (S19894C4*), ABISELECT(24,12), "S19894C13");
    test_class_info(&lv, &cd_S19894C13);
    dp->~S19894C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C13(Test_S19894C13, "S19894C13", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S19894C13C1Ev();
extern void _ZN9S19894C13D1Ev();
Name_Map name_map_S19894C13[] = {
  NSPAIR(_ZN9S19894C13C1Ev),
  NSPAIR(_ZN9S19894C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
static Base_Class bases_S19894C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C13[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY vtc_S19894C13[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S19894C13[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__9S19894C13[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C13[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C13[] = {
  {&(_ZTV9S19894C13[7]),  7,23},
  {&(_ZTV9S19894C13[13]),  13,23},
  {&(_ZTV9S19894C13[7]),  7,23},
  {&(_ZTV9S19894C13[21]),  21,23},
  {&(_tg__ZTV8S19894C7__9S19894C13[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__9S19894C13[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C13[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C13[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
Class_Descriptor cd_S19894C13 = {  "S19894C13", // class name
  bases_S19894C13, 6,
  &(vtc_S19894C13[0]), // expected_vtbl_contents
  &(vtt_S19894C13[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S19894C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19894C13),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C13),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C15  : virtual S3619C26 , virtual S19894C6_nt {
  ~S19894C15(); // tgen
  S19894C15(); // tgen
};
//SIG(-1 S19894C15) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S19894C15()
{
  extern Class_Descriptor cd_S19894C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19894C15, buf);
    S19894C15 *dp, &lv = *(dp=new (buf) S19894C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19894C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C15)");
    check_base_class_offset(lv, (S3619C26*), 0, "S19894C15");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19894C15");
    test_class_info(&lv, &cd_S19894C15);
    dp->~S19894C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C15(Test_S19894C15, "S19894C15", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19894C15C1Ev();
extern void _ZN9S19894C15D1Ev();
Name_Map name_map_S19894C15[] = {
  NSPAIR(_ZN9S19894C15C1Ev),
  NSPAIR(_ZN9S19894C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19894C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19894C15[];
static  VTBL_ENTRY vtc_S19894C15[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern VTBL_ENTRY _ZTV9S19894C15[];
static  VTT_ENTRY vtt_S19894C15[] = {
  {&(_ZTV9S19894C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
Class_Descriptor cd_S19894C15 = {  "S19894C15", // class name
  bases_S19894C15, 2,
  &(vtc_S19894C15[0]), // expected_vtbl_contents
  &(vtt_S19894C15[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19894C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19894C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C15),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  S19894C12  : virtual S19894C13 , S19894C7 , S3619C26 , S3619C16 , S19894C15 {
  virtual  ~S19894C12(); // _ZN9S19894C12D2Ev
  S19894C12(); // tgen
};
//SIG(-1 S19894C12) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S19894C12()
{
  extern Class_Descriptor cd_S19894C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19894C12, buf);
    S19894C12 *dp, &lv = *(dp=new (buf) S19894C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19894C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C12)");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(48,24), "S19894C12");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(48,24), "S19894C12");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*), ABISELECT(48,24), "S19894C12");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(24,12), "S19894C12");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(24,12), "S19894C12");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(32,16), "S19894C12");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(32,16), "S19894C12");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(48,24), "S19894C12");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(56,28), "S19894C12");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(48,24), "S19894C12");
    check_base_class_offset(lv, (S19894C13*), ABISELECT(24,12), "S19894C12");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), 0, "S19894C12");
    /*is_ambiguous_... S19894C12::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*), 0, "S19894C12");
    check_base_class_offset(lv, (S3619C16*), 0, "S19894C12");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*), ABISELECT(64,32), "S19894C12");
    check_base_class_offset(lv, (S19894C15*), ABISELECT(16,8), "S19894C12");
    test_class_info(&lv, &cd_S19894C12);
    dp->~S19894C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C12(Test_S19894C12, "S19894C12", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S19894C12C1Ev();
extern void _ZN9S19894C12D2Ev();
Name_Map name_map_S19894C12[] = {
  NSPAIR(_ZN9S19894C12C1Ev),
  NSPAIR(_ZN9S19894C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
static Base_Class bases_S19894C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19894C15,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI9S19894C12[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY vtc_S19894C12[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S19894C12[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__9S19894C12[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__A__9S19894C12[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C12[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C12[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__9S19894C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__9S19894C12[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__9S19894C12[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C12[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C12[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C12[] = {
  {&(_ZTV9S19894C12[9]),  9,39},
  {&(_tg__ZTV8S19894C7__A__9S19894C12[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__A__9S19894C12[3]),  3,4},
  {&(_tg__ZTV9S19894C15__9S19894C12[4]),  4,4},
  {&(_ZTV9S19894C12[23]),  23,39},
  {&(_ZTV9S19894C12[29]),  29,39},
  {&(_ZTV9S19894C12[23]),  23,39},
  {&(_ZTV9S19894C12[37]),  37,39},
  {&(_ZTV9S19894C12[16]),  16,39},
  {&(_tg__ZTV9S19894C13__9S19894C12[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C12[5]),  5,6},
  {&(_tg__ZTV9S19894C13__9S19894C12[7]),  7,8},
  {&(_tg__ZTV8S19894C4__9S19894C13__9S19894C12[7]),  7,9},
  {&(_tg__ZTV8S19894C7__9S19894C12[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__9S19894C12[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C12[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C12[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
Class_Descriptor cd_S19894C12 = {  "S19894C12", // class name
  bases_S19894C12, 12,
  &(vtc_S19894C12[0]), // expected_vtbl_contents
  &(vtt_S19894C12[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S19894C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C12),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C12),18, //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  S19894C17_nt  {
  void  mf19894c17(); // _ZN12S19894C17_nt10mf19894c17Ev
};
//SIG(-1 S19894C17_nt) C1{ m}


void  S19894C17_nt ::mf19894c17(){}

//skip512 S19894C17_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19894C17_nt[];
VTBL_ENTRY *P__ZTI12S19894C17_nt = _ZTI12S19894C17_nt; 
Class_Descriptor cd_S19894C17_nt = {  "S19894C17_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S19894C17_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  S19894C11  : virtual S19894C10 , S19894C12 , S3619C5_nt , virtual S19894C9 , S19894C17_nt {
  ::S19894C3 s19894c11f0;
  long s19894c11f1;
  virtual  ~S19894C11(); // _ZN9S19894C11D2Ev
  S19894C11(); // tgen
};
//SIG(-1 S19894C11) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} BC6{ VBC7{ VBC3 VBC8{ BC5 BC9{ m Fp} VBC3 v2}} BC3 BC4 BC10{ m} BC11{ VBC4 VBC9} vd} BC12{ m} VBC13{ BC9 BC5 VBC8 BC3 BC2 vd} BC14{ m} vd FC15{ VBC8} Fl}


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

static void Test_S19894C11()
{
  extern Class_Descriptor cd_S19894C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[26];
    init_test(&cd_S19894C11, buf);
    S19894C11 *dp, &lv = *(dp=new (buf) S19894C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,100), "sizeof(S19894C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C11)");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(96,48), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(96,48), "S19894C11");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C12*), ABISELECT(96,48), "S19894C11");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C12*), ABISELECT(96,48), "S19894C11");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C9*), ABISELECT(96,48), "S19894C11");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(96,48), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(72,36), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(72,36), "S19894C11");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C12*), ABISELECT(72,36), "S19894C11");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C9*), ABISELECT(72,36), "S19894C11");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(72,36), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(72,36), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(72,36), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(88,44), "S19894C11");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C10*), ABISELECT(72,36), "S19894C11");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(104,52), "S19894C11");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(104,52), "S19894C11");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(120,60), "S19894C11");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(128,64), "S19894C11");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(120,60), "S19894C11");
    check_base_class_offset(lv, (S19894C4*)(S19894C9*), ABISELECT(120,60), "S19894C11");
    check_base_class_offset(lv, (S19894C13*)(S19894C12*), ABISELECT(96,48), "S19894C11");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C12*), 0, "S19894C11");
    /*is_ambiguous_... S19894C12::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C12*), 0, "S19894C11");
    check_base_class_offset(lv, (S3619C16*)(S19894C12*), 0, "S19894C11");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C12*), ABISELECT(136,68), "S19894C11");
    check_base_class_offset(lv, (S19894C15*)(S19894C12*), ABISELECT(16,8), "S19894C11");
    check_base_class_offset(lv, (S19894C12*), 0, "S19894C11");
    check_base_class_offset(lv, (S3619C5_nt*), 0, "S19894C11");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C9*), ABISELECT(152,76), "S19894C11");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C9*), ABISELECT(144,72), "S19894C11");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C9*), ABISELECT(160,80), "S19894C11");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(176,88), "S19894C11");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C9*), ABISELECT(176,88), "S19894C11");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C9*), ABISELECT(192,96), "S19894C11");
    check_base_class_offset(lv, (S19894C10*)(S19894C9*), ABISELECT(176,88), "S19894C11");
    check_base_class_offset(lv, (S19894C9*), ABISELECT(144,72), "S19894C11");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19894C11");
    check_field_offset(lv, s19894c11f0, ABISELECT(24,12), "S19894C11.s19894c11f0");
    check_field_offset(lv, s19894c11f1, ABISELECT(64,32), "S19894C11.s19894c11f1");
    test_class_info(&lv, &cd_S19894C11);
    dp->~S19894C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C11(Test_S19894C11, "S19894C11", ABISELECT(200,100));

#else // __cplusplus

extern void _ZN9S19894C11C1Ev();
extern void _ZN9S19894C11D2Ev();
Name_Map name_map_S19894C11[] = {
  NSPAIR(_ZN9S19894C11C1Ev),
  NSPAIR(_ZN9S19894C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C12;
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
extern Class_Descriptor cd_S3619C5_nt;
extern VTBL_ENTRY _ZTI10S3619C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C9;
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S19894C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(88,44), //bcp->offset
    27, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(72,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(104,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(120,60), //bcp->offset
    44, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C13,    ABISELECT(96,48), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19894C7,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19894C15,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C12,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C5_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
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(160,80), //bcp->offset
    64, //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
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(176,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
    24, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(192,96), //bcp->offset
    78, //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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(176,88), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C9,    ABISELECT(144,72), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C11[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C11D1Ev();
extern void _ZN9S19894C11D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19894C11D1Ev,_ZThn36_N9S19894C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19894C11D0Ev,_ZThn36_N9S19894C11D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S19894C11D1Ev,_ZThn72_N9S19894C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S19894C11D0Ev,_ZThn72_N9S19894C11D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C11D1Ev,_ZTvn16_n32_N9S19894C11D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C11D0Ev,_ZTvn16_n32_N9S19894C11D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C11[] = {
  ABISELECT(144,72),
  ABISELECT(72,36),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C11D0Ev,
  ABISELECT(120,60),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  ABISELECT(-72,-36),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-144,-72),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C11D1Ev,_ZTvn16_n32_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C11D0Ev,_ZTvn16_n32_N9S19894C11D0Ev),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C11[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C12__9S19894C11[] = {
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C12__A2__9S19894C11[] = {
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A2__9S19894C11[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C11[] = {
  ABISELECT(120,60),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C12__9S19894C11[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C12__9S19894C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C12__9S19894C11[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C12__9S19894C11[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C12__9S19894C11[] = {
  ABISELECT(120,60),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__9S19894C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C11[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__9S19894C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C13__9S19894C11[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__9S19894C11[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C11[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C11[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C11[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C11[] = {
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A3__9S19894C11[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A3__9S19894C11[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__A1__9S19894C11[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C108S19894C9__A4__9S19894C11[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A4__9S19894C11[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C108S19894C9__A1__9S19894C11[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9__9S19894C11[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9__9S19894C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A2__8S19894C9__9S19894C11[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9__9S19894C11[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9__9S19894C11[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
};
static  VTT_ENTRY vtt_S19894C11[] = {
  {&(_ZTV9S19894C11[11]),  11,81},
  {&(_tg__ZTV9S19894C12__9S19894C11[9]),  9,12},
  {&(_tg__ZTV8S19894C79S19894C12__A2__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A2__9S19894C11[3]),  3,4},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C11[4]),  4,4},
  {&(_tg__ZTV9S19894C13__9S19894C12__9S19894C11[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C12__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C12__9S19894C11[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C12__9S19894C11[7]),  7,9},
  {&(_tg__ZTV9S19894C15__9S19894C12__9S19894C11[4]),  4,4},
  {&(_ZTV9S19894C11[24]),  24,81},
  {&(_ZTV9S19894C11[24]),  24,81},
  {&(_ZTV9S19894C11[29]),  29,81},
  {&(_ZTV9S19894C11[37]),  37,81},
  {&(_ZTV9S19894C11[43]),  43,81},
  {&(_ZTV9S19894C11[51]),  51,81},
  {&(_ZTV9S19894C11[18]),  18,81},
  {&(_ZTV9S19894C11[61]),  61,81},
  {&(_ZTV9S19894C11[69]),  69,81},
  {&(_ZTV9S19894C11[75]),  75,81},
  {&(_ZTV9S19894C11[80]),  80,81},
  {&(_tg__ZTV9S19894C10__9S19894C11[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__9S19894C11[5]),  5,6},
  {&(_tg__ZTV8S19894C79S19894C10__9S19894C11[5]),  5,6},
  {&(_tg__ZTV9S19894C10__9S19894C11[5]),  5,8},
  {&(_tg__ZTV9S19894C13__9S19894C11[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C13__9S19894C11[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C13__9S19894C11[7]),  7,9},
  {&(_tg__ZTV8S19894C7__A1__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C11[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C11[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C11[3]),  3,4},
  {&(_tg__ZTV8S19894C9__9S19894C11[6]),  6,9},
  {&(_tg__ZTV8S19894C78S19894C9__A3__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A3__9S19894C11[3]),  3,4},
  {&(_tg__ZTV9S19894C108S19894C9__A1__9S19894C11[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C108S19894C9__A4__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A4__9S19894C11[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C108S19894C9__A1__9S19894C11[3]),  3,4},
  {&(_tg__ZTV8S19894C4__8S19894C9__9S19894C11[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C11[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A2__8S19894C9__9S19894C11[3]),  3,4},
  {&(_tg__ZTV8S19894C7__A__8S19894C9__9S19894C11[5]),  5,6},
  {&(_tg__ZTV9S19894C10__8S19894C9__9S19894C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19894C11[];
extern  VTBL_ENTRY _ZTV9S19894C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C11[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C11D0Ev,_ZThn72_N9S19894C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C11D1Ev,_ZThn72_N9S19894C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19894C11D0Ev,_ZThn36_N9S19894C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19894C11D1Ev,_ZThn36_N9S19894C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C11 = {  "S19894C11", // class name
  bases_S19894C11, 27,
  &(vtc_S19894C11[0]), // expected_vtbl_contents
  &(vtt_S19894C11[0]), // expected_vtt_contents
  ABISELECT(200,100), // object size
  NSPAIRA(_ZTI9S19894C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C11),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C11),46, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C18  : virtual S3223C8_nt {
  void *s19894c18f0;
  ~S19894C18(); // tgen
  S19894C18(); // tgen
};
//SIG(-1 S19894C18) C1{ VBC2{ m Fi} Fp}


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

static void Test_S19894C18()
{
  extern Class_Descriptor cd_S19894C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19894C18, buf);
    S19894C18 *dp, &lv = *(dp=new (buf) S19894C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19894C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C18)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(16,8), "S19894C18");
    check_field_offset(lv, s19894c18f0, ABISELECT(8,4), "S19894C18.s19894c18f0");
    test_class_info(&lv, &cd_S19894C18);
    dp->~S19894C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C18(Test_S19894C18, "S19894C18", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19894C18C1Ev();
extern void _ZN9S19894C18D1Ev();
Name_Map name_map_S19894C18[] = {
  NSPAIR(_ZN9S19894C18C1Ev),
  NSPAIR(_ZN9S19894C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S19894C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C18[];
static  VTBL_ENTRY vtc_S19894C18[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C18[0]),
};
extern VTBL_ENTRY _ZTV9S19894C18[];
static  VTT_ENTRY vtt_S19894C18[] = {
  {&(_ZTV9S19894C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19894C18[];
extern  VTBL_ENTRY _ZTV9S19894C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C18[];
Class_Descriptor cd_S19894C18 = {  "S19894C18", // class name
  bases_S19894C18, 1,
  &(vtc_S19894C18[0]), // expected_vtbl_contents
  &(vtt_S19894C18[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19894C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19894C18),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C18),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  S19894C22  : S19894C10 {
  ~S19894C22(); // tgen
  S19894C22(); // tgen
};
//SIG(-1 S19894C22) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S19894C22()
{
  extern Class_Descriptor cd_S19894C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19894C22, buf);
    S19894C22 *dp, &lv = *(dp=new (buf) S19894C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19894C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C22)");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(24,12), "S19894C22");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), 0, "S19894C22");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*), 0, "S19894C22");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), 0, "S19894C22");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(16,8), "S19894C22");
    check_base_class_offset(lv, (S19894C10*), 0, "S19894C22");
    test_class_info(&lv, &cd_S19894C22);
    dp->~S19894C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C22(Test_S19894C22, "S19894C22", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19894C22C1Ev();
extern void _ZN9S19894C22D1Ev();
Name_Map name_map_S19894C22[] = {
  NSPAIR(_ZN9S19894C22C1Ev),
  NSPAIR(_ZN9S19894C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
static Base_Class bases_S19894C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C5_nt,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C22[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C22[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C22[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C22[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__9S19894C22[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C22[] = {
  {&(_ZTV9S19894C22[5]),  5,11},
  {&(_tg__ZTV9S19894C10__9S19894C22[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__9S19894C22[5]),  5,6},
  {&(_tg__ZTV8S19894C79S19894C10__9S19894C22[5]),  5,6},
  {&(_tg__ZTV9S19894C10__9S19894C22[5]),  5,8},
  {&(_ZTV9S19894C22[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
Class_Descriptor cd_S19894C22 = {  "S19894C22", // class name
  bases_S19894C22, 6,
  &(vtc_S19894C22[0]), // expected_vtbl_contents
  &(vtt_S19894C22[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19894C22),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19894C22),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C22),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  S19894C21  : S19894C6_nt , S3619C16 , virtual S19894C7 , virtual S19894C22 {
  ~S19894C21(); // tgen
  S19894C21(); // tgen
};
//SIG(-1 S19894C21) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S19894C21()
{
  extern Class_Descriptor cd_S19894C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19894C21, buf);
    S19894C21 *dp, &lv = *(dp=new (buf) S19894C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19894C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C21)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19894C21");
    check_base_class_offset(lv, (S3619C16*), 0, "S19894C21");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C21");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C21");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C21");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C21");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), ABISELECT(16,8), "S19894C21");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C21");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C21");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(48,24), "S19894C21");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C21");
    check_base_class_offset(lv, (S19894C22*), ABISELECT(32,16), "S19894C21");
    test_class_info(&lv, &cd_S19894C21);
    dp->~S19894C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C21(Test_S19894C21, "S19894C21", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19894C21C1Ev();
extern void _ZN9S19894C21D1Ev();
Name_Map name_map_S19894C21[] = {
  NSPAIR(_ZN9S19894C21C1Ev),
  NSPAIR(_ZN9S19894C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
static Base_Class bases_S19894C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S19894C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C21[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C21D1Ev,_ZThn16_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn32_N9S19894C21D0Ev,_ZThn16_N9S19894C21D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C21[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C21[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__9S19894C21[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__9S19894C21[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C21[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C21[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C21[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C21[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C21[] = {
  {&(_ZTV9S19894C21[7]),  7,28},
  {&(_ZTV9S19894C21[15]),  15,28},
  {&(_ZTV9S19894C21[7]),  7,28},
  {&(_ZTV9S19894C21[22]),  22,28},
  {&(_ZTV9S19894C21[27]),  27,28},
  {&(_tg__ZTV8S19894C7__9S19894C21[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__9S19894C21[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C21[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__9S19894C21[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C21[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C21[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C21[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C21D0Ev,_ZThn16_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C21D1Ev,_ZThn16_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C21 = {  "S19894C21", // class name
  bases_S19894C21, 10,
  &(vtc_S19894C21[0]), // expected_vtbl_contents
  &(vtt_S19894C21[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19894C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19894C21),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C21),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C24  : virtual S19894C10 , virtual S19894C6_nt {
  void *s19894c24f0[9];
  ~S19894C24(); // tgen
  S19894C24(); // tgen
};
//SIG(-1 S19894C24) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S19894C24()
{
  extern Class_Descriptor cd_S19894C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19894C24, buf);
    S19894C24 *dp, &lv = *(dp=new (buf) S19894C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19894C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C24)");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), 0, "S19894C24");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), 0, "S19894C24");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(80,40), "S19894C24");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(80,40), "S19894C24");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(96,48), "S19894C24");
    check_base_class_offset(lv, (S19894C10*), ABISELECT(80,40), "S19894C24");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S19894C24");
    check_field_offset(lv, s19894c24f0, ABISELECT(8,4), "S19894C24.s19894c24f0");
    test_class_info(&lv, &cd_S19894C24);
    dp->~S19894C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C24(Test_S19894C24, "S19894C24", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN9S19894C24C1Ev();
extern void _ZN9S19894C24D1Ev();
Name_Map name_map_S19894C24[] = {
  NSPAIR(_ZN9S19894C24C1Ev),
  NSPAIR(_ZN9S19894C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19894C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C24[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C24[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C24[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__9S19894C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__9S19894C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__9S19894C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C24[] = {
  {&(_ZTV9S19894C24[7]),  7,22},
  {&(_ZTV9S19894C24[16]),  16,22},
  {&(_ZTV9S19894C24[7]),  7,22},
  {&(_ZTV9S19894C24[21]),  21,22},
  {&(_tg__ZTV9S19894C10__9S19894C24[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__9S19894C24[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__9S19894C24[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__9S19894C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C24 = {  "S19894C24", // class name
  bases_S19894C24, 7,
  &(vtc_S19894C24[0]), // expected_vtbl_contents
  &(vtt_S19894C24[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI9S19894C24),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19894C24),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C24),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C23  : virtual S19894C24 , S3619C26 , S19894C13 {
  void *s19894c23f0;
  virtual  ~S19894C23(); // _ZN9S19894C23D2Ev
  S19894C23(); // tgen
};
//SIG(-1 S19894C23) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S19894C23()
{
  extern Class_Descriptor cd_S19894C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S19894C23, buf);
    S19894C23 *dp, &lv = *(dp=new (buf) S19894C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19894C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C23)");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(120,60), "S19894C23");
    /*is_ambiguous_... S19894C23::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(120,60), "S19894C23");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(16,8), "S19894C23");
    /*is_ambiguous_... S19894C23::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(16,8), "S19894C23");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(96,48), "S19894C23");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(96,48), "S19894C23");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(112,56), "S19894C23");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(96,48), "S19894C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(120,60), "S19894C23");
    check_base_class_offset(lv, (S19894C24*), ABISELECT(16,8), "S19894C23");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*), 0, "S19894C23");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(128,64), "S19894C23");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(128,64), "S19894C23");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(144,72), "S19894C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(152,76), "S19894C23");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(144,72), "S19894C23");
    check_base_class_offset(lv, (S19894C13*), 0, "S19894C23");
    check_field_offset(lv, s19894c23f0, ABISELECT(8,4), "S19894C23.s19894c23f0");
    test_class_info(&lv, &cd_S19894C23);
    dp->~S19894C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C23(Test_S19894C23, "S19894C23", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S19894C23C1Ev();
extern void _ZN9S19894C23D2Ev();
Name_Map name_map_S19894C23[] = {
  NSPAIR(_ZN9S19894C23C1Ev),
  NSPAIR(_ZN9S19894C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
static Base_Class bases_S19894C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C7,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19894C5_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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19894C13,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C23[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C23D1Ev,_ZThn8_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C23D0Ev,_ZThn8_N9S19894C23D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S19894C23D1Ev,_ZThn48_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn96_N9S19894C23D0Ev,_ZThn48_N9S19894C23D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY vtc_S19894C23[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S19894C23[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C23[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__9S19894C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C13__9S19894C23[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__9S19894C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C23[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__9S19894C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C23[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__9S19894C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__9S19894C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__9S19894C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C23[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C23[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C23[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C23[] = {
  {&(_ZTV9S19894C23[10]),  10,51},
  {&(_tg__ZTV9S19894C13__9S19894C23[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C23[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C13__9S19894C23[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C13__9S19894C23[7]),  7,9},
  {&(_ZTV9S19894C23[21]),  21,51},
  {&(_ZTV9S19894C23[30]),  30,51},
  {&(_ZTV9S19894C23[21]),  21,51},
  {&(_ZTV9S19894C23[35]),  35,51},
  {&(_ZTV9S19894C23[41]),  41,51},
  {&(_ZTV9S19894C23[49]),  49,51},
  {&(_tg__ZTV9S19894C24__9S19894C23[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__9S19894C23[6]),  6,9},
  {&(_tg__ZTV9S19894C24__9S19894C23[7]),  7,10},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C23[2]),  2,3},
  {&(_tg__ZTV9S19894C10__9S19894C23[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__9S19894C23[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__9S19894C23[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__9S19894C23[3]),  3,4},
  {&(_tg__ZTV8S19894C7__A1__9S19894C23[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C23[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C23[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C23[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C23[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19894C23D0Ev,_ZThn48_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19894C23D1Ev,_ZThn48_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C23D0Ev,_ZThn8_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C23D1Ev,_ZThn8_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C23 = {  "S19894C23", // class name
  bases_S19894C23, 14,
  &(vtc_S19894C23[0]), // expected_vtbl_contents
  &(vtt_S19894C23[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S19894C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19894C23),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C23),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C20  : S19894C15 , virtual S3223C8_nt , S19894C7 , virtual S19894C21 , S19894C23 {
  virtual  ~S19894C20(); // _ZN9S19894C20D2Ev
  S19894C20(); // tgen
};
//SIG(-1 S19894C20) C1{ BC2{ VBC3{ m} VBC4{ m Fp}} VBC5{ m Fi} BC6{ VBC3 VBC7{ v1} FC7} VBC8{ BC4 BC9{ m} VBC6 VBC10{ BC11{ BC6 BC3 BC7 vd}}} BC12{ VBC13{ VBC11 VBC4 Fp[9]} BC3 BC14{ VBC6 VBC15{ BC7 BC4 VBC6 v2}} vd Fp} vd}


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

static void Test_S19894C20()
{
  extern Class_Descriptor cd_S19894C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[30];
    init_test(&cd_S19894C20, buf);
    S19894C20 *dp, &lv = *(dp=new (buf) S19894C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,116), "sizeof(S19894C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C20)");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*), 0, "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C20");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), 0, "S19894C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*), ABISELECT(40,20), "S19894C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(40,20), "S19894C20");
    check_base_class_offset(lv, (S19894C15*), 0, "S19894C20");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(48,24), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(8,4), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(8,4), "S19894C20");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(8,4), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(8,4), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), ABISELECT(8,4), "S19894C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C21*), ABISELECT(64,32), "S19894C20");
    check_base_class_offset(lv, (S3619C16*)(S19894C21*), ABISELECT(56,28), "S19894C20");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C21*), ABISELECT(72,36), "S19894C20");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*), ABISELECT(72,36), "S19894C20");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(72,36), "S19894C20");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(88,44), "S19894C20");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(88,44), "S19894C20");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(104,52), "S19894C20");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(88,44), "S19894C20");
    check_base_class_offset(lv, (S19894C22*)(S19894C21*), ABISELECT(88,44), "S19894C20");
    check_base_class_offset(lv, (S19894C21*), ABISELECT(56,28), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(192,96), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(192,96), "S19894C20");
    /*is_ambiguous_... S19894C20::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(208,104), "S19894C20");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(192,96), "S19894C20");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*), ABISELECT(112,56), "S19894C20");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*), ABISELECT(24,12), "S19894C20");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(216,108), "S19894C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(224,112), "S19894C20");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*), ABISELECT(216,108), "S19894C20");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*), ABISELECT(24,12), "S19894C20");
    check_base_class_offset(lv, (S19894C23*), ABISELECT(24,12), "S19894C20");
    test_class_info(&lv, &cd_S19894C20);
    dp->~S19894C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C20(Test_S19894C20, "S19894C20", ABISELECT(232,116));

#else // __cplusplus

extern void _ZN9S19894C20C1Ev();
extern void _ZN9S19894C20D2Ev();
Name_Map name_map_S19894C20[] = {
  NSPAIR(_ZN9S19894C20C1Ev),
  NSPAIR(_ZN9S19894C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C21;
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
static Base_Class bases_S19894C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3223C8_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(72,36), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(104,52), //bcp->offset
    59, //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(88,44), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C21,    ABISELECT(56,28), //bcp->offset
    33, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3619C26,    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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(208,104), //bcp->offset
    82, //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
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(192,96), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(112,56), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(216,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(224,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
    23, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(216,108), //bcp->offset
    85, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C13,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C20[];
extern void _ZN9S19894C20D1Ev();
extern void _ZN9S19894C20D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn24_N9S19894C20D1Ev,_ZThn12_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C20D0Ev,_ZThn12_N9S19894C20D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C20D1Ev,_ZThn28_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C20D0Ev,_ZThn28_N9S19894C20D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn88_N9S19894C20D1Ev,_ZThn44_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn88_N9S19894C20D0Ev,_ZThn44_N9S19894C20D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S19894C20D1Ev,_ZThn56_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S19894C20D0Ev,_ZThn56_N9S19894C20D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn192_N9S19894C20D1Ev,_ZThn96_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn192_N9S19894C20D0Ev,_ZThn96_N9S19894C20D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY vtc_S19894C20[] = {
  ABISELECT(216,108),
  ABISELECT(192,96),
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(8,4),
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN9S19894C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C20D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(16,8),
  ABISELECT(168,84),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19894C20D1Ev,_ZThn12_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19894C20D0Ev,_ZThn12_N9S19894C20D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  ABISELECT(80,40),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S19894C20[];
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C20[] = {
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__9S19894C20[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C23__9S19894C20[] = {
  ABISELECT(16,8),
  ABISELECT(168,84),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C23__9S19894C20[] = {
  ABISELECT(192,96),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C23__9S19894C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C23__9S19894C20[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C23__9S19894C20[] = {
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn88_N9S19894C23D1Ev,_ZThn44_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn88_N9S19894C23D0Ev,_ZThn44_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C23__9S19894C20[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  ABISELECT(80,40),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn168_N9S19894C23D1Ev,_ZThn84_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn168_N9S19894C23D0Ev,_ZThn84_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C23__9S19894C20[] = {
  ABISELECT(-168,-84),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C23__9S19894C20[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C23__9S19894C20[] = {
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C23__9S19894C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C23__9S19894C20[] = {
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C20[] = {
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21__9S19894C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C21__9S19894C20[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C21D1Ev,_ZThn16_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn32_N9S19894C21D0Ev,_ZThn16_N9S19894C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21__9S19894C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C20[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C20[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__9S19894C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A2__9S19894C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A2__9S19894C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C20[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  ABISELECT(80,40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__9S19894C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__9S19894C20[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C20[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A3__9S19894C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C20[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C20[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C20[] = {
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C20[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C20[] = {
  {&(_ZTV9S19894C20[12]),  12,94},
  {&(_tg__ZTV9S19894C15__9S19894C20[4]),  4,4},
  {&(_tg__ZTV8S19894C7__A__9S19894C20[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A__9S19894C20[5]),  5,6},
  {&(_tg__ZTV9S19894C23__9S19894C20[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C23__9S19894C20[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C23__9S19894C20[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C23__9S19894C20[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C23__9S19894C20[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C23__9S19894C20[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C23__9S19894C20[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C23__9S19894C20[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C23__9S19894C20[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C23__9S19894C20[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C23__9S19894C20[7]),  7,9},
  {&(_ZTV9S19894C20[19]),  19,94},
  {&(_ZTV9S19894C20[19]),  19,94},
  {&(_ZTV9S19894C20[41]),  41,94},
  {&(_ZTV9S19894C20[49]),  49,94},
  {&(_ZTV9S19894C20[56]),  56,94},
  {&(_ZTV9S19894C20[61]),  61,94},
  {&(_ZTV9S19894C20[30]),  30,94},
  {&(_ZTV9S19894C20[70]),  70,94},
  {&(_ZTV9S19894C20[79]),  79,94},
  {&(_ZTV9S19894C20[84]),  84,94},
  {&(_ZTV9S19894C20[92]),  92,94},
  {&(_tg__ZTV9S19894C21__9S19894C20[7]),  7,10},
  {&(_tg__ZTV8S19894C7__9S19894C21__9S19894C20[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C21__9S19894C20[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C21__9S19894C20[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C20[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C20[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C20[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C20[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__9S19894C20[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A2__9S19894C20[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A2__9S19894C20[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C20[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C20[3]),  3,4},
  {&(_tg__ZTV9S19894C24__9S19894C20[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__9S19894C20[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__9S19894C20[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C20[2]),  2,3},
  {&(_tg__ZTV9S19894C10__A1__9S19894C20[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A3__9S19894C20[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C20[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C20[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C20[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C20[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C20[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C20[];
extern  VTBL_ENTRY _ZTV9S19894C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C20[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C21D0Ev,_ZThn16_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C21D1Ev,_ZThn16_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19894C23D0Ev,_ZThn84_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19894C23D1Ev,_ZThn84_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C23D0Ev,_ZThn44_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C23D1Ev,_ZThn44_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19894C20D0Ev,_ZThn96_N9S19894C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C20D0Ev,_ZThn44_N9S19894C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19894C20D1Ev,_ZThn96_N9S19894C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C20D1Ev,_ZThn44_N9S19894C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19894C20D0Ev,_ZThn56_N9S19894C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C20D0Ev,_ZThn28_N9S19894C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19894C20D1Ev,_ZThn56_N9S19894C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C20D1Ev,_ZThn28_N9S19894C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C20 = {  "S19894C20", // class name
  bases_S19894C20, 26,
  &(vtc_S19894C20[0]), // expected_vtbl_contents
  &(vtt_S19894C20[0]), // expected_vtt_contents
  ABISELECT(232,116), // object size
  NSPAIRA(_ZTI9S19894C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C20),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C20),50, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C27  : S19894C4 , virtual S19894C9 , virtual S19894C22 , virtual S19894C13 , S3619C16 {
  virtual  ~S19894C27(); // _ZN9S19894C27D2Ev
  S19894C27(); // tgen
};
//SIG(-1 S19894C27) C1{ BC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2} VBC7{ BC4 BC3 VBC2 BC5 BC8{ BC5 BC6 BC3 vd} vd} VBC9{ BC8} VBC10{ VBC5 VBC2} BC11{ m} vd}


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

static void Test_S19894C27()
{
  extern Class_Descriptor cd_S19894C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S19894C27, buf);
    S19894C27 *dp, &lv = *(dp=new (buf) S19894C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S19894C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C27)");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), 0, "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(8,4), "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C27");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C9*), 0, "S19894C27");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C9*), 0, "S19894C27");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(16,8), "S19894C27");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C9*), ABISELECT(16,8), "S19894C27");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(16,8), "S19894C27");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(16,8), "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(16,8), "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(16,8), "S19894C27");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(16,8), "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C4*), 0, "S19894C27");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C9*), ABISELECT(40,20), "S19894C27");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C9*), ABISELECT(32,16), "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(88,44), "S19894C27");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(96,48), "S19894C27");
    check_base_class_offset(lv, (S19894C4*)(S19894C9*), ABISELECT(88,44), "S19894C27");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(88,44), "S19894C27");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C9*), ABISELECT(48,24), "S19894C27");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(64,32), "S19894C27");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C9*), ABISELECT(64,32), "S19894C27");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C9*), ABISELECT(80,40), "S19894C27");
    check_base_class_offset(lv, (S19894C10*)(S19894C9*), ABISELECT(64,32), "S19894C27");
    check_base_class_offset(lv, (S19894C9*), ABISELECT(32,16), "S19894C27");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(104,52), "S19894C27");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(104,52), "S19894C27");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(120,60), "S19894C27");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(104,52), "S19894C27");
    check_base_class_offset(lv, (S19894C22*), ABISELECT(104,52), "S19894C27");
    check_base_class_offset(lv, (S19894C13*), ABISELECT(128,64), "S19894C27");
    check_base_class_offset(lv, (S3619C16*), 0, "S19894C27");
    test_class_info(&lv, &cd_S19894C27);
    dp->~S19894C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C27(Test_S19894C27, "S19894C27", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN9S19894C27C1Ev();
extern void _ZN9S19894C27D2Ev();
Name_Map name_map_S19894C27[] = {
  NSPAIR(_ZN9S19894C27C1Ev),
  NSPAIR(_ZN9S19894C27D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C9;
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
static Base_Class bases_S19894C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C5_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
    16, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(88,44), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(80,40), //bcp->offset
    44, //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
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(64,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C9,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(120,60), //bcp->offset
    65, //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
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(104,52), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C13,    ABISELECT(128,64), //bcp->offset
    68, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C27[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN9S19894C27D1Ev();
extern void _ZN9S19894C27D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C27D1Ev,_ZThn16_N9S19894C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev)();
extern void ABISELECT(_ZThn32_N9S19894C27D0Ev,_ZThn16_N9S19894C27D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev)();
extern void ABISELECT(_ZThn104_N9S19894C27D1Ev,_ZThn52_N9S19894C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev)();
extern void ABISELECT(_ZThn104_N9S19894C27D0Ev,_ZThn52_N9S19894C27D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C27[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D0Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C27[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A__9S19894C27[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__A__9S19894C27[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C27[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C27[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__9S19894C27[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C27[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C108S19894C9__A2__9S19894C27[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__9S19894C27[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C108S19894C9__9S19894C27[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9__9S19894C27[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9__9S19894C27[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9__9S19894C27[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9__9S19894C27[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C27[] = {
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__A1__9S19894C27[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C27[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__A1__9S19894C27[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A3__9S19894C27[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A3__9S19894C27[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A1__9S19894C27[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C27[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C27[] = {
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__9S19894C27[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__9S19894C27[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTT_ENTRY vtt_S19894C27[] = {
  {&(_ZTV9S19894C27[9]),  9,76},
  {&(_tg__ZTV8S19894C4__A__9S19894C27[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__A__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4__A__9S19894C27[5]),  5,6},
  {&(_ZTV9S19894C27[18]),  18,76},
  {&(_ZTV9S19894C27[18]),  18,76},
  {&(_ZTV9S19894C27[27]),  27,76},
  {&(_ZTV9S19894C27[54]),  54,76},
  {&(_ZTV9S19894C27[35]),  35,76},
  {&(_ZTV9S19894C27[41]),  41,76},
  {&(_ZTV9S19894C27[46]),  46,76},
  {&(_ZTV9S19894C27[62]),  62,76},
  {&(_ZTV9S19894C27[67]),  67,76},
  {&(_ZTV9S19894C27[75]),  75,76},
  {&(_tg__ZTV8S19894C7__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C27[6]),  6,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C27[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__9S19894C27[3]),  3,4},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C27[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C108S19894C9__A2__9S19894C27[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__9S19894C27[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C108S19894C9__9S19894C27[3]),  3,4},
  {&(_tg__ZTV8S19894C4__8S19894C9__9S19894C27[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A__8S19894C9__9S19894C27[5]),  5,6},
  {&(_tg__ZTV9S19894C10__8S19894C9__9S19894C27[5]),  5,8},
  {&(_tg__ZTV8S19894C4__A1__9S19894C27[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C27[5]),  5,6},
  {&(_tg__ZTV9S19894C22__9S19894C27[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__A1__9S19894C27[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A3__9S19894C27[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A3__9S19894C27[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A1__9S19894C27[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C27[3]),  3,4},
  {&(_tg__ZTV9S19894C13__9S19894C27[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C27[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C13__9S19894C27[7]),  7,9},
};
extern VTBL_ENTRY _ZTI9S19894C27[];
extern  VTBL_ENTRY _ZTV9S19894C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C27[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C27D0Ev,_ZThn52_N9S19894C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C27D1Ev,_ZThn52_N9S19894C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C27D0Ev,_ZThn16_N9S19894C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C27D1Ev,_ZThn16_N9S19894C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C27 = {  "S19894C27", // class name
  bases_S19894C27, 24,
  &(vtc_S19894C27[0]), // expected_vtbl_contents
  &(vtt_S19894C27[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI9S19894C27),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C27),76, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C27),41, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C26  : virtual S19894C27 {
  int s19894c26f0;
  virtual  ~S19894C26(); // _ZN9S19894C26D2Ev
  S19894C26(); // tgen
};
//SIG(-1 S19894C26) C1{ VBC2{ BC3{ BC4{ v1} BC5{ m Fp} VBC6{ VBC7{ m} VBC4 FC4} v2} VBC8{ BC5 BC4 VBC3 BC6 BC9{ BC6 BC7 BC4 vd} vd} VBC10{ BC9} VBC11{ VBC6 VBC3} BC12{ m} vd} vd Fi}


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

static void Test_S19894C26()
{
  extern Class_Descriptor cd_S19894C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S19894C26, buf);
    S19894C26 *dp, &lv = *(dp=new (buf) S19894C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S19894C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C26)");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C27*), ABISELECT(16,8), "S19894C26");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C27*), ABISELECT(24,12), "S19894C26");
    /*is_ambiguous_... S19894C26::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C26");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C9*), 0, "S19894C26");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C9*), 0, "S19894C26");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C26");
    /*is_ambiguous_... S19894C26::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(32,16), "S19894C26");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C9*), ABISELECT(32,16), "S19894C26");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(32,16), "S19894C26");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C26");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C27*), ABISELECT(32,16), "S19894C26");
    /*is_ambiguous_... S19894C26::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(32,16), "S19894C26");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(32,16), "S19894C26");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C27*), ABISELECT(16,8), "S19894C26");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C9*), ABISELECT(56,28), "S19894C26");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C9*), ABISELECT(48,24), "S19894C26");
    /*is_ambiguous_... S19894C26::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(104,52), "S19894C26");
    /*is_ambiguous_... S19894C26::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(112,56), "S19894C26");
    check_base_class_offset(lv, (S19894C4*)(S19894C9*), ABISELECT(104,52), "S19894C26");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(104,52), "S19894C26");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C9*), ABISELECT(64,32), "S19894C26");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(80,40), "S19894C26");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C9*), ABISELECT(80,40), "S19894C26");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C9*), ABISELECT(96,48), "S19894C26");
    check_base_class_offset(lv, (S19894C10*)(S19894C9*), ABISELECT(80,40), "S19894C26");
    check_base_class_offset(lv, (S19894C9*)(S19894C27*), ABISELECT(48,24), "S19894C26");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(120,60), "S19894C26");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(120,60), "S19894C26");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(136,68), "S19894C26");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(120,60), "S19894C26");
    check_base_class_offset(lv, (S19894C22*)(S19894C27*), ABISELECT(120,60), "S19894C26");
    check_base_class_offset(lv, (S19894C13*)(S19894C27*), 0, "S19894C26");
    check_base_class_offset(lv, (S3619C16*)(S19894C27*), ABISELECT(16,8), "S19894C26");
    check_base_class_offset(lv, (S19894C27*), ABISELECT(16,8), "S19894C26");
    check_field_offset(lv, s19894c26f0, ABISELECT(8,4), "S19894C26.s19894c26f0");
    test_class_info(&lv, &cd_S19894C26);
    dp->~S19894C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C26(Test_S19894C26, "S19894C26", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN9S19894C26C1Ev();
extern void _ZN9S19894C26D2Ev();
Name_Map name_map_S19894C26[] = {
  NSPAIR(_ZN9S19894C26C1Ev),
  NSPAIR(_ZN9S19894C26D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C9;
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C27;
extern VTBL_ENTRY _ZTI9S19894C27[];
extern  VTBL_ENTRY _ZTV9S19894C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C27[];
static Base_Class bases_S19894C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C5_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
    16, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(32,16), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(32,16), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(104,52), //bcp->offset
    64, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(64,32), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(96,48), //bcp->offset
    61, //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
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(80,40), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C9,    ABISELECT(48,24), //bcp->offset
    36, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(136,68), //bcp->offset
    82, //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
    20, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(120,60), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3619C16,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C27,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C26[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C26D1Ev();
extern void _ZN9S19894C26D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C26D1Ev,_ZThn8_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C26D0Ev,_ZThn8_N9S19894C26D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn48_N9S19894C26D1Ev,_ZThn24_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn48_N9S19894C26D0Ev,_ZThn24_N9S19894C26D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn120_N9S19894C26D1Ev,_ZThn60_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn120_N9S19894C26D0Ev,_ZThn60_N9S19894C26D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C26[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(104,52),
  ABISELECT(32,16),
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D0Ev,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev),
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-48,-24),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-120,-60),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C26[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN9S19894C27D1Ev();
extern void _ZN9S19894C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C26[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C27__9S19894C26[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C27__9S19894C26[] = {
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C27__9S19894C26[] = {
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C27D1Ev,_ZThn16_N9S19894C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev)();
extern void ABISELECT(_ZThn32_N9S19894C27D0Ev,_ZThn16_N9S19894C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C27__9S19894C26[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C27__9S19894C26[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C27__9S19894C26[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C27__9S19894C26[] = {
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__9S19894C26[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev)();
extern void ABISELECT(_ZThn104_N9S19894C27D1Ev,_ZThn52_N9S19894C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev)();
extern void ABISELECT(_ZThn104_N9S19894C27D0Ev,_ZThn52_N9S19894C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C27__9S19894C26[] = {
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__9S19894C26[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C27__9S19894C26[] = {
  ABISELECT(104,52),
  ABISELECT(32,16),
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C26[] = {
  0,
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C26[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C26[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__9S19894C26[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C26[] = {
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C108S19894C9__A2__9S19894C26[] = {
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__9S19894C26[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C108S19894C9__9S19894C26[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9__9S19894C26[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9__9S19894C26[] = {
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9__9S19894C26[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9__9S19894C26[] = {
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C26[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__A1__9S19894C26[] = {
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C26[] = {
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__A1__9S19894C26[] = {
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A3__9S19894C26[] = {
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A3__9S19894C26[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A1__9S19894C26[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C26[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C26[] = {
  ABISELECT(104,52),
  ABISELECT(32,16),
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__9S19894C26[] = {
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__9S19894C26[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTT_ENTRY vtt_S19894C26[] = {
  {&(_ZTV9S19894C26[11]),  11,85},
  {&(_ZTV9S19894C26[26]),  26,85},
  {&(_ZTV9S19894C26[35]),  35,85},
  {&(_ZTV9S19894C26[35]),  35,85},
  {&(_ZTV9S19894C26[44]),  44,85},
  {&(_ZTV9S19894C26[71]),  71,85},
  {&(_ZTV9S19894C26[52]),  52,85},
  {&(_ZTV9S19894C26[58]),  58,85},
  {&(_ZTV9S19894C26[63]),  63,85},
  {&(_ZTV9S19894C26[79]),  79,85},
  {&(_ZTV9S19894C26[84]),  84,85},
  {&(_ZTV9S19894C26[11]),  11,85},
  {&(_tg__ZTV9S19894C27__9S19894C26[9]),  9,13},
  {&(_tg__ZTV8S19894C49S19894C27__9S19894C26[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C27__9S19894C26[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C27__9S19894C26[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C27__9S19894C26[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C27__9S19894C26[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__9S19894C26[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C27__9S19894C26[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__9S19894C26[2]),  2,3},
  {&(_tg__ZTV9S19894C13__9S19894C27__9S19894C26[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C26[6]),  6,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C26[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__9S19894C26[3]),  3,4},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C26[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C108S19894C9__A2__9S19894C26[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__9S19894C26[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C108S19894C9__9S19894C26[3]),  3,4},
  {&(_tg__ZTV8S19894C4__8S19894C9__9S19894C26[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A__8S19894C9__9S19894C26[5]),  5,6},
  {&(_tg__ZTV9S19894C10__8S19894C9__9S19894C26[5]),  5,8},
  {&(_tg__ZTV8S19894C4__A1__9S19894C26[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C26[5]),  5,6},
  {&(_tg__ZTV9S19894C22__9S19894C26[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__A1__9S19894C26[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A3__9S19894C26[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A3__9S19894C26[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A1__9S19894C26[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C26[3]),  3,4},
  {&(_tg__ZTV9S19894C13__9S19894C26[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C26[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C13__9S19894C26[7]),  7,9},
};
extern VTBL_ENTRY _ZTI9S19894C26[];
extern  VTBL_ENTRY _ZTV9S19894C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C26[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C27D0Ev,_ZThn52_N9S19894C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C27D1Ev,_ZThn52_N9S19894C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C27D0Ev,_ZThn16_N9S19894C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C27D1Ev,_ZThn16_N9S19894C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19894C26D0Ev,_ZThn60_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19894C26D1Ev,_ZThn60_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19894C26D0Ev,_ZThn24_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19894C26D1Ev,_ZThn24_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C26D0Ev,_ZThn8_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C26D1Ev,_ZThn8_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C26 = {  "S19894C26", // class name
  bases_S19894C26, 25,
  &(vtc_S19894C26[0]), // expected_vtbl_contents
  &(vtt_S19894C26[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI9S19894C26),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19894C26),85, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C26),53, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C25  : S19894C18 , S19894C26 , virtual S19894C6_nt , S19894C22 , virtual S3619C16 {
  virtual  ~S19894C25(); // _ZN9S19894C25D2Ev
  S19894C25(); // tgen
};
//SIG(-1 S19894C25) C1{ BC2{ VBC3{ m Fi} Fp} BC4{ VBC5{ BC6{ BC7{ v1} BC8{ m Fp} VBC9{ VBC10{ m} VBC7 FC7} v2} VBC11{ BC8 BC7 VBC6 BC9 BC12{ BC9 BC10 BC7 vd} vd} VBC13{ BC12} VBC14{ VBC9 VBC6} BC15{ m} vd} vd Fi} VBC8 BC13 VBC15 vd}


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

static void Test_S19894C25()
{
  extern Class_Descriptor cd_S19894C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[26];
    init_test(&cd_S19894C25, buf);
    S19894C25 *dp, &lv = *(dp=new (buf) S19894C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,100), "sizeof(S19894C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C25)");
    check_base_class_offset(lv, (S3223C8_nt*)(S19894C18*), ABISELECT(56,28), "S19894C25");
    check_base_class_offset(lv, (S19894C18*), 0, "S19894C25");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C27*), ABISELECT(64,32), "S19894C25");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C27*), ABISELECT(72,36), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C25");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C9*), 0, "S19894C25");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C9*), 0, "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(80,40), "S19894C25");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C9*), ABISELECT(80,40), "S19894C25");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(80,40), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C25");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C27*), ABISELECT(80,40), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(80,40), "S19894C25");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(80,40), "S19894C25");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C27*), ABISELECT(64,32), "S19894C25");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C9*), ABISELECT(104,52), "S19894C25");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C9*), ABISELECT(96,48), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(152,76), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(160,80), "S19894C25");
    check_base_class_offset(lv, (S19894C4*)(S19894C9*), ABISELECT(152,76), "S19894C25");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(152,76), "S19894C25");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C9*), ABISELECT(112,56), "S19894C25");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(128,64), "S19894C25");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C9*), ABISELECT(128,64), "S19894C25");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C9*), ABISELECT(144,72), "S19894C25");
    check_base_class_offset(lv, (S19894C10*)(S19894C9*), ABISELECT(128,64), "S19894C25");
    check_base_class_offset(lv, (S19894C9*)(S19894C27*), ABISELECT(96,48), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(168,84), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(168,84), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(184,92), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(168,84), "S19894C25");
    check_base_class_offset(lv, (S19894C22*)(S19894C27*), ABISELECT(168,84), "S19894C25");
    check_base_class_offset(lv, (S19894C13*)(S19894C27*), ABISELECT(16,8), "S19894C25");
    check_base_class_offset(lv, (S3619C16*)(S19894C27*), ABISELECT(64,32), "S19894C25");
    check_base_class_offset(lv, (S19894C27*)(S19894C26*), ABISELECT(64,32), "S19894C25");
    check_base_class_offset(lv, (S19894C26*), ABISELECT(16,8), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(192,96), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(48,24), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(32,16), "S19894C25");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C22*), ABISELECT(32,16), "S19894C25");
    /*is_ambiguous_... S19894C25::S3619C16 */ AMB_check_base_class_offset(lv, (S3619C16*), 0, "S19894C25");
    test_class_info(&lv, &cd_S19894C25);
    dp->~S19894C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C25(Test_S19894C25, "S19894C25", ABISELECT(200,100));

#else // __cplusplus

extern void _ZN9S19894C25C1Ev();
extern void _ZN9S19894C25D2Ev();
Name_Map name_map_S19894C25[] = {
  NSPAIR(_ZN9S19894C25C1Ev),
  NSPAIR(_ZN9S19894C25D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C18;
extern VTBL_ENTRY _ZTI9S19894C18[];
extern  VTBL_ENTRY _ZTV9S19894C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C18[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C9;
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C27;
extern VTBL_ENTRY _ZTI9S19894C27[];
extern  VTBL_ENTRY _ZTV9S19894C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C27[];
extern Class_Descriptor cd_S19894C26;
extern VTBL_ENTRY _ZTI9S19894C26[];
extern  VTBL_ENTRY _ZTV9S19894C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
static Base_Class bases_S19894C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19894C18,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C5_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(80,40), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C5_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
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(152,76), //bcp->offset
    90, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(112,56), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(144,72), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //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
    17, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(128,64), //bcp->offset
    79, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C9,    ABISELECT(96,48), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(184,92), //bcp->offset
    108, //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
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(168,84), //bcp->offset
    99, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19894C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S3619C16,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19894C27,    ABISELECT(64,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19894C26,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3619C26,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(48,24), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(32,16), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19894C25[];
extern void _ZN9S19894C25D1Ev();
extern void _ZN9S19894C25D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn16_N9S19894C25D1Ev,_ZThn8_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C25D0Ev,_ZThn8_N9S19894C25D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N9S19894C25D1Ev,_ZThn16_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C25D0Ev,_ZThn16_N9S19894C25D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S19894C25D1Ev,_ZThn32_N9S19894C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S19894C25D0Ev,_ZThn32_N9S19894C25D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn96_N9S19894C25D1Ev,_ZThn48_N9S19894C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev)();
extern void ABISELECT(_ZThn96_N9S19894C25D0Ev,_ZThn48_N9S19894C25D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C25D1Ev,_ZTvn16_n32_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C25D0Ev,_ZTvn16_n32_N9S19894C25D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn168_N9S19894C25D1Ev,_ZThn84_N9S19894C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev)();
extern void ABISELECT(_ZThn168_N9S19894C25D0Ev,_ZThn84_N9S19894C25D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C25[] = {
  0,
  ABISELECT(192,96),
  ABISELECT(16,8),
  ABISELECT(168,84),
  ABISELECT(152,76),
  ABISELECT(96,48),
  ABISELECT(80,40),
  0,
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN9S19894C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C25D0Ev,
  0,
  ABISELECT(152,76),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(136,68),
  ABISELECT(64,32),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19894C25D1Ev,_ZThn8_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19894C25D0Ev,_ZThn8_N9S19894C25D0Ev),
  ABISELECT(48,24),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19894C25D1Ev,_ZThn16_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19894C25D0Ev,_ZThn16_N9S19894C25D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-64,-32),
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev),
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-96,-48),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C25D1Ev,_ZTvn16_n32_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C25D0Ev,_ZTvn16_n32_N9S19894C25D0Ev),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C25[];
static  VTBL_ENTRY _tg__ZTV9S19894C18__9S19894C25[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C18[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C26D1Ev();
extern void _ZN9S19894C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C26__9S19894C25[] = {
  0,
  ABISELECT(152,76),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(136,68),
  ABISELECT(64,32),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn48_N9S19894C26D1Ev,_ZThn24_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn48_N9S19894C26D0Ev,_ZThn24_N9S19894C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C26__9S19894C25[] = {
  ABISELECT(-48,-24),
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C26__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C26D1Ev,_ZThn40_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C26D0Ev,_ZThn40_N9S19894C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C26__9S19894C25[] = {
  ABISELECT(-80,-40),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C26__9S19894C25[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C26__9S19894C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C26__9S19894C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C26__9S19894C25[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn152_N9S19894C26D1Ev,_ZThn76_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn152_N9S19894C26D0Ev,_ZThn76_N9S19894C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C26__9S19894C25[] = {
  ABISELECT(-152,-76),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C26__9S19894C25[] = {
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__A__9S19894C25[] = {
  ABISELECT(48,24),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__A2__9S19894C25[] = {
  ABISELECT(48,24),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A4__9S19894C25[] = {
  ABISELECT(48,24),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A4__9S19894C25[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A2__9S19894C25[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__A__9S19894C25[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN9S19894C27D1Ev();
extern void _ZN9S19894C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C27__9S19894C25[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C27__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C27__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C27D1Ev,_ZThn16_N9S19894C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev)();
extern void ABISELECT(_ZThn32_N9S19894C27D0Ev,_ZThn16_N9S19894C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C27__9S19894C25[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C27__9S19894C25[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C27__9S19894C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C27__9S19894C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__9S19894C25[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev)();
extern void ABISELECT(_ZThn104_N9S19894C27D1Ev,_ZThn52_N9S19894C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev)();
extern void ABISELECT(_ZThn104_N9S19894C27D0Ev,_ZThn52_N9S19894C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C27__9S19894C25[] = {
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__9S19894C25[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C27__9S19894C25[] = {
  ABISELECT(136,68),
  ABISELECT(64,32),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C25[] = {
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__9S19894C25[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C108S19894C9__A2__9S19894C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__9S19894C25[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C108S19894C9__9S19894C25[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9__9S19894C25[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9__9S19894C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9__9S19894C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C25[] = {
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__A1__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C25[] = {
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__A1__9S19894C25[] = {
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A3__9S19894C25[] = {
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A3__9S19894C25[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A1__9S19894C25[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C25[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C25[] = {
  ABISELECT(136,68),
  ABISELECT(64,32),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__9S19894C25[] = {
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__9S19894C25[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTT_ENTRY vtt_S19894C25[] = {
  {&(_ZTV9S19894C25[13]),  13,111},
  {&(_tg__ZTV9S19894C18__9S19894C25[3]),  3,3},
  {&(_tg__ZTV9S19894C26__9S19894C25[11]),  11,14},
  {&(_tg__ZTV9S19894C27__9S19894C26__9S19894C25[12]),  12,16},
  {&(_tg__ZTV8S19894C7__9S19894C26__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C26__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C26__9S19894C25[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C26__9S19894C25[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C26__9S19894C25[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C26__9S19894C25[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C26__9S19894C25[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C26__9S19894C25[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C26__9S19894C25[2]),  2,3},
  {&(_tg__ZTV9S19894C26__9S19894C25[11]),  11,14},
  {&(_tg__ZTV9S19894C22__A__9S19894C25[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__A2__9S19894C25[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A4__9S19894C25[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A4__9S19894C25[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A2__9S19894C25[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__A__9S19894C25[3]),  3,4},
  {&(_ZTV9S19894C25[26]),  26,111},
  {&(_ZTV9S19894C25[52]),  52,111},
  {&(_ZTV9S19894C25[61]),  61,111},
  {&(_ZTV9S19894C25[61]),  61,111},
  {&(_ZTV9S19894C25[70]),  70,111},
  {&(_ZTV9S19894C25[97]),  97,111},
  {&(_ZTV9S19894C25[78]),  78,111},
  {&(_ZTV9S19894C25[84]),  84,111},
  {&(_ZTV9S19894C25[89]),  89,111},
  {&(_ZTV9S19894C25[105]),  105,111},
  {&(_ZTV9S19894C25[110]),  110,111},
  {&(_ZTV9S19894C25[26]),  26,111},
  {&(_ZTV9S19894C25[34]),  34,111},
  {&(_tg__ZTV9S19894C27__9S19894C25[9]),  9,13},
  {&(_tg__ZTV8S19894C49S19894C27__9S19894C25[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C27__9S19894C25[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C27__9S19894C25[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C27__9S19894C25[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C27__9S19894C25[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__9S19894C25[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C27__9S19894C25[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__9S19894C25[2]),  2,3},
  {&(_tg__ZTV9S19894C13__9S19894C27__9S19894C25[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C25[6]),  6,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C25[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__9S19894C25[3]),  3,4},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C25[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C108S19894C9__A2__9S19894C25[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__9S19894C25[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C108S19894C9__9S19894C25[3]),  3,4},
  {&(_tg__ZTV8S19894C4__8S19894C9__9S19894C25[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C9__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A__8S19894C9__9S19894C25[5]),  5,6},
  {&(_tg__ZTV9S19894C10__8S19894C9__9S19894C25[5]),  5,8},
  {&(_tg__ZTV8S19894C4__A1__9S19894C25[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C25[5]),  5,6},
  {&(_tg__ZTV9S19894C22__9S19894C25[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__A1__9S19894C25[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A3__9S19894C25[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A3__9S19894C25[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A1__9S19894C25[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C25[3]),  3,4},
  {&(_tg__ZTV9S19894C13__9S19894C25[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C13__9S19894C25[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C13__9S19894C25[7]),  7,9},
};
extern VTBL_ENTRY _ZTI9S19894C25[];
extern  VTBL_ENTRY _ZTV9S19894C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C25[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C27D0Ev,_ZThn52_N9S19894C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C27D1Ev,_ZThn52_N9S19894C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C27D0Ev,_ZThn16_N9S19894C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19894C27D1Ev,_ZThn16_N9S19894C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19894C26D0Ev,_ZThn76_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19894C26D1Ev,_ZThn76_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C26D0Ev,_ZThn40_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C26D1Ev,_ZThn40_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19894C26D0Ev,_ZThn24_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19894C26D1Ev,_ZThn24_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19894C25D0Ev,_ZThn84_N9S19894C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19894C25D1Ev,_ZThn84_N9S19894C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19894C25D0Ev,_ZThn48_N9S19894C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19894C25D1Ev,_ZThn48_N9S19894C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C25D0Ev,_ZThn32_N9S19894C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C25D1Ev,_ZThn32_N9S19894C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C25 = {  "S19894C25", // class name
  bases_S19894C25, 35,
  &(vtc_S19894C25[0]), // expected_vtbl_contents
  &(vtt_S19894C25[0]), // expected_vtt_contents
  ABISELECT(200,100), // object size
  NSPAIRA(_ZTI9S19894C25),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C25),111, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C25),74, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C8  : virtual S19894C9 , S19894C11 , virtual S19894C18 , virtual S19894C20 , virtual S19894C25 {
  int s19894c8f0;
  ~S19894C8(); // tgen
  S19894C8(); // tgen
};
//SIG(-1 S19894C8) C1{ VBC2{ BC3{ m Fp} BC4{ v1} VBC5{ BC4 BC3 VBC6{ VBC7{ m} VBC4 FC4} v2} BC6 BC8{ BC6 BC7 BC4 vd} vd} BC9{ VBC8 BC10{ VBC11{ VBC6 VBC5} BC6 BC7 BC12{ m} BC13{ VBC7 VBC3} vd} BC14{ m} VBC2 BC15{ m} vd FC16{ VBC5} Fl} VBC17{ VBC18{ m Fi} Fp} VBC19{ BC13 VBC18 BC6 VBC20{ BC3 BC12 VBC6 VBC21{ BC8}} BC22{ VBC23{ VBC8 VBC3 Fp[9]} BC7 BC11 vd Fp} vd} VBC24{ BC17 BC25{ VBC26{ BC5 VBC2 VBC21 VBC11 BC12 vd} vd Fi} VBC3 BC21 VBC12 vd} Fi}


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

static void Test_S19894C8()
{
  extern Class_Descriptor cd_S19894C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[60];
    init_test(&cd_S19894C8, buf);
    S19894C8 *dp, &lv = *(dp=new (buf) S19894C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(472,236), "sizeof(S19894C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C8)");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C9*), ABISELECT(88,44), "S19894C8");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C9*), ABISELECT(80,40), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(136,68), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(144,72), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C9*), ABISELECT(168,84), "S19894C8");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C12*)(S19894C11*), ABISELECT(168,84), "S19894C8");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C12*)(S19894C11*), ABISELECT(168,84), "S19894C8");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C20*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C20*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(168,84), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C9*), ABISELECT(152,76), "S19894C8");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C12*)(S19894C11*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C20*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C21*), ABISELECT(152,76), "S19894C8");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C20*), ABISELECT(152,76), "S19894C8");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C27*), ABISELECT(152,76), "S19894C8");
    check_base_class_offset(lv, (S19894C4*)(S19894C9*), ABISELECT(136,68), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(136,68), "S19894C8");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C20*), ABISELECT(136,68), "S19894C8");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C9*), ABISELECT(96,48), "S19894C8");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(112,56), "S19894C8");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C9*), ABISELECT(112,56), "S19894C8");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C9*), ABISELECT(128,64), "S19894C8");
    check_base_class_offset(lv, (S19894C10*)(S19894C9*), ABISELECT(112,56), "S19894C8");
    check_base_class_offset(lv, (S19894C9*), ABISELECT(80,40), "S19894C8");
    check_base_class_offset(lv, (S19894C9*)(S19894C11*), ABISELECT(80,40), "S19894C8");
    check_base_class_offset(lv, (S19894C9*)(S19894C27*), ABISELECT(80,40), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(176,88), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(176,88), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(192,96), "S19894C8");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C11*), ABISELECT(176,88), "S19894C8");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(176,88), "S19894C8");
    check_base_class_offset(lv, (S19894C13*)(S19894C12*)(S19894C11*), ABISELECT(408,204), "S19894C8");
    check_base_class_offset(lv, (S19894C13*)(S19894C27*), ABISELECT(408,204), "S19894C8");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C12*)(S19894C11*), 0, "S19894C8");
    /*is_ambiguous_... S19894C12::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C12*)(S19894C11*), 0, "S19894C8");
    check_base_class_offset(lv, (S3619C16*)(S19894C12*)(S19894C11*), 0, "S19894C8");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C12*)(S19894C11*), ABISELECT(200,100), "S19894C8");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C20*), ABISELECT(200,100), "S19894C8");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(200,100), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C25*), ABISELECT(200,100), "S19894C8");
    check_base_class_offset(lv, (S19894C15*)(S19894C12*)(S19894C11*), ABISELECT(16,8), "S19894C8");
    check_base_class_offset(lv, (S19894C12*)(S19894C11*), 0, "S19894C8");
    check_base_class_offset(lv, (S3619C5_nt*)(S19894C11*), 0, "S19894C8");
    check_base_class_offset(lv, (S19894C17_nt*)(S19894C11*), 0, "S19894C8");
    check_base_class_offset(lv, (S19894C11*), 0, "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C18 */ AMB_check_base_class_offset(lv, (S3223C8_nt*)(S19894C18*), ABISELECT(224,112), "S19894C8");
    check_base_class_offset(lv, (S3223C8_nt*)(S19894C20*), ABISELECT(224,112), "S19894C8");
    check_base_class_offset(lv, (S3223C8_nt*)(S19894C18*)(S19894C25*), ABISELECT(224,112), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C18 */ AMB_check_base_class_offset(lv, (S19894C18*), ABISELECT(208,104), "S19894C8");
    check_base_class_offset(lv, (S19894C15*)(S19894C20*), ABISELECT(232,116), "S19894C8");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C20*), ABISELECT(240,120), "S19894C8");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C21*), ABISELECT(280,140), "S19894C8");
    check_base_class_offset(lv, (S3619C16*)(S19894C21*), ABISELECT(272,136), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(288,144), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(288,144), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(304,152), "S19894C8");
    /*is_ambiguous_... S19894C8::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(288,144), "S19894C8");
    check_base_class_offset(lv, (S19894C22*)(S19894C21*), ABISELECT(288,144), "S19894C8");
    check_base_class_offset(lv, (S19894C22*)(S19894C27*), ABISELECT(288,144), "S19894C8");
    check_base_class_offset(lv, (S19894C21*)(S19894C20*), ABISELECT(272,136), "S19894C8");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C20*), ABISELECT(312,156), "S19894C8");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C20*), ABISELECT(256,128), "S19894C8");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C20*), ABISELECT(256,128), "S19894C8");
    check_base_class_offset(lv, (S19894C23*)(S19894C20*), ABISELECT(256,128), "S19894C8");
    check_base_class_offset(lv, (S19894C20*), ABISELECT(232,116), "S19894C8");
    check_base_class_offset(lv, (S19894C18*)(S19894C25*), ABISELECT(392,196), "S19894C8");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C27*), ABISELECT(448,224), "S19894C8");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C27*), ABISELECT(456,228), "S19894C8");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C27*), ABISELECT(448,224), "S19894C8");
    check_base_class_offset(lv, (S3619C16*)(S19894C27*), ABISELECT(448,224), "S19894C8");
    check_base_class_offset(lv, (S19894C27*)(S19894C26*)(S19894C25*), ABISELECT(448,224), "S19894C8");
    check_base_class_offset(lv, (S19894C26*)(S19894C25*), ABISELECT(408,204), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(424,212), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(424,212), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(440,220), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(424,212), "S19894C8");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C22*)(S19894C25*), ABISELECT(424,212), "S19894C8");
    /*is_ambiguous_... S19894C25::S3619C16 */ AMB_check_base_class_offset(lv, (S3619C16*)(S19894C25*), ABISELECT(464,232), "S19894C8");
    check_base_class_offset(lv, (S19894C25*), ABISELECT(392,196), "S19894C8");
    check_field_offset(lv, s19894c8f0, ABISELECT(72,36), "S19894C8.s19894c8f0");
    test_class_info(&lv, &cd_S19894C8);
    dp->~S19894C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C8(Test_S19894C8, "S19894C8", ABISELECT(472,236));

#else // __cplusplus

extern void _ZN8S19894C8C1Ev();
extern void _ZN8S19894C8D1Ev();
Name_Map name_map_S19894C8[] = {
  NSPAIR(_ZN8S19894C8C1Ev),
  NSPAIR(_ZN8S19894C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C9;
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C12;
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
extern Class_Descriptor cd_S3619C5_nt;
extern VTBL_ENTRY _ZTI10S3619C5_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C11;
extern VTBL_ENTRY _ZTI9S19894C11[];
extern  VTBL_ENTRY _ZTV9S19894C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C11[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C18;
extern VTBL_ENTRY _ZTI9S19894C18[];
extern  VTBL_ENTRY _ZTV9S19894C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C18[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C21;
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C20;
extern VTBL_ENTRY _ZTI9S19894C20[];
extern  VTBL_ENTRY _ZTV9S19894C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C20[];
extern Class_Descriptor cd_S19894C18;
extern VTBL_ENTRY _ZTI9S19894C18[];
extern  VTBL_ENTRY _ZTV9S19894C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C18[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C27;
extern VTBL_ENTRY _ZTI9S19894C27[];
extern  VTBL_ENTRY _ZTV9S19894C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C27[];
extern Class_Descriptor cd_S19894C26;
extern VTBL_ENTRY _ZTI9S19894C26[];
extern  VTBL_ENTRY _ZTV9S19894C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C26[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C25;
extern VTBL_ENTRY _ZTI9S19894C25[];
extern  VTBL_ENTRY _ZTV9S19894C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C25[];
static Base_Class bases_S19894C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(152,76), //bcp->offset
    64, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(136,68), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(96,48), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(128,64), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //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
    12, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(112,56), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C9,    ABISELECT(80,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(192,96), //bcp->offset
    79, //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
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(176,88), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19894C13,    ABISELECT(408,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(200,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19894C15,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C12,    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
    39, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3619C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3223C8_nt,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19894C18,    ABISELECT(208,104), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C15,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(240,120), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(304,152), //bcp->offset
    139, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(288,144), //bcp->offset
    130, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S19894C21,    ABISELECT(272,136), //bcp->offset
    119, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(312,156), //bcp->offset
    142, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19894C13,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    43, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(256,128), //bcp->offset
    106, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C20,    ABISELECT(232,116), //bcp->offset
    85, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C18,    ABISELECT(392,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(448,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
    27, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(456,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(448,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(448,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19894C27,    ABISELECT(448,224), //bcp->offset
    195, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S19894C26,    ABISELECT(408,204), //bcp->offset
    170, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(424,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S3619C26,    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
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(440,220), //bcp->offset
    192, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(424,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(424,212), //bcp->offset
    184, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S3619C16,    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
    -1, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S19894C25,    ABISELECT(392,196), //bcp->offset
    153, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19894C8[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C8D1Ev();
extern void _ZN8S19894C8D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19894C8D1Ev,_ZThn40_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19894C8D0Ev,_ZThn40_N8S19894C8D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S19894C8D1Ev,_ZTvn16_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S19894C8D0Ev,_ZTvn16_n32_N8S19894C8D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn176_N8S19894C8D1Ev,_ZThn88_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn176_N8S19894C8D0Ev,_ZThn88_N8S19894C8D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S19894C8D1Ev,_ZTv0_n52_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn232_N8S19894C8D1Ev,_ZThn116_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19894C8D0Ev,_ZTv0_n52_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn232_N8S19894C8D0Ev,_ZThn116_N8S19894C8D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn24_n104_N8S19894C8D1Ev,_ZTvn12_n52_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn24_n104_N8S19894C8D0Ev,_ZTvn12_n52_N8S19894C8D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S19894C8D1Ev,_ZThn136_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S19894C8D0Ev,_ZThn136_N8S19894C8D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn288_N8S19894C8D1Ev,_ZThn144_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn288_N8S19894C8D0Ev,_ZThn144_N8S19894C8D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn312_N8S19894C8D1Ev,_ZThn156_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn312_N8S19894C8D0Ev,_ZThn156_N8S19894C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19894C8D1Ev,_ZTv0_n56_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn392_N8S19894C8D1Ev,_ZThn196_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19894C8D0Ev,_ZTv0_n56_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn392_N8S19894C8D0Ev,_ZThn196_N8S19894C8D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n112_N8S19894C8D1Ev,_ZTvn8_n56_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N8S19894C8D0Ev,_ZTvn8_n56_N8S19894C8D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n112_N8S19894C8D1Ev,_ZTvn16_n56_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N8S19894C8D0Ev,_ZTvn16_n56_N8S19894C8D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N8S19894C8D1Ev,_ZTv0_n48_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn448_N8S19894C8D1Ev,_ZThn224_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19894C8D0Ev,_ZTv0_n48_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn448_N8S19894C8D0Ev,_ZThn224_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19894C8[] = {
  ABISELECT(464,232),
  ABISELECT(448,224),
  ABISELECT(392,196),
  ABISELECT(312,156),
  ABISELECT(288,144),
  ABISELECT(272,136),
  ABISELECT(232,116),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(80,40),
  ABISELECT(176,88),
  ABISELECT(200,100),
  ABISELECT(136,68),
  ABISELECT(152,76),
  ABISELECT(408,204),
  ABISELECT(152,76),
  ABISELECT(168,84),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C8D0Ev,
  ABISELECT(184,92),
  ABISELECT(152,76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  ABISELECT(-80,-40),
  0,
  ABISELECT(72,36),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev),
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19894C8D1Ev,_ZTvn16_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19894C8D0Ev,_ZTvn16_n32_N8S19894C8D0Ev),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-176,-88),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(16,8),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  ABISELECT(-232,-116),
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19894C8D1Ev,_ZTv0_n52_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19894C8D0Ev,_ZTv0_n52_N8S19894C8D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19894C8D1Ev,_ZTvn12_n52_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19894C8D0Ev,_ZTvn12_n52_N8S19894C8D0Ev),
  ABISELECT(-272,-136),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev),
  ABISELECT(-288,-144),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev),
  ABISELECT(-304,-152),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-312,-156),
  ABISELECT(-112,-56),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-136,-68),
  ABISELECT(-160,-80),
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev),
  ABISELECT(48,24),
  ABISELECT(-392,-196),
  ABISELECT(72,36),
  ABISELECT(-192,-96),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-256,-128),
  ABISELECT(-312,-156),
  ABISELECT(-240,-120),
  ABISELECT(-224,-112),
  ABISELECT(-240,-120),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-392,-196),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19894C8D1Ev,_ZTv0_n56_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19894C8D0Ev,_ZTv0_n56_N8S19894C8D0Ev),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-328,-164),
  ABISELECT(40,20),
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  ABISELECT(-408,-204),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19894C8D1Ev,_ZTvn8_n56_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19894C8D0Ev,_ZTvn8_n56_N8S19894C8D0Ev),
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-272,-136),
  ABISELECT(-424,-212),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19894C8D1Ev,_ZTvn16_n56_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19894C8D0Ev,_ZTvn16_n56_N8S19894C8D0Ev),
  ABISELECT(-440,-220),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-448,-224),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-312,-156),
  ABISELECT(-368,-184),
  ABISELECT(-296,-148),
  ABISELECT(-280,-140),
  ABISELECT(-296,-148),
  ABISELECT(-448,-224),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19894C8D1Ev,_ZTv0_n48_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19894C8D0Ev,_ZTv0_n48_N8S19894C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19894C8[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C11D1Ev();
extern void _ZN9S19894C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C11__8S19894C8[] = {
  ABISELECT(80,40),
  ABISELECT(176,88),
  ABISELECT(200,100),
  ABISELECT(136,68),
  ABISELECT(152,76),
  ABISELECT(408,204),
  ABISELECT(152,76),
  ABISELECT(168,84),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C11D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C129S19894C11__8S19894C8[] = {
  ABISELECT(200,100),
  ABISELECT(136,68),
  ABISELECT(152,76),
  ABISELECT(408,204),
  ABISELECT(152,76),
  ABISELECT(168,84),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C129S19894C11__A4__8S19894C8[] = {
  ABISELECT(152,76),
  ABISELECT(168,84),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C129S19894C11__A4__8S19894C8[] = {
  0,
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C129S19894C11__8S19894C8[] = {
  ABISELECT(184,92),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C129S19894C11__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  ABISELECT(-408,-204),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C129S19894C11__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C129S19894C11__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C129S19894C11__8S19894C8[] = {
  ABISELECT(184,92),
  ABISELECT(152,76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S19894C11D1Ev,_ZThn88_N9S19894C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S19894C11D0Ev,_ZThn88_N9S19894C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C11__8S19894C8[] = {
  ABISELECT(-176,-88),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C11__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C11__8S19894C8[] = {
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C11__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  ABISELECT(-408,-204),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C11__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C11__8S19894C8[] = {
  ABISELECT(184,92),
  ABISELECT(152,76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C11D1Ev,_ZThn40_N9S19894C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C11D0Ev,_ZThn40_N9S19894C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C11__8S19894C8[] = {
  ABISELECT(-80,-40),
  0,
  ABISELECT(72,36),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A3__9S19894C11__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C11D1Ev,_ZTvn16_n32_N9S19894C11D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C11D0Ev,_ZTvn16_n32_N9S19894C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__A1__9S19894C11__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C11D1Ev,_ZTvn16_n32_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C11D0Ev,_ZTvn16_n32_N9S19894C11D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C11__8S19894C8[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C9__8S19894C8[] = {
  ABISELECT(72,36),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__8S19894C8[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C108S19894C9__A2__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__8S19894C8[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C108S19894C9__8S19894C8[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C8[] = {
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__8S19894C8[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A3__8S19894C8[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__8S19894C8[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__A1__8S19894C8[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C18__8S19894C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C18[0]),
};
extern void _ZN9S19894C20D1Ev();
extern void _ZN9S19894C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C20__8S19894C8[] = {
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN9S19894C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C20__A1__8S19894C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C20__A5__8S19894C8[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C20__A5__8S19894C8[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C20__8S19894C8[] = {
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C20__A1__8S19894C8[] = {
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C20__A1__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C20__A1__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C23D1Ev,_ZThn28_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C23D0Ev,_ZThn28_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C20__8S19894C8[] = {
  ABISELECT(-56,-28),
  ABISELECT(-112,-56),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-136,-68),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C20__8S19894C8[] = {
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C20__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C20__8S19894C8[] = {
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C20__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__9S19894C20__8S19894C8[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C20__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S19894C20D1Ev,_ZThn20_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn40_N9S19894C20D0Ev,_ZThn20_N9S19894C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C20__8S19894C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C20D1Ev,_ZThn28_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C20D0Ev,_ZThn28_N9S19894C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C20__8S19894C8[] = {
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C20__8S19894C8[] = {
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn24_N9S19894C20D1Ev,_ZThn12_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C20D0Ev,_ZThn12_N9S19894C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C23__9S19894C20__8S19894C8[] = {
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19894C20D1Ev,_ZThn12_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19894C20D0Ev,_ZThn12_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C20D1Ev,_ZThn40_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C20D0Ev,_ZThn40_N9S19894C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C20__8S19894C8[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-136,-68),
  ABISELECT(-160,-80),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C20__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C20__8S19894C8[] = {
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C20__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C21__8S19894C8[] = {
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C21D1Ev,_ZThn8_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C21D0Ev,_ZThn8_N9S19894C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21__8S19894C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__8S19894C8[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__8S19894C8[] = {
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__A2__8S19894C8[] = {
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A6__8S19894C8[] = {
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A6__8S19894C8[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A2__8S19894C8[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__8S19894C8[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__8S19894C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-136,-68),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__8S19894C8[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__8S19894C8[] = {
  0,
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__8S19894C8[] = {
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN9S19894C25D1Ev();
extern void _ZN9S19894C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C25__8S19894C8[] = {
  ABISELECT(72,36),
  ABISELECT(-192,-96),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-256,-128),
  ABISELECT(-312,-156),
  ABISELECT(-240,-120),
  ABISELECT(-224,-112),
  ABISELECT(-240,-120),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN9S19894C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C25D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C189S19894C25__A1__8S19894C8[] = {
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C18[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C26D1Ev();
extern void _ZN9S19894C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C269S19894C25__8S19894C8[] = {
  0,
  ABISELECT(-120,-60),
  ABISELECT(-328,-164),
  ABISELECT(40,20),
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn40_N9S19894C26D1Ev,_ZThn20_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn40_N9S19894C26D0Ev,_ZThn20_N9S19894C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(-40,-20),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-312,-156),
  ABISELECT(-368,-184),
  ABISELECT(-296,-148),
  ABISELECT(-280,-140),
  ABISELECT(-296,-148),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C269S19894C25__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(328,164),
  0,
  ABISELECT(72,36),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(328,164),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C269S19894C25__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(312,156),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(296,148),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(280,140),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(120,60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C269S19894C25__8S19894C8[] = {
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C229S19894C25__A1__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-272,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C229S19894C25__A3__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-272,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-272,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C8[] = {
  0,
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C229S19894C25__A3__8S19894C8[] = {
  0,
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C229S19894C25__A1__8S19894C8[] = {
  0,
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn16_N9S19894C25D1Ev,_ZThn8_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C25D0Ev,_ZThn8_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C26__9S19894C25__8S19894C8[] = {
  0,
  ABISELECT(-120,-60),
  ABISELECT(-328,-164),
  ABISELECT(40,20),
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19894C25D1Ev,_ZThn8_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19894C25D0Ev,_ZThn8_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C25D1Ev,_ZThn28_N9S19894C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C25D0Ev,_ZThn28_N9S19894C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C25__8S19894C8[] = {
  ABISELECT(-56,-28),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-312,-156),
  ABISELECT(-368,-184),
  ABISELECT(-296,-148),
  ABISELECT(-280,-140),
  ABISELECT(-296,-148),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C25__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(240,120),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C25__8S19894C8[] = {
  ABISELECT(312,156),
  0,
  ABISELECT(72,36),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(312,156),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C25__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C25__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(296,148),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C25D1Ev,_ZTvn16_n32_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C25D0Ev,_ZTvn16_n32_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C25__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(280,140),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C25D1Ev,_ZTvn16_n32_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C25D0Ev,_ZTvn16_n32_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C25__8S19894C8[] = {
  ABISELECT(264,132),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C25__8S19894C8[] = {
  ABISELECT(104,52),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C25__8S19894C8[] = {
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N9S19894C25D1Ev,_ZThn16_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C25D0Ev,_ZThn16_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__A__9S19894C25__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-272,-136),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19894C25D1Ev,_ZThn16_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19894C25D0Ev,_ZThn16_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN9S19894C27D1Ev();
extern void _ZN9S19894C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C27__8S19894C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-312,-156),
  ABISELECT(-368,-184),
  ABISELECT(-296,-148),
  ABISELECT(-280,-140),
  ABISELECT(-296,-148),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C27__A1__8S19894C8[] = {
  ABISELECT(-296,-148),
  ABISELECT(-280,-140),
  ABISELECT(-296,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C27__A1__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(296,148),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C27__8S19894C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(296,148),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C27__8S19894C8[] = {
  ABISELECT(368,184),
  0,
  ABISELECT(72,36),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C27__8S19894C8[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(312,156),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C27__8S19894C8[] = {
  ABISELECT(56,28),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(352,176),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C27__8S19894C8[] = {
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(336,168),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__8S19894C8[] = {
  ABISELECT(320,160),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C27__8S19894C8[] = {
  ABISELECT(160,80),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__8S19894C8[] = {
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C27__8S19894C8[] = {
  ABISELECT(-272,-136),
  ABISELECT(-256,-128),
  ABISELECT(-240,-120),
  ABISELECT(-256,-128),
  ABISELECT(-256,-128),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C8[] = {
  {&(_ZTV8S19894C8[20]),  20,211},
  {&(_tg__ZTV9S19894C11__8S19894C8[11]),  11,14},
  {&(_tg__ZTV9S19894C129S19894C11__8S19894C8[9]),  9,12},
  {&(_tg__ZTV8S19894C79S19894C129S19894C11__A4__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C129S19894C11__A4__8S19894C8[3]),  3,4},
  {&(_tg__ZTV9S19894C159S19894C129S19894C11__8S19894C8[4]),  4,4},
  {&(_tg__ZTV9S19894C13__9S19894C129S19894C11__8S19894C8[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C129S19894C11__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C129S19894C11__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C129S19894C11__8S19894C8[7]),  7,9},
  {&(_tg__ZTV9S19894C15__9S19894C129S19894C11__8S19894C8[4]),  4,4},
  {&(_tg__ZTV9S19894C10__9S19894C11__8S19894C8[6]),  6,9},
  {&(_tg__ZTV8S19894C7__A1__9S19894C11__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C11__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C13__9S19894C11__8S19894C8[7]),  7,8},
  {&(_tg__ZTV8S19894C7__A1__9S19894C11__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C11__8S19894C8[7]),  7,9},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C11__8S19894C8[4]),  4,4},
  {&(_tg__ZTV8S19894C9__9S19894C11__8S19894C8[8]),  8,11},
  {&(_tg__ZTV8S19894C78S19894C9__A3__9S19894C11__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__A1__9S19894C11__8S19894C8[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C11__8S19894C8[2]),  2,3},
  {&(_ZTV8S19894C8[35]),  35,211},
  {&(_ZTV8S19894C8[62]),  62,211},
  {&(_ZTV8S19894C8[69]),  69,211},
  {&(_ZTV8S19894C8[69]),  69,211},
  {&(_ZTV8S19894C8[43]),  43,211},
  {&(_ZTV8S19894C8[49]),  49,211},
  {&(_ZTV8S19894C8[54]),  54,211},
  {&(_ZTV8S19894C8[76]),  76,211},
  {&(_ZTV8S19894C8[81]),  81,211},
  {&(_ZTV8S19894C8[181]),  181,211},
  {&(_ZTV8S19894C8[27]),  27,211},
  {&(_ZTV8S19894C8[85]),  85,211},
  {&(_ZTV8S19894C8[98]),  98,211},
  {&(_ZTV8S19894C8[105]),  105,211},
  {&(_ZTV8S19894C8[127]),  127,211},
  {&(_ZTV8S19894C8[136]),  136,211},
  {&(_ZTV8S19894C8[141]),  141,211},
  {&(_ZTV8S19894C8[116]),  116,211},
  {&(_ZTV8S19894C8[150]),  150,211},
  {&(_ZTV8S19894C8[168]),  168,211},
  {&(_ZTV8S19894C8[181]),  181,211},
  {&(_ZTV8S19894C8[207]),  207,211},
  {&(_ZTV8S19894C8[189]),  189,211},
  {&(_ZTV8S19894C8[194]),  194,211},
  {&(_tg__ZTV8S19894C9__8S19894C8[6]),  6,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__8S19894C8[3]),  3,4},
  {&(_tg__ZTV9S19894C108S19894C9__8S19894C8[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C108S19894C9__A2__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C108S19894C9__8S19894C8[3]),  3,4},
  {&(_tg__ZTV8S19894C4__8S19894C9__8S19894C8[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C9__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C9__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A__8S19894C9__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C10__8S19894C9__8S19894C8[5]),  5,8},
  {&(_tg__ZTV8S19894C4__8S19894C8[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C4__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C10__A1__8S19894C8[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A3__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__A1__8S19894C8[3]),  3,4},
  {&(_tg__ZTV9S19894C13__8S19894C8[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C13__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C13__8S19894C8[7]),  7,9},
  {&(_tg__ZTV9S19894C18__8S19894C8[3]),  3,3},
  {&(_tg__ZTV9S19894C20__8S19894C8[12]),  12,14},
  {&(_tg__ZTV9S19894C159S19894C20__A1__8S19894C8[4]),  4,4},
  {&(_tg__ZTV8S19894C79S19894C20__A5__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C20__A5__8S19894C8[3]),  3,4},
  {&(_tg__ZTV9S19894C239S19894C20__8S19894C8[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C20__A1__8S19894C8[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C20__A1__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C20__A1__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C20__A1__8S19894C8[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C20__8S19894C8[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C20__8S19894C8[6]),  6,9},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C20__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C20__8S19894C8[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C20__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C20__8S19894C8[7]),  7,9},
  {&(_tg__ZTV8S19894C7__A__9S19894C20__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A1__9S19894C20__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C21__9S19894C20__8S19894C8[8]),  8,11},
  {&(_tg__ZTV8S19894C7__A1__9S19894C20__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C22__9S19894C20__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C20__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C23__9S19894C20__8S19894C8[10]),  10,13},
  {&(_tg__ZTV9S19894C24__9S19894C20__8S19894C8[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C20__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C20__8S19894C8[2]),  2,3},
  {&(_tg__ZTV8S19894C4__9S19894C20__8S19894C8[7]),  7,9},
  {&(_tg__ZTV9S19894C21__8S19894C8[7]),  7,10},
  {&(_tg__ZTV8S19894C7__9S19894C21__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C21__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C22__9S19894C21__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C22__8S19894C8[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__A2__8S19894C8[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A6__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A6__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A2__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__8S19894C8[3]),  3,4},
  {&(_tg__ZTV9S19894C24__8S19894C8[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C25__8S19894C8[13]),  13,15},
  {&(_tg__ZTV9S19894C189S19894C25__A1__8S19894C8[3]),  3,3},
  {&(_tg__ZTV9S19894C269S19894C25__8S19894C8[11]),  11,14},
  {&(_tg__ZTV9S19894C27__9S19894C269S19894C25__8S19894C8[12]),  12,16},
  {&(_tg__ZTV8S19894C7__9S19894C269S19894C25__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C269S19894C25__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C269S19894C25__8S19894C8[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C269S19894C25__8S19894C8[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C269S19894C25__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C269S19894C25__8S19894C8[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C269S19894C25__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C269S19894C25__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C269S19894C25__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C269S19894C25__8S19894C8[11]),  11,14},
  {&(_tg__ZTV9S19894C229S19894C25__A1__8S19894C8[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C229S19894C25__A3__8S19894C8[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C8[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C229S19894C25__A3__8S19894C8[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C229S19894C25__A1__8S19894C8[3]),  3,4},
  {&(_tg__ZTV9S19894C26__9S19894C25__8S19894C8[11]),  11,14},
  {&(_tg__ZTV9S19894C27__9S19894C25__8S19894C8[12]),  12,16},
  {&(_tg__ZTV8S19894C7__9S19894C25__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C25__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C25__8S19894C8[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C25__8S19894C8[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C25__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C25__8S19894C8[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C25__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C25__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C25__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C26__9S19894C25__8S19894C8[11]),  11,14},
  {&(_tg__ZTV9S19894C22__A__9S19894C25__8S19894C8[5]),  5,8},
  {&(_tg__ZTV9S19894C27__8S19894C8[9]),  9,13},
  {&(_tg__ZTV8S19894C49S19894C27__A1__8S19894C8[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__A1__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__A1__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C27__8S19894C8[5]),  5,6},
  {&(_tg__ZTV8S19894C9__9S19894C27__8S19894C8[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C27__8S19894C8[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C27__8S19894C8[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C27__8S19894C8[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C27__8S19894C8[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__8S19894C8[2]),  2,3},
  {&(_tg__ZTV9S19894C13__9S19894C27__8S19894C8[7]),  7,8},
};
extern VTBL_ENTRY _ZTI8S19894C8[];
extern  VTBL_ENTRY _ZTV8S19894C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C8[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C25D0Ev,_ZThn28_N9S19894C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C25D1Ev,_ZThn28_N9S19894C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C26D0Ev,_ZThn20_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C26D1Ev,_ZThn20_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C21D0Ev,_ZThn8_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C21D1Ev,_ZThn8_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C20D0Ev,_ZThn28_N9S19894C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C20D1Ev,_ZThn28_N9S19894C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C20D0Ev,_ZThn40_N9S19894C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C20D0Ev,_ZThn20_N9S19894C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C20D1Ev,_ZThn40_N9S19894C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C20D1Ev,_ZThn20_N9S19894C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C23D0Ev,_ZThn28_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C23D1Ev,_ZThn28_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C11D0Ev,_ZThn40_N9S19894C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C11D1Ev,_ZThn40_N9S19894C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19894C11D0Ev,_ZThn88_N9S19894C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19894C11D1Ev,_ZThn88_N9S19894C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19894C8D0Ev,_ZTv0_n48_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19894C8D0Ev,_ZThn224_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19894C8D1Ev,_ZTv0_n48_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19894C8D1Ev,_ZThn224_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19894C8D0Ev,_ZTv0_n56_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19894C8D0Ev,_ZThn196_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19894C8D1Ev,_ZTv0_n56_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19894C8D1Ev,_ZThn196_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19894C8D0Ev,_ZTv0_n52_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19894C8D0Ev,_ZThn116_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19894C8D1Ev,_ZTv0_n52_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19894C8D1Ev,_ZThn116_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19894C8D0Ev,_ZThn144_N8S19894C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19894C8D0Ev,_ZThn88_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19894C8D1Ev,_ZThn144_N8S19894C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19894C8D1Ev,_ZThn88_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19894C8D0Ev,_ZThn156_N8S19894C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19894C8D0Ev,_ZThn136_N8S19894C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19894C8D0Ev,_ZThn40_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19894C8D1Ev,_ZThn156_N8S19894C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19894C8D1Ev,_ZThn136_N8S19894C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19894C8D1Ev,_ZThn40_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C8 = {  "S19894C8", // class name
  bases_S19894C8, 59,
  &(vtc_S19894C8[0]), // expected_vtbl_contents
  &(vtt_S19894C8[0]), // expected_vtt_contents
  ABISELECT(472,236), // object size
  NSPAIRA(_ZTI8S19894C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19894C8),211, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19894C8),160, //virtual table table var
  40, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C30_nt  {
  void  mf19894c30(); // _ZN12S19894C30_nt10mf19894c30Ev
  virtual  ~S19894C30_nt(); // _ZN12S19894C30_ntD1Ev
  S19894C30_nt(); // tgen
};
//SIG(-1 S19894C30_nt) C1{ vd m}


void  S19894C30_nt ::mf19894c30(){}
 S19894C30_nt ::~S19894C30_nt(){ note_dtor("S19894C30_nt", this);}
S19894C30_nt ::S19894C30_nt(){ note_ctor("S19894C30_nt", this);} // tgen

//skip512 S19894C30_nt

#else // __cplusplus

extern void _ZN12S19894C30_ntC1Ev();
extern void _ZN12S19894C30_ntD1Ev();
Name_Map name_map_S19894C30_nt[] = {
  NSPAIR(_ZN12S19894C30_ntC1Ev),
  NSPAIR(_ZN12S19894C30_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern void _ZN12S19894C30_ntD1Ev();
extern void _ZN12S19894C30_ntD0Ev();
static  VTBL_ENTRY vtc_S19894C30_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19894C30_nt[0]),
  (VTBL_ENTRY)&_ZN12S19894C30_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19894C30_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
VTBL_ENTRY *P__ZTI12S19894C30_nt = _ZTI12S19894C30_nt; 
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
Class_Descriptor cd_S19894C30_nt = {  "S19894C30_nt", // class name
  0,0,//no base classes
  &(vtc_S19894C30_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19894C30_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19894C30_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  S19894C32  : S19894C7 , virtual S19894C6_nt , S19894C4 {
  int s19894c32f0;
  ~S19894C32(); // tgen
  S19894C32(); // tgen
};
//SIG(-1 S19894C32) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S19894C32()
{
  extern Class_Descriptor cd_S19894C32;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S19894C32, buf);
    S19894C32 *dp, &lv = *(dp=new (buf) S19894C32());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19894C32)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C32)");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C32");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C32");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C32");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C32");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), 0, "S19894C32");
    /*is_ambiguous_... S19894C32::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S19894C32");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(16,8), "S19894C32");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(24,12), "S19894C32");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(48,24), "S19894C32");
    check_base_class_offset(lv, (S19894C4*), ABISELECT(16,8), "S19894C32");
    check_field_offset(lv, s19894c32f0, ABISELECT(32,16), "S19894C32.s19894c32f0");
    test_class_info(&lv, &cd_S19894C32);
    dp->~S19894C32();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C32(Test_S19894C32, "S19894C32", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S19894C32C1Ev();
extern void _ZN9S19894C32D1Ev();
Name_Map name_map_S19894C32[] = {
  NSPAIR(_ZN9S19894C32C1Ev),
  NSPAIR(_ZN9S19894C32D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
static Base_Class bases_S19894C32[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C32[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C32[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C32[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__9S19894C32[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C32[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C32[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C32[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C32[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C32[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C32[] = {
  {&(_ZTV9S19894C32[7]),  7,21},
  {&(_tg__ZTV8S19894C7__A__9S19894C32[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A__9S19894C32[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C32[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C32[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C32[3]),  3,4},
  {&(_ZTV9S19894C32[7]),  7,21},
  {&(_ZTV9S19894C32[13]),  13,21},
  {&(_ZTV9S19894C32[20]),  20,21},
  {&(_tg__ZTV8S19894C7__A1__9S19894C32[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__A1__9S19894C32[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C32[];
extern  VTBL_ENTRY _ZTV9S19894C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C32[];
Class_Descriptor cd_S19894C32 = {  "S19894C32", // class name
  bases_S19894C32, 8,
  &(vtc_S19894C32[0]), // expected_vtbl_contents
  &(vtt_S19894C32[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S19894C32),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19894C32),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C32),11, //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  S19894C31  : virtual S19894C7 , S19894C32 , virtual S19894C30_nt , S3619C26 , virtual S3619C16 {
  ::S3619C26 s19894c31f0;
  virtual  ~S19894C31(); // _ZN9S19894C31D2Ev
  S19894C31(); // tgen
};
//SIG(-1 S19894C31) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S19894C31()
{
  extern Class_Descriptor cd_S19894C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S19894C31, buf);
    S19894C31 *dp, &lv = *(dp=new (buf) S19894C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S19894C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C31)");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(56,32), "S19894C31");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C32*), ABISELECT(56,32), "S19894C31");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(40,24), "S19894C31");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C32*), ABISELECT(40,24), "S19894C31");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), ABISELECT(40,24), "S19894C31");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C32*), ABISELECT(40,24), "S19894C31");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C32*), 0, "S19894C31");
    /*is_ambiguous_... S19894C32::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C32*), ABISELECT(56,32), "S19894C31");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C32*), ABISELECT(16,8), "S19894C31");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C32*), ABISELECT(24,12), "S19894C31");
    check_base_class_offset(lv, (S19894C4*)(S19894C32*), ABISELECT(16,8), "S19894C31");
    check_base_class_offset(lv, (S19894C32*), 0, "S19894C31");
    check_base_class_offset(lv, (S19894C30_nt*), ABISELECT(64,36), "S19894C31");
    /*is_ambiguous_... S19894C31::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*), 0, "S19894C31");
    check_base_class_offset(lv, (S3619C16*), 0, "S19894C31");
    check_field_offset(lv, s19894c31f0, ABISELECT(36,20), "S19894C31.s19894c31f0");
    test_class_info(&lv, &cd_S19894C31);
    dp->~S19894C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C31(Test_S19894C31, "S19894C31", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN9S19894C31C1Ev();
extern void _ZN9S19894C31D2Ev();
Name_Map name_map_S19894C31[] = {
  NSPAIR(_ZN9S19894C31C1Ev),
  NSPAIR(_ZN9S19894C31D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C32;
extern VTBL_ENTRY _ZTI9S19894C32[];
extern  VTBL_ENTRY _ZTV9S19894C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C32[];
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
static Base_Class bases_S19894C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C32,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C30_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19894C31[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C31D1Ev();
extern void _ZN9S19894C31D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev)();
extern void ABISELECT(_ZThn64_N9S19894C31D1Ev,_ZThn36_N9S19894C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev)();
extern void ABISELECT(_ZThn64_N9S19894C31D0Ev,_ZThn36_N9S19894C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19894C31[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev),
};
extern VTBL_ENTRY _ZTV9S19894C31[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C32__9S19894C31[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C32__A1__9S19894C31[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C32__A1__9S19894C31[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C32__9S19894C31[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C32__9S19894C31[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C32__9S19894C31[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C32__9S19894C31[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C31[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C31[] = {
  {&(_ZTV9S19894C31[9]),  9,30},
  {&(_tg__ZTV9S19894C32__9S19894C31[7]),  7,8},
  {&(_tg__ZTV8S19894C79S19894C32__A1__9S19894C31[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C32__A1__9S19894C31[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C32__9S19894C31[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C32__9S19894C31[5]),  5,6},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C32__9S19894C31[5]),  5,6},
  {&(_tg__ZTV8S19894C7__A1__9S19894C32__9S19894C31[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C32__9S19894C31[5]),  5,7},
  {&(_tg__ZTV8S19894C7__A1__9S19894C32__9S19894C31[5]),  5,6},
  {&(_ZTV9S19894C31[24]),  24,30},
  {&(_ZTV9S19894C31[24]),  24,30},
  {&(_ZTV9S19894C31[17]),  17,30},
  {&(_ZTV9S19894C31[28]),  28,30},
  {&(_tg__ZTV8S19894C7__9S19894C31[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C31[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S19894C31[];
extern  VTBL_ENTRY _ZTV9S19894C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C31[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C31D0Ev,_ZThn36_N9S19894C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C31D1Ev,_ZThn36_N9S19894C31D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C31 = {  "S19894C31", // class name
  bases_S19894C31, 12,
  &(vtc_S19894C31[0]), // expected_vtbl_contents
  &(vtt_S19894C31[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI9S19894C31),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C31),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C31),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C29  : virtual S19894C30_nt , virtual S19894C21 , virtual S19894C31 , S19894C23 {
  virtual  ~S19894C29(); // _ZN9S19894C29D2Ev
  S19894C29(); // tgen
};
//SIG(-1 S19894C29) C1{ VBC2{ vd m} VBC3{ BC4{ m Fp} BC5{ m} VBC6{ VBC7{ m} VBC8{ v1} FC8} VBC9{ BC10{ BC6 BC7 BC8 vd}}} VBC11{ VBC6 BC12{ BC6 VBC4 BC13{ BC8 BC4 VBC6 v2} Fi} VBC2 BC7 VBC5 vd FC7} BC14{ VBC15{ VBC10 VBC4 Fp[9]} BC7 BC16{ VBC6 VBC13} vd Fp} vd}


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

static void Test_S19894C29()
{
  extern Class_Descriptor cd_S19894C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S19894C29, buf);
    S19894C29 *dp, &lv = *(dp=new (buf) S19894C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S19894C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C29)");
    check_base_class_offset(lv, (S19894C30_nt*), ABISELECT(16,8), "S19894C29");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C31*), ABISELECT(16,8), "S19894C29");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C21*), ABISELECT(32,16), "S19894C29");
    check_base_class_offset(lv, (S3619C16*)(S19894C21*), ABISELECT(24,12), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(56,28), "S19894C29");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(56,28), "S19894C29");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(56,28), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(56,28), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(24,12), "S19894C29");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(24,12), "S19894C29");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(24,12), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(24,12), "S19894C29");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C21*), ABISELECT(40,20), "S19894C29");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C31*), ABISELECT(40,20), "S19894C29");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(40,20), "S19894C29");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*), ABISELECT(40,20), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(40,20), "S19894C29");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(64,32), "S19894C29");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(64,32), "S19894C29");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C29");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(64,32), "S19894C29");
    check_base_class_offset(lv, (S19894C22*)(S19894C21*), ABISELECT(64,32), "S19894C29");
    check_base_class_offset(lv, (S19894C21*), ABISELECT(24,12), "S19894C29");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(88,44), "S19894C29");
    /*is_ambiguous_... S19894C32::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C32*)(S19894C31*), ABISELECT(128,68), "S19894C29");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(128,68), "S19894C29");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C29");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(112,56), "S19894C29");
    check_base_class_offset(lv, (S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C29");
    check_base_class_offset(lv, (S19894C32*)(S19894C31*), ABISELECT(88,44), "S19894C29");
    /*is_ambiguous_... S19894C31::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C31*), ABISELECT(88,44), "S19894C29");
    check_base_class_offset(lv, (S3619C16*)(S19894C31*), 0, "S19894C29");
    check_base_class_offset(lv, (S19894C31*), ABISELECT(88,44), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(216,112), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(216,112), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(232,120), "S19894C29");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(216,112), "S19894C29");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*), ABISELECT(136,72), "S19894C29");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*), 0, "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(240,124), "S19894C29");
    /*is_ambiguous_... S19894C29::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(248,128), "S19894C29");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*), ABISELECT(240,124), "S19894C29");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*), 0, "S19894C29");
    check_base_class_offset(lv, (S19894C23*), 0, "S19894C29");
    test_class_info(&lv, &cd_S19894C29);
    dp->~S19894C29();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C29(Test_S19894C29, "S19894C29", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN9S19894C29C1Ev();
extern void _ZN9S19894C29D2Ev();
Name_Map name_map_S19894C29[] = {
  NSPAIR(_ZN9S19894C29C1Ev),
  NSPAIR(_ZN9S19894C29D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C21;
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C32;
extern VTBL_ENTRY _ZTI9S19894C32[];
extern  VTBL_ENTRY _ZTV9S19894C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C32[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C31;
extern VTBL_ENTRY _ZTI9S19894C31[];
extern  VTBL_ENTRY _ZTV9S19894C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C31[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
static Base_Class bases_S19894C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C30_nt,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(40,20), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(80,40), //bcp->offset
    49, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(64,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19894C21,    ABISELECT(24,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(104,52), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C32,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19894C31,    ABISELECT(88,44), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C7,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(232,120), //bcp->offset
    93, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(216,112), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(136,72), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(240,124), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19894C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C29[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C29D1Ev();
extern void _ZN9S19894C29D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C29D1Ev,_ZThn8_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C29D0Ev,_ZThn8_N9S19894C29D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C29D1Ev,_ZThn12_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn24_N9S19894C29D0Ev,_ZThn12_N9S19894C29D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn64_N9S19894C29D1Ev,_ZThn32_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn64_N9S19894C29D0Ev,_ZThn32_N9S19894C29D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn88_N9S19894C29D1Ev,_ZThn44_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn88_N9S19894C29D0Ev,_ZThn44_N9S19894C29D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn136_N9S19894C29D1Ev,_ZThn72_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn136_N9S19894C29D0Ev,_ZThn72_N9S19894C29D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn216_N9S19894C29D1Ev,_ZThn112_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn216_N9S19894C29D0Ev,_ZThn112_N9S19894C29D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY vtc_S19894C29[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S19894C29[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C23__9S19894C29[] = {
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C23__9S19894C29[] = {
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C23__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C23__9S19894C29[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C23__9S19894C29[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn136_N9S19894C23D1Ev,_ZThn72_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn136_N9S19894C23D0Ev,_ZThn72_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C23__9S19894C29[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn216_N9S19894C23D1Ev,_ZThn112_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn216_N9S19894C23D0Ev,_ZThn112_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C23__9S19894C29[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C23__9S19894C29[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C23__9S19894C29[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C23__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C23__9S19894C29[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C29[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn40_N9S19894C21D1Ev,_ZThn20_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn40_N9S19894C21D0Ev,_ZThn20_N9S19894C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21__9S19894C29[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C29[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__9S19894C29[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C29[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__9S19894C29[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C29[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C29[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C29[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C29[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C31D1Ev();
extern void _ZN9S19894C31D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C29[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C329S19894C31__9S19894C29[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C329S19894C31__A2__9S19894C29[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A2__9S19894C29[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C29[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__9S19894C29[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C329S19894C31__9S19894C29[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C329S19894C31__9S19894C29[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C329S19894C31__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C31__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C31__9S19894C29[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C32__9S19894C31__9S19894C29[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C31__9S19894C29[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C29[] = {
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__9S19894C29[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__9S19894C29[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C29[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C29[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A3__9S19894C29[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C29[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C29[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C29[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__A1__9S19894C29[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__A1__9S19894C29[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C29[] = {
  {&(_ZTV9S19894C29[15]),  15,105},
  {&(_tg__ZTV9S19894C23__9S19894C29[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C23__9S19894C29[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C23__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C23__9S19894C29[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C23__9S19894C29[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C23__9S19894C29[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C23__9S19894C29[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C23__9S19894C29[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C23__9S19894C29[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C23__9S19894C29[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C23__9S19894C29[7]),  7,9},
  {&(_ZTV9S19894C29[21]),  21,105},
  {&(_ZTV9S19894C29[31]),  31,105},
  {&(_ZTV9S19894C29[39]),  39,105},
  {&(_ZTV9S19894C29[31]),  31,105},
  {&(_ZTV9S19894C29[46]),  46,105},
  {&(_ZTV9S19894C29[51]),  51,105},
  {&(_ZTV9S19894C29[63]),  63,105},
  {&(_ZTV9S19894C29[71]),  71,105},
  {&(_ZTV9S19894C29[81]),  81,105},
  {&(_ZTV9S19894C29[90]),  90,105},
  {&(_ZTV9S19894C29[95]),  95,105},
  {&(_ZTV9S19894C29[103]),  103,105},
  {&(_tg__ZTV9S19894C21__9S19894C29[7]),  7,10},
  {&(_tg__ZTV8S19894C7__9S19894C21__9S19894C29[5]),  5,6},
  {&(_tg__ZTV9S19894C21__9S19894C29[7]),  7,10},
  {&(_tg__ZTV9S19894C22__9S19894C21__9S19894C29[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C29[2]),  2,3},
  {&(_tg__ZTV8S19894C7__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__9S19894C29[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C29[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__9S19894C29[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C29[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C29[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C29[3]),  3,4},
  {&(_tg__ZTV9S19894C31__9S19894C29[9]),  9,12},
  {&(_tg__ZTV9S19894C329S19894C31__9S19894C29[7]),  7,8},
  {&(_tg__ZTV8S19894C79S19894C329S19894C31__A2__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A2__9S19894C29[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C29[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__9S19894C29[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C329S19894C31__9S19894C29[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C329S19894C31__9S19894C29[5]),  5,7},
  {&(_tg__ZTV8S19894C7__A1__9S19894C329S19894C31__9S19894C29[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C31__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C31__9S19894C29[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C32__9S19894C31__9S19894C29[5]),  5,7},
  {&(_tg__ZTV12S19894C30_nt__9S19894C31__9S19894C29[3]),  3,5},
  {&(_tg__ZTV9S19894C24__9S19894C29[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__9S19894C29[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__9S19894C29[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C29[2]),  2,3},
  {&(_tg__ZTV9S19894C10__A1__9S19894C29[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A3__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C29[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C29[3]),  3,4},
  {&(_tg__ZTV8S19894C4__A1__9S19894C29[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C29[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__A1__9S19894C29[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C29[];
extern  VTBL_ENTRY _ZTV9S19894C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C29[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C21D0Ev,_ZThn20_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C21D1Ev,_ZThn20_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C23D0Ev,_ZThn112_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C23D1Ev,_ZThn112_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C23D0Ev,_ZThn72_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C23D1Ev,_ZThn72_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C29D0Ev,_ZThn44_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C29D1Ev,_ZThn44_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C29D0Ev,_ZThn112_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C29D0Ev,_ZThn32_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C29D1Ev,_ZThn112_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C29D1Ev,_ZThn32_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C29D0Ev,_ZThn72_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C29D0Ev,_ZThn12_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C29D1Ev,_ZThn72_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C29D1Ev,_ZThn12_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C29D0Ev,_ZThn8_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C29D1Ev,_ZThn8_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C29 = {  "S19894C29", // class name
  bases_S19894C29, 32,
  &(vtc_S19894C29[0]), // expected_vtbl_contents
  &(vtt_S19894C29[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI9S19894C29),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19894C29),105, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C29),62, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C33  : S19894C29 , virtual S19894C12 {
  virtual  ~S19894C33(); // _ZN9S19894C33D2Ev
  S19894C33(); // tgen
};
//SIG(-1 S19894C33) C1{ BC2{ VBC3{ vd m} VBC4{ BC5{ m Fp} BC6{ m} VBC7{ VBC8{ m} VBC9{ v1} FC9} VBC10{ BC11{ BC7 BC8 BC9 vd}}} VBC12{ VBC7 BC13{ BC7 VBC5 BC14{ BC9 BC5 VBC7 v2} Fi} VBC3 BC8 VBC6 vd FC8} BC15{ VBC16{ VBC11 VBC5 Fp[9]} BC8 BC17{ VBC7 VBC14} vd Fp} vd} VBC18{ VBC17 BC7 BC8 BC6 BC19{ VBC8 VBC5} vd} vd}


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

static void Test_S19894C33()
{
  extern Class_Descriptor cd_S19894C33;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,38)];
    init_test(&cd_S19894C33, buf);
    S19894C33 *dp, &lv = *(dp=new (buf) S19894C33());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,148), "sizeof(S19894C33)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C33)");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C29*), ABISELECT(16,8), "S19894C33");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C31*), ABISELECT(16,8), "S19894C33");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C21*), ABISELECT(32,16), "S19894C33");
    check_base_class_offset(lv, (S3619C16*)(S19894C21*), ABISELECT(24,12), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(56,28), "S19894C33");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(56,28), "S19894C33");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(56,28), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(56,28), "S19894C33");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C12*), ABISELECT(56,28), "S19894C33");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C12*), ABISELECT(56,28), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(24,12), "S19894C33");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(24,12), "S19894C33");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(24,12), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(24,12), "S19894C33");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C12*), ABISELECT(24,12), "S19894C33");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C21*), ABISELECT(40,20), "S19894C33");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C31*), ABISELECT(40,20), "S19894C33");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(40,20), "S19894C33");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C29*), ABISELECT(40,20), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(40,20), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(40,20), "S19894C33");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(64,32), "S19894C33");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(64,32), "S19894C33");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C33");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(64,32), "S19894C33");
    check_base_class_offset(lv, (S19894C22*)(S19894C21*), ABISELECT(64,32), "S19894C33");
    check_base_class_offset(lv, (S19894C21*)(S19894C29*), ABISELECT(24,12), "S19894C33");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(88,44), "S19894C33");
    /*is_ambiguous_... S19894C32::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C32*)(S19894C31*), ABISELECT(128,68), "S19894C33");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(128,68), "S19894C33");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C12*), ABISELECT(128,68), "S19894C33");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C33");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(112,56), "S19894C33");
    check_base_class_offset(lv, (S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C33");
    check_base_class_offset(lv, (S19894C32*)(S19894C31*), ABISELECT(88,44), "S19894C33");
    /*is_ambiguous_... S19894C31::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C31*), ABISELECT(88,44), "S19894C33");
    check_base_class_offset(lv, (S3619C16*)(S19894C31*), 0, "S19894C33");
    check_base_class_offset(lv, (S19894C31*)(S19894C29*), ABISELECT(88,44), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(216,112), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(216,112), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(232,120), "S19894C33");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(216,112), "S19894C33");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C29*), ABISELECT(136,72), "S19894C33");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C29*), 0, "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(240,124), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(248,128), "S19894C33");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C29*), ABISELECT(240,124), "S19894C33");
    /*is_ambiguous_... S19894C33::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(240,124), "S19894C33");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C29*), 0, "S19894C33");
    check_base_class_offset(lv, (S19894C23*)(S19894C29*), 0, "S19894C33");
    check_base_class_offset(lv, (S19894C29*), 0, "S19894C33");
    check_base_class_offset(lv, (S19894C13*)(S19894C12*), ABISELECT(280,144), "S19894C33");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C12*), ABISELECT(256,132), "S19894C33");
    /*is_ambiguous_... S19894C12::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C12*), ABISELECT(256,132), "S19894C33");
    check_base_class_offset(lv, (S3619C16*)(S19894C12*), ABISELECT(256,132), "S19894C33");
    check_base_class_offset(lv, (S19894C15*)(S19894C12*), ABISELECT(272,140), "S19894C33");
    check_base_class_offset(lv, (S19894C12*), ABISELECT(256,132), "S19894C33");
    test_class_info(&lv, &cd_S19894C33);
    dp->~S19894C33();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C33(Test_S19894C33, "S19894C33", ABISELECT(288,148));

#else // __cplusplus

extern void _ZN9S19894C33C1Ev();
extern void _ZN9S19894C33D2Ev();
Name_Map name_map_S19894C33[] = {
  NSPAIR(_ZN9S19894C33C1Ev),
  NSPAIR(_ZN9S19894C33D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C21;
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C32;
extern VTBL_ENTRY _ZTI9S19894C32[];
extern  VTBL_ENTRY _ZTV9S19894C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C32[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C31;
extern VTBL_ENTRY _ZTI9S19894C31[];
extern  VTBL_ENTRY _ZTV9S19894C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C31[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C29;
extern VTBL_ENTRY _ZTI9S19894C29[];
extern  VTBL_ENTRY _ZTV9S19894C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C29[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C12;
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
static Base_Class bases_S19894C33[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C30_nt,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //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
    20, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(40,20), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(80,40), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(64,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19894C21,    ABISELECT(24,12), //bcp->offset
    25, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(104,52), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C32,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19894C31,    ABISELECT(88,44), //bcp->offset
    54, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(232,120), //bcp->offset
    95, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(216,112), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(136,72), //bcp->offset
    75, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(240,124), //bcp->offset
    98, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19894C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19894C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C13,    ABISELECT(280,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C15,    ABISELECT(272,140), //bcp->offset
    120, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C12,    ABISELECT(256,132), //bcp->offset
    107, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C33[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C33D1Ev();
extern void _ZN9S19894C33D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C33D1Ev,_ZThn8_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C33D0Ev,_ZThn8_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C33D1Ev,_ZThn12_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn24_N9S19894C33D0Ev,_ZThn12_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn64_N9S19894C33D1Ev,_ZThn32_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn64_N9S19894C33D0Ev,_ZThn32_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn88_N9S19894C33D1Ev,_ZThn44_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn88_N9S19894C33D0Ev,_ZThn44_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn136_N9S19894C33D1Ev,_ZThn72_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn136_N9S19894C33D0Ev,_ZThn72_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn216_N9S19894C33D1Ev,_ZThn112_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn216_N9S19894C33D0Ev,_ZThn112_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn256_N9S19894C33D1Ev,_ZThn132_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn256_N9S19894C33D0Ev,_ZThn132_N9S19894C33D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C33[] = {
  ABISELECT(280,144),
  ABISELECT(256,132),
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C33D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C33D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-256,-132),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-216,-112),
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev),
  ABISELECT(-144,-72),
  ABISELECT(-216,-112),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  ABISELECT(-40,-20),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-256,-132),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C33[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C29D1Ev();
extern void _ZN9S19894C29D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C29__9S19894C33[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C29__9S19894C33[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C29__9S19894C33[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn136_N9S19894C23D1Ev,_ZThn72_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn136_N9S19894C23D0Ev,_ZThn72_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn216_N9S19894C23D1Ev,_ZThn112_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn216_N9S19894C23D0Ev,_ZThn112_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C239S19894C29__9S19894C33[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C29__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C29__9S19894C33[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C29D1Ev,_ZThn8_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C29D0Ev,_ZThn8_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C29__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C29D1Ev,_ZThn12_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn24_N9S19894C29D0Ev,_ZThn12_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C29__9S19894C33[] = {
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C29__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn64_N9S19894C29D1Ev,_ZThn32_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn64_N9S19894C29D0Ev,_ZThn32_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C29__9S19894C33[] = {
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C29__9S19894C33[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn88_N9S19894C29D1Ev,_ZThn44_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn88_N9S19894C29D0Ev,_ZThn44_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C29__9S19894C33[] = {
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C29__9S19894C33[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn136_N9S19894C29D1Ev,_ZThn72_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn136_N9S19894C29D0Ev,_ZThn72_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C29__9S19894C33[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn216_N9S19894C29D1Ev,_ZThn112_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn216_N9S19894C29D0Ev,_ZThn112_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C29__9S19894C33[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C29__9S19894C33[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C29__9S19894C33[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C33[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn40_N9S19894C21D1Ev,_ZThn20_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn40_N9S19894C21D0Ev,_ZThn20_N9S19894C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21__9S19894C33[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C33[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__9S19894C33[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C33[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__9S19894C33[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C33[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C33[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C33[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C33[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C31D1Ev();
extern void _ZN9S19894C31D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C33[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C329S19894C31__9S19894C33[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C329S19894C31__A2__9S19894C33[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A2__9S19894C33[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C33[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__9S19894C33[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C329S19894C31__9S19894C33[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C329S19894C31__9S19894C33[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C329S19894C31__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C31__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C31__9S19894C33[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C32__9S19894C31__9S19894C33[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C31__9S19894C33[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C33[] = {
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__9S19894C33[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__9S19894C33[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C33[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C33[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A3__9S19894C33[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C33[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C33[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C33[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__A1__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__A1__9S19894C33[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C12__9S19894C33[] = {
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-216,-112),
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C12__A4__9S19894C33[] = {
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A4__9S19894C33[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C33[] = {
  ABISELECT(-144,-72),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C12__9S19894C33[] = {
  ABISELECT(-40,-20),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-256,-132),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C12__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C12__9S19894C33[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C12__9S19894C33[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C12__9S19894C33[] = {
  ABISELECT(-144,-72),
  ABISELECT(-216,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__A1__9S19894C33[] = {
  ABISELECT(-40,-20),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__A1__9S19894C33[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C13__A1__9S19894C33[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__A1__9S19894C33[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTT_ENTRY vtt_S19894C33[] = {
  {&(_ZTV9S19894C33[17]),  17,132},
  {&(_tg__ZTV9S19894C29__9S19894C33[15]),  15,18},
  {&(_tg__ZTV9S19894C239S19894C29__9S19894C33[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C29__9S19894C33[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C29__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C29__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C29__9S19894C33[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C29__9S19894C33[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C29__9S19894C33[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C239S19894C29__9S19894C33[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C29__9S19894C33[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C29__9S19894C33[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C29__9S19894C33[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C29__9S19894C33[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C29__9S19894C33[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C29__9S19894C33[5]),  5,6},
  {&(_tg__ZTV9S19894C21__9S19894C29__9S19894C33[8]),  8,11},
  {&(_tg__ZTV9S19894C22__9S19894C29__9S19894C33[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C29__9S19894C33[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C29__9S19894C33[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C29__9S19894C33[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C29__9S19894C33[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C29__9S19894C33[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C29__9S19894C33[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C29__9S19894C33[7]),  7,9},
  {&(_ZTV9S19894C33[23]),  23,132},
  {&(_ZTV9S19894C33[33]),  33,132},
  {&(_ZTV9S19894C33[41]),  41,132},
  {&(_ZTV9S19894C33[33]),  33,132},
  {&(_ZTV9S19894C33[48]),  48,132},
  {&(_ZTV9S19894C33[53]),  53,132},
  {&(_ZTV9S19894C33[65]),  65,132},
  {&(_ZTV9S19894C33[73]),  73,132},
  {&(_ZTV9S19894C33[83]),  83,132},
  {&(_ZTV9S19894C33[92]),  92,132},
  {&(_ZTV9S19894C33[97]),  97,132},
  {&(_ZTV9S19894C33[105]),  105,132},
  {&(_ZTV9S19894C33[117]),  117,132},
  {&(_ZTV9S19894C33[131]),  131,132},
  {&(_ZTV9S19894C33[124]),  124,132},
  {&(_tg__ZTV9S19894C21__9S19894C33[7]),  7,10},
  {&(_tg__ZTV8S19894C7__9S19894C21__9S19894C33[5]),  5,6},
  {&(_tg__ZTV9S19894C21__9S19894C33[7]),  7,10},
  {&(_tg__ZTV9S19894C22__9S19894C21__9S19894C33[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C33[2]),  2,3},
  {&(_tg__ZTV8S19894C7__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__9S19894C33[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C33[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__9S19894C33[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C33[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C33[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C33[3]),  3,4},
  {&(_tg__ZTV9S19894C31__9S19894C33[9]),  9,12},
  {&(_tg__ZTV9S19894C329S19894C31__9S19894C33[7]),  7,8},
  {&(_tg__ZTV8S19894C79S19894C329S19894C31__A2__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A2__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C33[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__9S19894C33[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C329S19894C31__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C329S19894C31__9S19894C33[5]),  5,7},
  {&(_tg__ZTV8S19894C7__A1__9S19894C329S19894C31__9S19894C33[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C31__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C31__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C32__9S19894C31__9S19894C33[5]),  5,7},
  {&(_tg__ZTV12S19894C30_nt__9S19894C31__9S19894C33[3]),  3,5},
  {&(_tg__ZTV9S19894C24__9S19894C33[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__9S19894C33[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__9S19894C33[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C33[2]),  2,3},
  {&(_tg__ZTV9S19894C10__A1__9S19894C33[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A3__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C33[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C4__A1__9S19894C33[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__A1__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__A1__9S19894C33[3]),  3,4},
  {&(_tg__ZTV9S19894C12__9S19894C33[9]),  9,12},
  {&(_tg__ZTV8S19894C79S19894C12__A4__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A4__9S19894C33[3]),  3,4},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C33[4]),  4,4},
  {&(_tg__ZTV9S19894C13__9S19894C12__9S19894C33[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C12__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C12__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C12__9S19894C33[7]),  7,9},
  {&(_tg__ZTV9S19894C15__9S19894C12__9S19894C33[4]),  4,4},
  {&(_tg__ZTV9S19894C13__A1__9S19894C33[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__A1__9S19894C33[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C13__A1__9S19894C33[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C13__A1__9S19894C33[7]),  7,9},
};
extern VTBL_ENTRY _ZTI9S19894C33[];
extern  VTBL_ENTRY _ZTV9S19894C33[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C33[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C21D0Ev,_ZThn20_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C21D1Ev,_ZThn20_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C29D0Ev,_ZThn44_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C29D1Ev,_ZThn44_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C29D0Ev,_ZThn112_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C29D0Ev,_ZThn32_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C29D1Ev,_ZThn112_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C29D1Ev,_ZThn32_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C29D0Ev,_ZThn72_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C29D0Ev,_ZThn12_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C29D1Ev,_ZThn72_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C29D1Ev,_ZThn12_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C29D0Ev,_ZThn8_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C29D1Ev,_ZThn8_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C23D0Ev,_ZThn112_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C23D1Ev,_ZThn112_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C23D0Ev,_ZThn72_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C23D1Ev,_ZThn72_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19894C33D0Ev,_ZThn132_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19894C33D1Ev,_ZThn132_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C33D0Ev,_ZThn44_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19894C33D1Ev,_ZThn44_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C33D0Ev,_ZThn112_N9S19894C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C33D0Ev,_ZThn32_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C33D1Ev,_ZThn112_N9S19894C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C33D1Ev,_ZThn32_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C33D0Ev,_ZThn72_N9S19894C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C33D0Ev,_ZThn12_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19894C33D1Ev,_ZThn72_N9S19894C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C33D1Ev,_ZThn12_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C33D0Ev,_ZThn8_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C33D1Ev,_ZThn8_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C33 = {  "S19894C33", // class name
  bases_S19894C33, 39,
  &(vtc_S19894C33[0]), // expected_vtbl_contents
  &(vtt_S19894C33[0]), // expected_vtt_contents
  ABISELECT(288,148), // object size
  NSPAIRA(_ZTI9S19894C33),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19894C33),132, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C33),91, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C34  {
  void  mf19894c34(); // _ZN9S19894C3410mf19894c34Ev
};
//SIG(-1 S19894C34) C1{ m}


void  S19894C34 ::mf19894c34(){}

static void Test_S19894C34()
{
  {
    init_simple_test("S19894C34");
    S19894C34 lv;
    check2(sizeof(lv), 1, "sizeof(S19894C34)");
    check2(__alignof__(lv), 1, "__alignof__(S19894C34)");
  }
}
static Arrange_To_Call_Me vS19894C34(Test_S19894C34, "S19894C34", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19894C34[];
VTBL_ENTRY *P__ZTI9S19894C34 = _ZTI9S19894C34; 
Class_Descriptor cd_S19894C34 = {  "S19894C34", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19894C34),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  S19894C35  : virtual S3619C16 , virtual S19894C7 , S19894C5_nt , virtual S19894C24 {
  virtual  ~S19894C35(); // _ZN9S19894C35D2Ev
  S19894C35(); // tgen
};
//SIG(-1 S19894C35) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ v1} FC5} BC5 VBC6{ VBC7{ BC3 BC4 BC5 vd} VBC8{ m Fp} Fp[9]} vd}


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

static void Test_S19894C35()
{
  extern Class_Descriptor cd_S19894C35;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S19894C35, buf);
    S19894C35 *dp, &lv = *(dp=new (buf) S19894C35());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S19894C35)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C35)");
    check_base_class_offset(lv, (S3619C16*), 0, "S19894C35");
    /*is_ambiguous_... S19894C35::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C35");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), 0, "S19894C35");
    /*is_ambiguous_... S19894C35::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(8,4), "S19894C35");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(8,4), "S19894C35");
    /*is_ambiguous_... S19894C35::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*), ABISELECT(8,4), "S19894C35");
    /*is_ambiguous_... S19894C35::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*), 0, "S19894C35");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(104,52), "S19894C35");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(104,52), "S19894C35");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(120,60), "S19894C35");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(104,52), "S19894C35");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(128,64), "S19894C35");
    check_base_class_offset(lv, (S19894C24*), ABISELECT(24,12), "S19894C35");
    test_class_info(&lv, &cd_S19894C35);
    dp->~S19894C35();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C35(Test_S19894C35, "S19894C35", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN9S19894C35C1Ev();
extern void _ZN9S19894C35D2Ev();
Name_Map name_map_S19894C35[] = {
  NSPAIR(_ZN9S19894C35C1Ev),
  NSPAIR(_ZN9S19894C35D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
static Base_Class bases_S19894C35[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C7,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(120,60), //bcp->offset
    38, //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
    8, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(104,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C35[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C35D1Ev();
extern void _ZN9S19894C35D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C35D1Ev,_ZThn12_N9S19894C35D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev)();
extern void ABISELECT(_ZThn24_N9S19894C35D0Ev,_ZThn12_N9S19894C35D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev)();
extern void ABISELECT(_ZThn104_N9S19894C35D1Ev,_ZThn52_N9S19894C35D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev)();
extern void ABISELECT(_ZThn104_N9S19894C35D0Ev,_ZThn52_N9S19894C35D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY vtc_S19894C35[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C35D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C35D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S19894C35[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C35[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C35[] = {
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__9S19894C35[] = {
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__9S19894C35[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C35[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C35[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A1__9S19894C35[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A1__9S19894C35[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__9S19894C35[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C35[] = {
  {&(_ZTV9S19894C35[9]),  9,41},
  {&(_ZTV9S19894C35[17]),  17,41},
  {&(_ZTV9S19894C35[17]),  17,41},
  {&(_ZTV9S19894C35[26]),  26,41},
  {&(_ZTV9S19894C35[35]),  35,41},
  {&(_ZTV9S19894C35[40]),  40,41},
  {&(_tg__ZTV8S19894C7__9S19894C35[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C35[5]),  5,6},
  {&(_tg__ZTV9S19894C24__9S19894C35[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__9S19894C35[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__9S19894C35[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C35[2]),  2,3},
  {&(_tg__ZTV9S19894C10__9S19894C35[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A1__9S19894C35[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A1__9S19894C35[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__9S19894C35[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19894C35[];
extern  VTBL_ENTRY _ZTV9S19894C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C35[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C35D0Ev,_ZThn52_N9S19894C35D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C35D1Ev,_ZThn52_N9S19894C35D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C35D0Ev,_ZThn12_N9S19894C35D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19894C35D1Ev,_ZThn12_N9S19894C35D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C35 = {  "S19894C35", // class name
  bases_S19894C35, 11,
  &(vtc_S19894C35[0]), // expected_vtbl_contents
  &(vtt_S19894C35[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI9S19894C35),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19894C35),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C35),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C28  : S19894C13 , S19894C29 , virtual S19894C33 , S19894C34 , virtual S19894C35 {
  ~S19894C28(); // tgen
  S19894C28(); // tgen
};
//SIG(-1 S19894C28) C1{ BC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC8{ VBC9{ vd m} VBC10{ BC7 BC11{ m} VBC3 VBC12{ BC13{ BC3 BC4 BC5 vd}}} VBC14{ VBC3 BC15{ BC3 VBC7 BC6 Fi} VBC9 BC4 VBC11 vd FC4} BC16{ VBC17{ VBC13 VBC7 Fp[9]} BC4 BC2 vd Fp} vd} VBC18{ BC8 VBC19{ VBC2 BC3 BC4 BC11 BC20{ VBC4 VBC7} vd} vd} BC21{ m} VBC22{ VBC11 VBC3 BC5 VBC17 vd}}


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

static void Test_S19894C28()
{
  extern Class_Descriptor cd_S19894C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,41)];
    init_test(&cd_S19894C28, buf);
    S19894C28 *dp, &lv = *(dp=new (buf) S19894C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,160), "sizeof(S19894C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C28)");
    /*is_ambiguous_... S19894C28::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), 0, "S19894C28");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C28");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C32*)(S19894C31*), 0, "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), 0, "S19894C28");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C12*), 0, "S19894C28");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C12*), 0, "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), 0, "S19894C28");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), 0, "S19894C28");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C32*)(S19894C31*), 0, "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), 0, "S19894C28");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C12*), 0, "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C21*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C31*), ABISELECT(24,12), "S19894C28");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C29*), ABISELECT(24,12), "S19894C28");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C35::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C35*), ABISELECT(24,12), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(40,20), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(48,24), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(40,20), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C29*), ABISELECT(40,20), "S19894C28");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(40,20), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(40,20), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C13*), 0, "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C30_nt*)(S19894C29*), ABISELECT(56,28), "S19894C28");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C31*), ABISELECT(56,28), "S19894C28");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C29*)(S19894C33*), ABISELECT(56,28), "S19894C28");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C21*), ABISELECT(72,36), "S19894C28");
    check_base_class_offset(lv, (S3619C16*)(S19894C21*), ABISELECT(64,32), "S19894C28");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C28");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C28");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(96,48), "S19894C28");
    check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(80,40), "S19894C28");
    check_base_class_offset(lv, (S19894C22*)(S19894C21*), ABISELECT(80,40), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C21*)(S19894C29*), ABISELECT(64,32), "S19894C28");
    check_base_class_offset(lv, (S19894C21*)(S19894C29*)(S19894C33*), ABISELECT(64,32), "S19894C28");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C28");
    /*is_ambiguous_... S19894C32::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C32*)(S19894C31*), ABISELECT(144,76), "S19894C28");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(144,76), "S19894C28");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C12*), ABISELECT(144,76), "S19894C28");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(120,60), "S19894C28");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(128,64), "S19894C28");
    check_base_class_offset(lv, (S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(120,60), "S19894C28");
    check_base_class_offset(lv, (S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C28");
    /*is_ambiguous_... S19894C31::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C31*), ABISELECT(104,52), "S19894C28");
    check_base_class_offset(lv, (S3619C16*)(S19894C31*), 0, "S19894C28");
    check_base_class_offset(lv, (S3619C16*)(S19894C35*), 0, "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C31*)(S19894C29*), ABISELECT(104,52), "S19894C28");
    check_base_class_offset(lv, (S19894C31*)(S19894C29*)(S19894C33*), ABISELECT(104,52), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(232,120), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(232,120), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(248,128), "S19894C28");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(232,120), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C29*), ABISELECT(152,80), "S19894C28");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(152,80), "S19894C28");
    check_base_class_offset(lv, (S19894C24*)(S19894C35*), ABISELECT(152,80), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C29*), ABISELECT(8,4), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C29*), ABISELECT(8,4), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C23*)(S19894C29*), ABISELECT(8,4), "S19894C28");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C29*), ABISELECT(8,4), "S19894C28");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(256,132), "S19894C28");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(256,132), "S19894C28");
    check_base_class_offset(lv, (S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(256,132), "S19894C28");
    check_base_class_offset(lv, (S19894C29*)(S19894C33*), ABISELECT(256,132), "S19894C28");
    check_base_class_offset(lv, (S19894C13*)(S19894C12*), ABISELECT(296,152), "S19894C28");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C12*), ABISELECT(272,140), "S19894C28");
    /*is_ambiguous_... S19894C12::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C12*), ABISELECT(272,140), "S19894C28");
    check_base_class_offset(lv, (S3619C16*)(S19894C12*), ABISELECT(272,140), "S19894C28");
    check_base_class_offset(lv, (S19894C15*)(S19894C12*), ABISELECT(288,148), "S19894C28");
    check_base_class_offset(lv, (S19894C12*)(S19894C33*), ABISELECT(272,140), "S19894C28");
    check_base_class_offset(lv, (S19894C33*), ABISELECT(256,132), "S19894C28");
    check_base_class_offset(lv, (S19894C34*), 0, "S19894C28");
    /*is_ambiguous_... S19894C35::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C35*), ABISELECT(304,156), "S19894C28");
    check_base_class_offset(lv, (S19894C35*), ABISELECT(304,156), "S19894C28");
    test_class_info(&lv, &cd_S19894C28);
    dp->~S19894C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C28(Test_S19894C28, "S19894C28", ABISELECT(312,160));

#else // __cplusplus

extern void _ZN9S19894C28C1Ev();
extern void _ZN9S19894C28D1Ev();
Name_Map name_map_S19894C28[] = {
  NSPAIR(_ZN9S19894C28C1Ev),
  NSPAIR(_ZN9S19894C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C21;
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C32;
extern VTBL_ENTRY _ZTI9S19894C32[];
extern  VTBL_ENTRY _ZTV9S19894C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C32[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C31;
extern VTBL_ENTRY _ZTI9S19894C31[];
extern  VTBL_ENTRY _ZTV9S19894C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C31[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C29;
extern VTBL_ENTRY _ZTI9S19894C29[];
extern  VTBL_ENTRY _ZTV9S19894C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C29[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C29;
extern VTBL_ENTRY _ZTI9S19894C29[];
extern  VTBL_ENTRY _ZTV9S19894C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C29[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C12;
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
extern Class_Descriptor cd_S19894C33;
extern VTBL_ENTRY _ZTI9S19894C33[];
extern  VTBL_ENTRY _ZTV9S19894C33[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C33[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C35;
extern VTBL_ENTRY _ZTI9S19894C35[];
extern  VTBL_ENTRY _ZTV9S19894C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C35[];
static Base_Class bases_S19894C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19894C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(24,12), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(40,20), //bcp->offset
    46, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C30_nt,    ABISELECT(56,28), //bcp->offset
    55, //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
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3619C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(96,48), //bcp->offset
    80, //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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(80,40), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19894C21,    ABISELECT(64,32), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19894C5_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(120,60), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C32,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C31,    ABISELECT(104,52), //bcp->offset
    83, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(248,128), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(232,120), //bcp->offset
    115, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(152,80), //bcp->offset
    104, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19894C29,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19894C13,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19894C29,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C13,    ABISELECT(296,152), //bcp->offset
    165, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19894C15,    ABISELECT(288,148), //bcp->offset
    161, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19894C12,    ABISELECT(272,140), //bcp->offset
    148, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19894C33,    ABISELECT(256,132), //bcp->offset
    127, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C5_nt,    ABISELECT(304,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
    28, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19894C35,    ABISELECT(304,156), //bcp->offset
    173, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19894C28[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C28D1Ev();
extern void _ZN9S19894C28D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S19894C28D1Ev,_ZThn4_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn8_N9S19894C28D0Ev,_ZThn4_N9S19894C28D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19894C28D1Ev,_ZTv0_n12_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C28D1Ev,_ZThn28_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C28D0Ev,_ZTv0_n12_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C28D0Ev,_ZThn28_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn64_N9S19894C28D1Ev,_ZThn32_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn64_N9S19894C28D0Ev,_ZThn32_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C28D1Ev,_ZThn40_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C28D0Ev,_ZThn40_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn104_N9S19894C28D1Ev,_ZThn52_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn104_N9S19894C28D0Ev,_ZThn52_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn152_N9S19894C28D1Ev,_ZThn80_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn152_N9S19894C28D0Ev,_ZThn80_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn232_N9S19894C28D1Ev,_ZThn120_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn232_N9S19894C28D0Ev,_ZThn120_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n144_N9S19894C28D1Ev,_ZTv0_n72_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn256_N9S19894C28D1Ev,_ZThn132_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N9S19894C28D0Ev,_ZTv0_n72_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn256_N9S19894C28D0Ev,_ZThn132_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S19894C28D1Ev,_ZTv0_n40_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn272_N9S19894C28D1Ev,_ZThn140_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19894C28D0Ev,_ZTv0_n40_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn272_N9S19894C28D0Ev,_ZThn140_N9S19894C28D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn304_N9S19894C28D1Ev,_ZThn156_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn304_N9S19894C28D0Ev,_ZThn156_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19894C28[] = {
  ABISELECT(304,156),
  ABISELECT(296,152),
  ABISELECT(272,140),
  ABISELECT(256,132),
  ABISELECT(232,120),
  ABISELECT(152,80),
  0,
  ABISELECT(144,76),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C28D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C28D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(136,72),
  ABISELECT(224,116),
  ABISELECT(144,76),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19894C28D1Ev,_ZThn4_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19894C28D0Ev,_ZThn4_N9S19894C28D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C28D1Ev,_ZTv0_n12_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C28D0Ev,_ZTv0_n12_N9S19894C28D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-256,-132),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-256,-132),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-200,-104),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N9S19894C28D1Ev,_ZTv0_n72_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N9S19894C28D0Ev,_ZTv0_n72_N9S19894C28D0Ev),
  ABISELECT(-272,-140),
  ABISELECT(-128,-64),
  ABISELECT(-232,-120),
  ABISELECT(-248,-128),
  ABISELECT(24,12),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C28D1Ev,_ZTv0_n40_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C28D0Ev,_ZTv0_n40_N9S19894C28D0Ev),
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-304,-156),
  0,
  ABISELECT(-160,-80),
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-304,-156),
  ABISELECT(-304,-156),
  ABISELECT(-280,-144),
  ABISELECT(-304,-156),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev),
};
extern VTBL_ENTRY _ZTV9S19894C28[];
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__A__9S19894C28[] = {
  ABISELECT(40,20),
  0,
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__A__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__A__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C29D1Ev();
extern void _ZN9S19894C29D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C29__9S19894C28[] = {
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(136,72),
  ABISELECT(224,116),
  ABISELECT(144,76),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C29__9S19894C28[] = {
  ABISELECT(136,72),
  ABISELECT(224,116),
  ABISELECT(144,76),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C29__A1__9S19894C28[] = {
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C29__A1__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C29__A1__9S19894C28[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C29__A1__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn144_N9S19894C23D1Ev,_ZThn76_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn144_N9S19894C23D0Ev,_ZThn76_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C29__9S19894C28[] = {
  ABISELECT(-144,-76),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn224_N9S19894C23D1Ev,_ZThn116_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn224_N9S19894C23D0Ev,_ZThn116_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C29__9S19894C28[] = {
  ABISELECT(-224,-116),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C239S19894C29__9S19894C28[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C29__9S19894C28[] = {
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C29__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C29__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn48_N9S19894C29D1Ev,_ZThn24_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn48_N9S19894C29D0Ev,_ZThn24_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C29__9S19894C28[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C29D1Ev,_ZThn28_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C29D0Ev,_ZThn28_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C29__9S19894C28[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C29__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C29__9S19894C28[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn72_N9S19894C29D1Ev,_ZThn36_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn72_N9S19894C29D0Ev,_ZThn36_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C29__9S19894C28[] = {
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C29__9S19894C28[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn96_N9S19894C29D1Ev,_ZThn48_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn96_N9S19894C29D0Ev,_ZThn48_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C29__9S19894C28[] = {
  ABISELECT(-96,-48),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C29__9S19894C28[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn144_N9S19894C29D1Ev,_ZThn76_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn144_N9S19894C29D0Ev,_ZThn76_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C29__9S19894C28[] = {
  ABISELECT(-144,-76),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn224_N9S19894C29D1Ev,_ZThn116_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn224_N9S19894C29D0Ev,_ZThn116_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C29__9S19894C28[] = {
  ABISELECT(-224,-116),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C29__9S19894C28[] = {
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C29__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__9S19894C28[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C28[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C28[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C28[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C21__9S19894C28[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C21D1Ev,_ZThn8_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C21D0Ev,_ZThn8_N9S19894C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21__9S19894C28[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C28[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C28[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__9S19894C28[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C28[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C28[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C28[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__9S19894C28[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C31D1Ev();
extern void _ZN9S19894C31D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C28[] = {
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C329S19894C31__9S19894C28[] = {
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C329S19894C31__A2__9S19894C28[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A2__9S19894C28[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__A1__9S19894C28[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__A1__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__A1__9S19894C28[] = {
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C329S19894C31__9S19894C28[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C329S19894C31__9S19894C28[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C329S19894C31__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C31__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C31__9S19894C28[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C32__9S19894C31__9S19894C28[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C31__9S19894C28[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C28[] = {
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__9S19894C28[] = {
  ABISELECT(-80,-40),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__9S19894C28[] = {
  0,
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C28[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C28[] = {
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A3__9S19894C28[] = {
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C28[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C28[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C33D1Ev();
extern void _ZN9S19894C33D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C33__9S19894C28[] = {
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-256,-132),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-200,-104),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C33D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C33D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C29D1Ev();
extern void _ZN9S19894C29D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(-256,-132),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-200,-104),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[] = {
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C299S19894C33__A1__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(200,104),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(192,100),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C299S19894C33__A1__9S19894C28[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(176,92),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(152,80),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C299S19894C33__A1__9S19894C28[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C299S19894C33__A1__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C33__9S19894C28[] = {
  ABISELECT(200,104),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C33__9S19894C28[] = {
  ABISELECT(192,100),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C33__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C33__9S19894C28[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C33__9S19894C28[] = {
  ABISELECT(176,92),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C33__9S19894C28[] = {
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C33__9S19894C28[] = {
  ABISELECT(152,80),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C33__9S19894C28[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C33__9S19894C28[] = {
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C33__9S19894C28[] = {
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C33__9S19894C28[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C33__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C33D1Ev,_ZThn8_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C33D0Ev,_ZThn8_N9S19894C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C12__9S19894C33__9S19894C28[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-232,-120),
  ABISELECT(-248,-128),
  ABISELECT(24,12),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__A1__9S19894C33__9S19894C28[] = {
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C33__9S19894C28[] = {
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C12__9S19894C28[] = {
  ABISELECT(-128,-64),
  ABISELECT(-232,-120),
  ABISELECT(-248,-128),
  ABISELECT(24,12),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C12__A4__9S19894C28[] = {
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A4__9S19894C28[] = {
  0,
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C28[] = {
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C12__9S19894C28[] = {
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C12__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C12__9S19894C28[] = {
  0,
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C12__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C12__9S19894C28[] = {
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__A3__9S19894C28[] = {
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__A3__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C13__A3__9S19894C28[] = {
  0,
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__A3__9S19894C28[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C35D1Ev();
extern void _ZN9S19894C35D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C35__9S19894C28[] = {
  ABISELECT(-160,-80),
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-304,-156),
  ABISELECT(-304,-156),
  ABISELECT(-280,-144),
  ABISELECT(-304,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C35D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C35D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C35__9S19894C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C35__9S19894C28[] = {
  0,
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C35__9S19894C28[] = {
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C35__9S19894C28[] = {
  ABISELECT(72,36),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C35__9S19894C28[] = {
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C28[] = {
  {&(_ZTV9S19894C28[19]),  19,187},
  {&(_tg__ZTV9S19894C13__A__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__A__9S19894C28[5]),  5,6},
  {&(_tg__ZTV9S19894C13__A__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C4__9S19894C13__A__9S19894C28[7]),  7,9},
  {&(_tg__ZTV9S19894C29__9S19894C28[15]),  15,18},
  {&(_tg__ZTV9S19894C239S19894C29__9S19894C28[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C29__A1__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C29__A1__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C29__A1__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C29__A1__9S19894C28[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C29__9S19894C28[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C29__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C239S19894C29__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C29__9S19894C28[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C29__9S19894C28[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C29__9S19894C28[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C29__9S19894C28[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C29__9S19894C28[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C29__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C29__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C29__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C29__9S19894C28[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C29__9S19894C28[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C29__9S19894C28[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C29__9S19894C28[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C29__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C29__9S19894C28[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C29__9S19894C28[7]),  7,9},
  {&(_ZTV9S19894C28[45]),  45,187},
  {&(_ZTV9S19894C28[19]),  19,187},
  {&(_ZTV9S19894C28[53]),  53,187},
  {&(_ZTV9S19894C28[37]),  37,187},
  {&(_ZTV9S19894C28[58]),  58,187},
  {&(_ZTV9S19894C28[68]),  68,187},
  {&(_ZTV9S19894C28[77]),  77,187},
  {&(_ZTV9S19894C28[82]),  82,187},
  {&(_ZTV9S19894C28[94]),  94,187},
  {&(_ZTV9S19894C28[102]),  102,187},
  {&(_ZTV9S19894C28[112]),  112,187},
  {&(_ZTV9S19894C28[121]),  121,187},
  {&(_ZTV9S19894C28[126]),  126,187},
  {&(_ZTV9S19894C28[145]),  145,187},
  {&(_ZTV9S19894C28[158]),  158,187},
  {&(_ZTV9S19894C28[172]),  172,187},
  {&(_ZTV9S19894C28[165]),  165,187},
  {&(_ZTV9S19894C28[184]),  184,187},
  {&(_tg__ZTV8S19894C7__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C28[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C21__9S19894C28[7]),  7,10},
  {&(_tg__ZTV8S19894C7__9S19894C21__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C21__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C21__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__9S19894C28[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C28[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__9S19894C28[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A1__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A1__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C31__9S19894C28[9]),  9,12},
  {&(_tg__ZTV9S19894C329S19894C31__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C79S19894C329S19894C31__A2__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A2__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__A1__9S19894C28[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__A1__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__A1__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C329S19894C31__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C329S19894C31__9S19894C28[5]),  5,7},
  {&(_tg__ZTV8S19894C7__A1__9S19894C329S19894C31__9S19894C28[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C31__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C31__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C32__9S19894C31__9S19894C28[5]),  5,7},
  {&(_tg__ZTV12S19894C30_nt__9S19894C31__9S19894C28[3]),  3,5},
  {&(_tg__ZTV9S19894C24__9S19894C28[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__9S19894C28[2]),  2,3},
  {&(_tg__ZTV9S19894C10__A1__9S19894C28[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A3__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__A1__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C33__9S19894C28[17]),  17,20},
  {&(_tg__ZTV9S19894C299S19894C33__A1__9S19894C28[15]),  15,18},
  {&(_tg__ZTV9S19894C239S19894C299S19894C33__A1__9S19894C28[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C299S19894C33__A2__9S19894C28[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C299S19894C33__A1__9S19894C28[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C299S19894C33__A1__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C239S19894C299S19894C33__A1__9S19894C28[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C299S19894C33__A1__9S19894C28[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C299S19894C33__A1__9S19894C28[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C299S19894C33__A1__9S19894C28[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C299S19894C33__A1__9S19894C28[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C299S19894C33__A1__9S19894C28[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C299S19894C33__A1__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C299S19894C33__A1__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C299S19894C33__A1__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C299S19894C33__A1__9S19894C28[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C299S19894C33__A1__9S19894C28[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C299S19894C33__A1__9S19894C28[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C299S19894C33__A1__9S19894C28[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C299S19894C33__A1__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C299S19894C33__A1__9S19894C28[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C299S19894C33__A1__9S19894C28[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C33__9S19894C28[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C33__9S19894C28[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C33__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C33__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C33__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C33__9S19894C28[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C33__9S19894C28[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C33__9S19894C28[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C33__9S19894C28[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C33__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C33__9S19894C28[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C33__9S19894C28[7]),  7,9},
  {&(_tg__ZTV9S19894C12__9S19894C33__9S19894C28[10]),  10,13},
  {&(_tg__ZTV9S19894C13__A1__9S19894C33__9S19894C28[7]),  7,8},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C33__9S19894C28[4]),  4,4},
  {&(_tg__ZTV9S19894C12__9S19894C28[9]),  9,12},
  {&(_tg__ZTV8S19894C79S19894C12__A4__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A4__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C28[4]),  4,4},
  {&(_tg__ZTV9S19894C13__9S19894C12__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C12__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C12__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C12__9S19894C28[7]),  7,9},
  {&(_tg__ZTV9S19894C15__9S19894C12__9S19894C28[4]),  4,4},
  {&(_tg__ZTV9S19894C13__A3__9S19894C28[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__A3__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C13__A3__9S19894C28[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C13__A3__9S19894C28[7]),  7,9},
  {&(_tg__ZTV9S19894C35__9S19894C28[9]),  9,12},
  {&(_tg__ZTV8S19894C7__9S19894C35__9S19894C28[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C35__9S19894C28[3]),  3,4},
  {&(_tg__ZTV9S19894C24__9S19894C35__9S19894C28[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C35__9S19894C28[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C35__9S19894C28[2]),  2,3},
};
extern VTBL_ENTRY _ZTI9S19894C28[];
extern  VTBL_ENTRY _ZTV9S19894C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C28[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C33D0Ev,_ZThn8_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C33D1Ev,_ZThn8_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D0Ev,_ZThn40_N9S19894C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C24D1Ev,_ZThn40_N9S19894C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C21D0Ev,_ZThn8_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C21D1Ev,_ZThn8_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19894C29D0Ev,_ZThn48_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19894C29D1Ev,_ZThn48_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19894C29D0Ev,_ZThn116_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19894C29D0Ev,_ZThn36_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19894C29D1Ev,_ZThn116_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19894C29D1Ev,_ZThn36_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C29D0Ev,_ZThn76_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C29D0Ev,_ZThn28_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C29D1Ev,_ZThn76_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C29D1Ev,_ZThn28_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19894C29D0Ev,_ZThn24_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19894C29D1Ev,_ZThn24_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19894C23D0Ev,_ZThn116_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19894C23D1Ev,_ZThn116_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C23D0Ev,_ZThn76_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C23D1Ev,_ZThn76_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C28D0Ev,_ZTv0_n40_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19894C28D0Ev,_ZThn140_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C28D1Ev,_ZTv0_n40_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19894C28D1Ev,_ZThn140_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N9S19894C28D0Ev,_ZTv0_n72_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19894C28D0Ev,_ZThn132_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N9S19894C28D1Ev,_ZTv0_n72_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19894C28D1Ev,_ZThn132_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19894C28D0Ev,_ZThn156_N9S19894C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C28D0Ev,_ZThn52_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19894C28D1Ev,_ZThn156_N9S19894C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19894C28D1Ev,_ZThn52_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19894C28D0Ev,_ZThn120_N9S19894C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C28D0Ev,_ZThn40_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19894C28D1Ev,_ZThn120_N9S19894C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C28D1Ev,_ZThn40_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19894C28D0Ev,_ZThn80_N9S19894C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C28D0Ev,_ZThn32_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19894C28D1Ev,_ZThn80_N9S19894C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19894C28D1Ev,_ZThn32_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C28D0Ev,_ZTv0_n12_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C28D0Ev,_ZThn28_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C28D1Ev,_ZTv0_n12_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C28D1Ev,_ZThn28_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C28 = {  "S19894C28", // class name
  bases_S19894C28, 48,
  &(vtc_S19894C28[0]), // expected_vtbl_contents
  &(vtt_S19894C28[0]), // expected_vtt_contents
  ABISELECT(312,160), // object size
  NSPAIRA(_ZTI9S19894C28),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19894C28),187, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19894C28),144, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19894C1  : virtual S3619C26 , virtual S19894C3 , S19894C8 , S19894C28 {
  ~S19894C1(); // tgen
  S19894C1(); // tgen
};
//SIG(1 S19894C1) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ v1} BC6{ m Fp} VBC7{ VBC2 VBC5 FC5} v2}} BC8{ VBC9{ BC6 BC5 VBC4 BC7 BC10{ BC7 BC2 BC5 vd} vd} BC11{ VBC10 BC12{ VBC13{ VBC7 VBC4} BC7 BC2 BC14{ m} BC15{ VBC2 VBC6} vd} BC16{ m} VBC9 BC17{ m} vd FC3 Fl} VBC18{ VBC19{ m Fi} Fp} VBC20{ BC15 VBC19 BC7 VBC21{ BC6 BC14 VBC7 VBC22{ BC10}} BC23{ VBC24{ VBC10 VBC6 Fp[9]} BC2 BC13 vd Fp} vd} VBC25{ BC18 BC26{ VBC27{ BC4 VBC9 VBC22 VBC13 BC14 vd} vd Fi} VBC6 BC22 VBC14 vd} Fi} BC28{ BC13 BC29{ VBC30{ vd m} VBC21 VBC31{ VBC7 BC32{ BC7 VBC6 BC4 Fi} VBC30 BC2 VBC14 vd FC2} BC23 vd} VBC33{ BC29 VBC12 vd} BC34{ m} VBC35{ VBC14 VBC7 BC5 VBC24 vd}}}


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

static void Test_S19894C1()
{
  extern Class_Descriptor cd_S19894C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(74,75)];
    init_test(&cd_S19894C1, buf);
    S19894C1 *dp, &lv = *(dp=new (buf) S19894C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(584,296), "sizeof(S19894C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19894C1)");
    /*is_ambiguous_... S19894C1::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C9*), ABISELECT(104,52), "S19894C1");
    check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C12*)(S19894C11*)(S19894C8*), ABISELECT(104,52), "S19894C1");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C12*)(S19894C11*)(S19894C8*), ABISELECT(104,52), "S19894C1");
    check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C20*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C20*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C7*)(S19894C12*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C15*)(S19894C12*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*), ABISELECT(112,56), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*), ABISELECT(120,60), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C9*), ABISELECT(104,52), "S19894C1");
    check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C12*)(S19894C11*)(S19894C8*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C20*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C7*)(S19894C12*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C21::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C21*), ABISELECT(128,64), "S19894C1");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C20*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C27*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C28*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C31::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C31*), ABISELECT(128,64), "S19894C1");
    check_base_class_offset(lv, (S19894C7*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C29*)(S19894C28*), ABISELECT(128,64), "S19894C1");
    check_base_class_offset(lv, (S19894C7*)(S19894C13*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(128,64), "S19894C1");
    /*is_ambiguous_... S19894C35::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C35*), ABISELECT(128,64), "S19894C1");
    check_base_class_offset(lv, (S19894C4*)(S19894C3*), ABISELECT(112,56), "S19894C1");
    check_base_class_offset(lv, (S19894C4*)(S19894C9*), ABISELECT(112,56), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*), ABISELECT(112,56), "S19894C1");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C20*), ABISELECT(112,56), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C28*), ABISELECT(112,56), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C29*)(S19894C28*), ABISELECT(112,56), "S19894C1");
    check_base_class_offset(lv, (S19894C4*)(S19894C13*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(112,56), "S19894C1");
    check_base_class_offset(lv, (S19894C3*), ABISELECT(104,52), "S19894C1");
    /*is_ambiguous_... S19894C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C9*), ABISELECT(152,76), "S19894C1");
    /*is_ambiguous_... S19894C9::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C9*), ABISELECT(144,72), "S19894C1");
    /*is_ambiguous_... S19894C9::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C9*), ABISELECT(160,80), "S19894C1");
    check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C9*), ABISELECT(176,88), "S19894C1");
    /*is_ambiguous_... S19894C10::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C9*), ABISELECT(176,88), "S19894C1");
    /*is_ambiguous_... S19894C10::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C9*), ABISELECT(192,96), "S19894C1");
    check_base_class_offset(lv, (S19894C10*)(S19894C9*), ABISELECT(176,88), "S19894C1");
    check_base_class_offset(lv, (S19894C9*)(S19894C8*), ABISELECT(144,72), "S19894C1");
    check_base_class_offset(lv, (S19894C9*)(S19894C11*)(S19894C8*), ABISELECT(144,72), "S19894C1");
    check_base_class_offset(lv, (S19894C9*)(S19894C27*), ABISELECT(144,72), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*), ABISELECT(200,100), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C10 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*), ABISELECT(200,100), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*), ABISELECT(216,108), "S19894C1");
    /*is_ambiguous_... S19894C11::S19894C10 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C11*)(S19894C8*), ABISELECT(200,100), "S19894C1");
    check_base_class_offset(lv, (S19894C10*)(S19894C24*), ABISELECT(200,100), "S19894C1");
    check_base_class_offset(lv, (S19894C13*)(S19894C12*)(S19894C11*)(S19894C8*), ABISELECT(432,216), "S19894C1");
    check_base_class_offset(lv, (S19894C13*)(S19894C27*), ABISELECT(432,216), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S19894C13*)(S19894C12*), ABISELECT(432,216), "S19894C1");
    /*is_ambiguous_... S19894C12::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C12*)(S19894C11*)(S19894C8*), 0, "S19894C1");
    /*is_ambiguous_... S19894C12::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C12*)(S19894C11*)(S19894C8*), 0, "S19894C1");
    check_base_class_offset(lv, (S3619C16*)(S19894C12*)(S19894C11*)(S19894C8*), 0, "S19894C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C12*)(S19894C11*)(S19894C8*), ABISELECT(224,112), "S19894C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C20*), ABISELECT(224,112), "S19894C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C24*), ABISELECT(224,112), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C25*), ABISELECT(224,112), "S19894C1");
    /*is_ambiguous_... S19894C32::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C32*)(S19894C31*), ABISELECT(224,112), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C15*)(S19894C12*), ABISELECT(224,112), "S19894C1");
    check_base_class_offset(lv, (S19894C15*)(S19894C12*)(S19894C11*)(S19894C8*), ABISELECT(16,8), "S19894C1");
    check_base_class_offset(lv, (S19894C12*)(S19894C11*)(S19894C8*), 0, "S19894C1");
    check_base_class_offset(lv, (S3619C5_nt*)(S19894C11*)(S19894C8*), 0, "S19894C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19894C11*)(S19894C8*), 0, "S19894C1");
    check_base_class_offset(lv, (S19894C11*)(S19894C8*), 0, "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C18 */ AMB_check_base_class_offset(lv, (S3223C8_nt*)(S19894C18*), ABISELECT(248,124), "S19894C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S19894C20*), ABISELECT(248,124), "S19894C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S19894C18*)(S19894C25*), ABISELECT(248,124), "S19894C1");
    /*is_ambiguous_... S19894C8::S19894C18 */ AMB_check_base_class_offset(lv, (S19894C18*)(S19894C8*), ABISELECT(232,116), "S19894C1");
    check_base_class_offset(lv, (S19894C15*)(S19894C20*), ABISELECT(256,128), "S19894C1");
    /*is_ambiguous_... S19894C20::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C20*), ABISELECT(264,132), "S19894C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C21*), ABISELECT(304,152), "S19894C1");
    check_base_class_offset(lv, (S3619C16*)(S19894C21*), ABISELECT(296,148), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*), ABISELECT(312,156), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*), ABISELECT(312,156), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*), ABISELECT(328,164), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C22*), ABISELECT(312,156), "S19894C1");
    check_base_class_offset(lv, (S19894C22*)(S19894C21*), ABISELECT(312,156), "S19894C1");
    check_base_class_offset(lv, (S19894C22*)(S19894C27*), ABISELECT(312,156), "S19894C1");
    check_base_class_offset(lv, (S19894C21*)(S19894C20*), ABISELECT(296,148), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C21*)(S19894C29*)(S19894C28*), ABISELECT(296,148), "S19894C1");
    check_base_class_offset(lv, (S19894C21*)(S19894C29*)(S19894C33*), ABISELECT(296,148), "S19894C1");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C20*), ABISELECT(336,168), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C29*)(S19894C28*), ABISELECT(336,168), "S19894C1");
    check_base_class_offset(lv, (S19894C24*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(336,168), "S19894C1");
    check_base_class_offset(lv, (S19894C24*)(S19894C35*), ABISELECT(336,168), "S19894C1");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C20*), ABISELECT(280,140), "S19894C1");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C20*), ABISELECT(280,140), "S19894C1");
    check_base_class_offset(lv, (S19894C23*)(S19894C20*), ABISELECT(280,140), "S19894C1");
    check_base_class_offset(lv, (S19894C20*)(S19894C8*), ABISELECT(256,128), "S19894C1");
    check_base_class_offset(lv, (S19894C18*)(S19894C25*), ABISELECT(416,208), "S19894C1");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C27*), ABISELECT(472,236), "S19894C1");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C27*), ABISELECT(480,240), "S19894C1");
    /*is_ambiguous_... S19894C27::S19894C4 */ AMB_check_base_class_offset(lv, (S19894C4*)(S19894C27*), ABISELECT(472,236), "S19894C1");
    check_base_class_offset(lv, (S3619C16*)(S19894C27*), ABISELECT(472,236), "S19894C1");
    check_base_class_offset(lv, (S19894C27*)(S19894C26*)(S19894C25*), ABISELECT(472,236), "S19894C1");
    check_base_class_offset(lv, (S19894C26*)(S19894C25*), ABISELECT(432,216), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(448,224), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(448,224), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(464,232), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C10*)(S19894C22*)(S19894C25*), ABISELECT(448,224), "S19894C1");
    /*is_ambiguous_... S19894C25::S19894C22 */ AMB_check_base_class_offset(lv, (S19894C22*)(S19894C25*), ABISELECT(448,224), "S19894C1");
    /*is_ambiguous_... S19894C25::S3619C16 */ AMB_check_base_class_offset(lv, (S3619C16*)(S19894C25*), ABISELECT(488,244), "S19894C1");
    check_base_class_offset(lv, (S3619C16*)(S19894C31*), ABISELECT(488,244), "S19894C1");
    check_base_class_offset(lv, (S3619C16*)(S19894C35*), ABISELECT(488,244), "S19894C1");
    check_base_class_offset(lv, (S19894C25*)(S19894C8*), ABISELECT(416,208), "S19894C1");
    check_base_class_offset(lv, (S19894C8*), 0, "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C13 */ AMB_check_base_class_offset(lv, (S19894C13*)(S19894C28*), ABISELECT(80,40), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C30_nt*)(S19894C29*)(S19894C28*), ABISELECT(488,244), "S19894C1");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C31*), ABISELECT(488,244), "S19894C1");
    check_base_class_offset(lv, (S19894C30_nt*)(S19894C29*)(S19894C33*), ABISELECT(488,244), "S19894C1");
    /*is_ambiguous_... S19894C32::S19894C7 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C32*)(S19894C31*), ABISELECT(496,248), "S19894C1");
    /*is_ambiguous_... S19894C4::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(512,256), "S19894C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(520,260), "S19894C1");
    check_base_class_offset(lv, (S19894C4*)(S19894C32*)(S19894C31*), ABISELECT(512,256), "S19894C1");
    check_base_class_offset(lv, (S19894C32*)(S19894C31*), ABISELECT(496,248), "S19894C1");
    /*is_ambiguous_... S19894C31::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C31*), ABISELECT(496,248), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C31*)(S19894C29*)(S19894C28*), ABISELECT(496,248), "S19894C1");
    check_base_class_offset(lv, (S19894C31*)(S19894C29*)(S19894C33*), ABISELECT(496,248), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C29*)(S19894C28*), ABISELECT(88,44), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C29*)(S19894C28*), ABISELECT(88,44), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C23*)(S19894C29*)(S19894C28*), ABISELECT(88,44), "S19894C1");
    /*is_ambiguous_... S19894C28::S19894C29 */ AMB_check_base_class_offset(lv, (S19894C29*)(S19894C28*), ABISELECT(88,44), "S19894C1");
    /*is_ambiguous_... S19894C23::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(536,272), "S19894C1");
    check_base_class_offset(lv, (S19894C13*)(S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(536,272), "S19894C1");
    check_base_class_offset(lv, (S19894C23*)(S19894C29*)(S19894C33*), ABISELECT(536,272), "S19894C1");
    check_base_class_offset(lv, (S19894C29*)(S19894C33*), ABISELECT(536,272), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S19894C7*)(S19894C12*), ABISELECT(552,280), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S3619C26*)(S19894C12*), ABISELECT(552,280), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S3619C16*)(S19894C12*), ABISELECT(552,280), "S19894C1");
    /*is_ambiguous_... S19894C1::S19894C12 */ AMB_check_base_class_offset(lv, (S19894C15*)(S19894C12*), ABISELECT(568,288), "S19894C1");
    check_base_class_offset(lv, (S19894C12*)(S19894C33*), ABISELECT(552,280), "S19894C1");
    check_base_class_offset(lv, (S19894C33*)(S19894C28*), ABISELECT(536,272), "S19894C1");
    check_base_class_offset(lv, (S19894C34*)(S19894C28*), ABISELECT(80,40), "S19894C1");
    /*is_ambiguous_... S19894C35::S19894C5_nt */ AMB_check_base_class_offset(lv, (S19894C5_nt*)(S19894C35*), ABISELECT(576,292), "S19894C1");
    check_base_class_offset(lv, (S19894C35*)(S19894C28*), ABISELECT(576,292), "S19894C1");
    check_base_class_offset(lv, (S19894C28*), ABISELECT(80,40), "S19894C1");
    test_class_info(&lv, &cd_S19894C1);
    dp->~S19894C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19894C1(Test_S19894C1, "S19894C1", ABISELECT(584,296));

#else // __cplusplus

extern void _ZN8S19894C1C1Ev();
extern void _ZN8S19894C1D1Ev();
Name_Map name_map_S19894C1[] = {
  NSPAIR(_ZN8S19894C1C1Ev),
  NSPAIR(_ZN8S19894C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C3;
extern VTBL_ENTRY _ZTI8S19894C3[];
extern  VTBL_ENTRY _ZTV8S19894C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C3[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C9;
extern VTBL_ENTRY _ZTI8S19894C9[];
extern  VTBL_ENTRY _ZTV8S19894C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C9[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C12;
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
extern Class_Descriptor cd_S3619C5_nt;
extern VTBL_ENTRY _ZTI10S3619C5_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C11;
extern VTBL_ENTRY _ZTI9S19894C11[];
extern  VTBL_ENTRY _ZTV9S19894C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C11[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C18;
extern VTBL_ENTRY _ZTI9S19894C18[];
extern  VTBL_ENTRY _ZTV9S19894C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C18[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S19894C21;
extern VTBL_ENTRY _ZTI9S19894C21[];
extern  VTBL_ENTRY _ZTV9S19894C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C21[];
extern Class_Descriptor cd_S19894C24;
extern VTBL_ENTRY _ZTI9S19894C24[];
extern  VTBL_ENTRY _ZTV9S19894C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C24[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C20;
extern VTBL_ENTRY _ZTI9S19894C20[];
extern  VTBL_ENTRY _ZTV9S19894C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C20[];
extern Class_Descriptor cd_S19894C18;
extern VTBL_ENTRY _ZTI9S19894C18[];
extern  VTBL_ENTRY _ZTV9S19894C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C18[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C27;
extern VTBL_ENTRY _ZTI9S19894C27[];
extern  VTBL_ENTRY _ZTV9S19894C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C27[];
extern Class_Descriptor cd_S19894C26;
extern VTBL_ENTRY _ZTI9S19894C26[];
extern  VTBL_ENTRY _ZTV9S19894C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C26[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C10;
extern VTBL_ENTRY _ZTI9S19894C10[];
extern  VTBL_ENTRY _ZTV9S19894C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C10[];
extern Class_Descriptor cd_S19894C22;
extern VTBL_ENTRY _ZTI9S19894C22[];
extern  VTBL_ENTRY _ZTV9S19894C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C22[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C25;
extern VTBL_ENTRY _ZTI9S19894C25[];
extern  VTBL_ENTRY _ZTV9S19894C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C25[];
extern Class_Descriptor cd_S19894C8;
extern VTBL_ENTRY _ZTI8S19894C8[];
extern  VTBL_ENTRY _ZTV8S19894C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C8[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C4;
extern VTBL_ENTRY _ZTI8S19894C4[];
extern  VTBL_ENTRY _ZTV8S19894C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C4[];
extern Class_Descriptor cd_S19894C32;
extern VTBL_ENTRY _ZTI9S19894C32[];
extern  VTBL_ENTRY _ZTV9S19894C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C32[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C31;
extern VTBL_ENTRY _ZTI9S19894C31[];
extern  VTBL_ENTRY _ZTV9S19894C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C31[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C29;
extern VTBL_ENTRY _ZTI9S19894C29[];
extern  VTBL_ENTRY _ZTV9S19894C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C29[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C13;
extern VTBL_ENTRY _ZTI9S19894C13[];
extern  VTBL_ENTRY _ZTV9S19894C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C13[];
extern Class_Descriptor cd_S19894C23;
extern VTBL_ENTRY _ZTI9S19894C23[];
extern  VTBL_ENTRY _ZTV9S19894C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C23[];
extern Class_Descriptor cd_S19894C29;
extern VTBL_ENTRY _ZTI9S19894C29[];
extern  VTBL_ENTRY _ZTV9S19894C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C29[];
extern Class_Descriptor cd_S19894C7;
extern VTBL_ENTRY _ZTI8S19894C7[];
extern  VTBL_ENTRY _ZTV8S19894C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C7[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C15;
extern VTBL_ENTRY _ZTI9S19894C15[];
extern  VTBL_ENTRY _ZTV9S19894C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C15[];
extern Class_Descriptor cd_S19894C12;
extern VTBL_ENTRY _ZTI9S19894C12[];
extern  VTBL_ENTRY _ZTV9S19894C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C12[];
extern Class_Descriptor cd_S19894C33;
extern VTBL_ENTRY _ZTI9S19894C33[];
extern  VTBL_ENTRY _ZTV9S19894C33[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C33[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C5_nt;
extern VTBL_ENTRY _ZTI11S19894C5_nt[];
extern  VTBL_ENTRY _ZTV11S19894C5_nt[];
extern Class_Descriptor cd_S19894C35;
extern VTBL_ENTRY _ZTI9S19894C35[];
extern  VTBL_ENTRY _ZTV9S19894C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C35[];
extern Class_Descriptor cd_S19894C28;
extern VTBL_ENTRY _ZTI9S19894C28[];
extern  VTBL_ENTRY _ZTV9S19894C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19894C28[];
static Base_Class bases_S19894C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C5_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(128,64), //bcp->offset
    90, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C4,    ABISELECT(112,56), //bcp->offset
    81, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C3,    ABISELECT(104,52), //bcp->offset
    73, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C5_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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(160,80), //bcp->offset
    107, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(192,96), //bcp->offset
    121, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(176,88), //bcp->offset
    113, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C9,    ABISELECT(144,72), //bcp->offset
    96, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(200,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(200,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(216,108), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(200,100), //bcp->offset
    124, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19894C13,    ABISELECT(432,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(224,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
    24, //immediately_derived
  0, 1},
  {&cd_S19894C15,    ABISELECT(16,8), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3619C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S3223C8_nt,    ABISELECT(248,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19894C18,    ABISELECT(232,116), //bcp->offset
    136, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S19894C15,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(264,132), //bcp->offset
    154, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(296,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(312,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(312,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(328,164), //bcp->offset
    193, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(312,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    191, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(312,156), //bcp->offset
    184, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    190, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19894C21,    ABISELECT(296,148), //bcp->offset
    173, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    185, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19894C24,    ABISELECT(336,168), //bcp->offset
    196, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C13,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(280,140), //bcp->offset
    160, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19894C20,    ABISELECT(256,128), //bcp->offset
    139, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S19894C18,    ABISELECT(416,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(472,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
    28, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(472,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(472,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19894C27,    ABISELECT(472,236), //bcp->offset
    249, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    233, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S19894C26,    ABISELECT(432,216), //bcp->offset
    224, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(448,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(448,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(464,232), //bcp->offset
    246, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19894C10,    ABISELECT(448,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19894C22,    ABISELECT(448,224), //bcp->offset
    238, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    214, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S3619C16,    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
    -1, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S19894C25,    ABISELECT(416,208), //bcp->offset
    207, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    200, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S19894C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C13,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S19894C30_nt,    ABISELECT(488,244), //bcp->offset
    265, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    122, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    69, //immediately_derived
  0, 1},
  {&cd_S19894C7,    ABISELECT(496,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    249, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(512,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(520,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S19894C4,    ABISELECT(512,256), //bcp->offset
    284, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    124, //bcp->index_in_construction_vtbl_array
    251, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S19894C32,    ABISELECT(496,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    248, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S3619C26,    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
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S19894C31,    ABISELECT(496,248), //bcp->offset
    270, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    123, //bcp->index_in_construction_vtbl_array
    247, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    73, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S19894C13,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S19894C29,    ABISELECT(88,44), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(536,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S19894C13,    ABISELECT(536,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    264, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S19894C23,    ABISELECT(536,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    263, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S19894C29,    ABISELECT(536,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    262, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S19894C7,    ABISELECT(552,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    302, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(552,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
    82, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(552,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
    82, //immediately_derived
  0, 0},
  {&cd_S19894C15,    ABISELECT(568,288), //bcp->offset
    325, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    127, //bcp->index_in_construction_vtbl_array
    304, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S19894C12,    ABISELECT(552,280), //bcp->offset
    312, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    126, //bcp->index_in_construction_vtbl_array
    301, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    83, //immediately_derived
  0, 1},
  {&cd_S19894C33,    ABISELECT(536,272), //bcp->offset
    291, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    125, //bcp->index_in_construction_vtbl_array
    261, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    87, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    87, //immediately_derived
  0, 0},
  {&cd_S19894C5_nt,    ABISELECT(576,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
    51, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S19894C35,    ABISELECT(576,292), //bcp->offset
    329, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    128, //bcp->index_in_construction_vtbl_array
    310, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    87, //immediately_derived
  0, 1},
  {&cd_S19894C28,    ABISELECT(80,40), //bcp->offset
    33, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19894C1[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C1D1Ev();
extern void _ZN8S19894C1D0Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S19894C1D1Ev,_ZThn40_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19894C1D0Ev,_ZThn40_N8S19894C1D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn88_N8S19894C1D1Ev,_ZThn44_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S19894C1D0Ev,_ZThn44_N8S19894C1D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19894C1D1Ev,_ZThn72_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19894C1D0Ev,_ZThn72_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S19894C1D1Ev,_ZTvn16_n32_N8S19894C1D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S19894C1D0Ev,_ZTvn16_n32_N8S19894C1D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19894C1D1Ev,_ZTv0_n24_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S19894C1D1Ev,_ZThn100_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19894C1D0Ev,_ZTv0_n24_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S19894C1D0Ev,_ZThn100_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S19894C1D1Ev,_ZTv0_n52_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S19894C1D1Ev,_ZThn128_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19894C1D0Ev,_ZTv0_n52_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S19894C1D0Ev,_ZThn128_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn24_n104_N8S19894C1D1Ev,_ZTvn12_n52_N8S19894C1D1Ev)();
extern void ABISELECT(_ZTvn24_n104_N8S19894C1D0Ev,_ZTvn12_n52_N8S19894C1D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn296_N8S19894C1D1Ev,_ZThn148_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn296_N8S19894C1D0Ev,_ZThn148_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19894C1D1Ev,_ZTv0_n24_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn312_N8S19894C1D1Ev,_ZThn156_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19894C1D0Ev,_ZTv0_n24_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn312_N8S19894C1D0Ev,_ZThn156_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19894C1D1Ev,_ZThn168_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19894C1D0Ev,_ZThn168_N8S19894C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19894C1D1Ev,_ZTv0_n56_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S19894C1D1Ev,_ZThn208_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19894C1D0Ev,_ZTv0_n56_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S19894C1D0Ev,_ZThn208_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n112_N8S19894C1D1Ev,_ZTvn8_n56_N8S19894C1D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N8S19894C1D0Ev,_ZTvn8_n56_N8S19894C1D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n112_N8S19894C1D1Ev,_ZTvn16_n56_N8S19894C1D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N8S19894C1D0Ev,_ZTvn16_n56_N8S19894C1D0Ev)();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N8S19894C1D1Ev,_ZTv0_n48_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn472_N8S19894C1D1Ev,_ZThn236_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19894C1D0Ev,_ZTv0_n48_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn472_N8S19894C1D0Ev,_ZThn236_N8S19894C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19894C1D1Ev,_ZTv0_n12_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn488_N8S19894C1D1Ev,_ZThn244_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19894C1D0Ev,_ZTv0_n12_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn488_N8S19894C1D0Ev,_ZThn244_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19894C1D1Ev,_ZTv0_n44_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S19894C1D1Ev,_ZThn248_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19894C1D0Ev,_ZTv0_n44_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S19894C1D0Ev,_ZThn248_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n144_N8S19894C1D1Ev,_ZTv0_n72_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn536_N8S19894C1D1Ev,_ZThn272_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S19894C1D0Ev,_ZTv0_n72_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn536_N8S19894C1D0Ev,_ZThn272_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19894C1D1Ev,_ZTv0_n40_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn552_N8S19894C1D1Ev,_ZThn280_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19894C1D0Ev,_ZTv0_n40_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn552_N8S19894C1D0Ev,_ZThn280_N8S19894C1D0Ev)() __attribute__((weak));
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19894C1D1Ev,_ZTv0_n44_N8S19894C1D1Ev)();
extern void ABISELECT(_ZThn576_N8S19894C1D1Ev,_ZThn292_N8S19894C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19894C1D0Ev,_ZTv0_n44_N8S19894C1D0Ev)();
extern void ABISELECT(_ZThn576_N8S19894C1D0Ev,_ZThn292_N8S19894C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19894C1[] = {
  ABISELECT(576,292),
  ABISELECT(552,280),
  ABISELECT(536,272),
  ABISELECT(496,248),
  ABISELECT(488,244),
  ABISELECT(104,52),
  ABISELECT(488,244),
  ABISELECT(472,236),
  ABISELECT(416,208),
  ABISELECT(336,168),
  ABISELECT(312,156),
  ABISELECT(296,148),
  ABISELECT(256,128),
  ABISELECT(248,124),
  ABISELECT(232,116),
  ABISELECT(144,72),
  ABISELECT(200,100),
  ABISELECT(224,112),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(432,216),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C1D0Ev,
  ABISELECT(208,104),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  ABISELECT(496,252),
  ABISELECT(352,176),
  ABISELECT(472,240),
  ABISELECT(456,232),
  ABISELECT(120,60),
  ABISELECT(256,128),
  ABISELECT(408,204),
  ABISELECT(144,72),
  ABISELECT(416,208),
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(408,204),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19894C1D1Ev,_ZThn40_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19894C1D0Ev,_ZThn40_N8S19894C1D0Ev),
  ABISELECT(400,200),
  ABISELECT(408,204),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(400,200),
  ABISELECT(136,68),
  ABISELECT(112,56),
  ABISELECT(248,124),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S19894C1D1Ev,_ZThn44_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S19894C1D0Ev,_ZThn44_N8S19894C1D0Ev),
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-144,-72),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19894C1D1Ev,_ZTvn16_n32_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19894C1D0Ev,_ZTvn16_n32_N8S19894C1D0Ev),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-200,-100),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C1D1Ev,_ZTv0_n24_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C1D0Ev,_ZTv0_n24_N8S19894C1D0Ev),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(16,8),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  ABISELECT(-256,-128),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-64),
  ABISELECT(40,20),
  ABISELECT(-152,-76),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-152,-76),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19894C1D1Ev,_ZTv0_n52_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19894C1D0Ev,_ZTv0_n52_N8S19894C1D0Ev),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19894C1D1Ev,_ZTvn12_n52_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19894C1D0Ev,_ZTvn12_n52_N8S19894C1D0Ev),
  ABISELECT(-296,-148),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(-296,-148),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev),
  ABISELECT(-312,-156),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C1D1Ev,_ZTv0_n24_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C1D0Ev,_ZTv0_n24_N8S19894C1D0Ev),
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-336,-168),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev),
  ABISELECT(48,24),
  ABISELECT(-416,-208),
  ABISELECT(72,36),
  ABISELECT(-192,-96),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-304,-152),
  ABISELECT(-272,-136),
  ABISELECT(-312,-156),
  ABISELECT(-312,-156),
  ABISELECT(-288,-144),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-416,-208),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19894C1D1Ev,_ZTv0_n56_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19894C1D0Ev,_ZTv0_n56_N8S19894C1D0Ev),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-288,-144),
  ABISELECT(40,20),
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(-432,-216),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19894C1D1Ev,_ZTvn8_n56_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19894C1D0Ev,_ZTvn8_n56_N8S19894C1D0Ev),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-448,-224),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19894C1D1Ev,_ZTvn16_n56_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19894C1D0Ev,_ZTvn16_n56_N8S19894C1D0Ev),
  ABISELECT(-464,-232),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  ABISELECT(-472,-236),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-360,-180),
  ABISELECT(-328,-164),
  ABISELECT(-368,-184),
  ABISELECT(-368,-184),
  ABISELECT(-344,-172),
  ABISELECT(-472,-236),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19894C1D1Ev,_ZTv0_n48_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19894C1D0Ev,_ZTv0_n48_N8S19894C1D0Ev),
  ABISELECT(-488,-244),
  ABISELECT(-488,-244),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19894C1D1Ev,_ZTv0_n12_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19894C1D0Ev,_ZTv0_n12_N8S19894C1D0Ev),
  ABISELECT(-496,-248),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-496,-248),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19894C1D1Ev,_ZTv0_n44_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19894C1D0Ev,_ZTv0_n44_N8S19894C1D0Ev),
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(-512,-256),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  ABISELECT(-536,-272),
  ABISELECT(-104,-56),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-40,-24),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-48,-28),
  ABISELECT(-312,-160),
  ABISELECT(-336,-172),
  ABISELECT(-200,-104),
  ABISELECT(-424,-216),
  ABISELECT(-432,-220),
  ABISELECT(-432,-220),
  ABISELECT(-408,-208),
  ABISELECT(-432,-220),
  ABISELECT(-536,-272),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S19894C1D1Ev,_ZTv0_n72_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S19894C1D0Ev,_ZTv0_n72_N8S19894C1D0Ev),
  ABISELECT(-552,-280),
  ABISELECT(-328,-168),
  ABISELECT(-440,-224),
  ABISELECT(-424,-216),
  ABISELECT(-120,-64),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-552,-280),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19894C1D1Ev,_ZTv0_n40_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19894C1D0Ev,_ZTv0_n40_N8S19894C1D0Ev),
  ABISELECT(-344,-176),
  ABISELECT(-464,-236),
  ABISELECT(-568,-288),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  ABISELECT(-576,-292),
  0,
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-240,-124),
  ABISELECT(-472,-240),
  ABISELECT(-472,-240),
  ABISELECT(-448,-228),
  ABISELECT(-88,-48),
  ABISELECT(-576,-292),
  (VTBL_ENTRY)&(_ZTI8S19894C1[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19894C1D1Ev,_ZTv0_n44_N8S19894C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19894C1D0Ev,_ZTv0_n44_N8S19894C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19894C1[];
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C8D1Ev();
extern void _ZN8S19894C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C8__8S19894C1[] = {
  ABISELECT(488,244),
  ABISELECT(472,236),
  ABISELECT(416,208),
  ABISELECT(336,168),
  ABISELECT(312,156),
  ABISELECT(296,148),
  ABISELECT(256,128),
  ABISELECT(248,124),
  ABISELECT(232,116),
  ABISELECT(144,72),
  ABISELECT(200,100),
  ABISELECT(224,112),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(432,216),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C8D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C11D1Ev();
extern void _ZN9S19894C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(144,72),
  ABISELECT(200,100),
  ABISELECT(224,112),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(432,216),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C11D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C129S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(224,112),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(432,216),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C129S19894C118S19894C8__A4__8S19894C1[] = {
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C129S19894C118S19894C8__A4__8S19894C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C129S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(208,104),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C129S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(-432,-216),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C129S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C129S19894C118S19894C8__8S19894C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C129S19894C118S19894C8__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C129S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(208,104),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S19894C11D1Ev,_ZThn100_N9S19894C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S19894C11D0Ev,_ZThn100_N9S19894C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-200,-100),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C118S19894C8__8S19894C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(-432,-216),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C118S19894C8__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(208,104),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S19894C11D1Ev,_ZThn72_N9S19894C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S19894C11D0Ev,_ZThn72_N9S19894C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-144,-72),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A3__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C11D1Ev,_ZTvn16_n32_N9S19894C11D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C11D0Ev,_ZTvn16_n32_N9S19894C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__A1__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C11D1Ev,_ZTvn16_n32_N9S19894C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C11D0Ev,_ZTvn16_n32_N9S19894C11D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C118S19894C8__8S19894C1[] = {
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19894C11[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19894C8D1Ev,_ZThn72_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn144_N8S19894C8D0Ev,_ZThn72_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19894C9__8S19894C8__8S19894C1[] = {
  ABISELECT(-144,-72),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C8__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C8__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A2__8S19894C8__8S19894C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__8S19894C8__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S19894C8D1Ev,_ZTvn16_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S19894C8D0Ev,_ZTvn16_n32_N8S19894C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__8S19894C8__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19894C8D1Ev,_ZTvn16_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19894C8D0Ev,_ZTvn16_n32_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A3__8S19894C8__8S19894C1[] = {
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn200_N8S19894C8D1Ev,_ZThn100_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn200_N8S19894C8D0Ev,_ZThn100_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__8S19894C8__8S19894C1[] = {
  ABISELECT(-200,-100),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A4__8S19894C8__8S19894C1[] = {
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n112_N8S19894C8D1Ev,_ZTvn8_n56_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N8S19894C8D0Ev,_ZTvn8_n56_N8S19894C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C269S19894C25__8S19894C8__8S19894C1[] = {
  0,
  ABISELECT(-120,-60),
  ABISELECT(-288,-144),
  ABISELECT(40,20),
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(-432,-216),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19894C8D1Ev,_ZTvn8_n56_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19894C8D0Ev,_ZTvn8_n56_N8S19894C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C129S19894C11__8S19894C8__8S19894C1[] = {
  ABISELECT(208,104),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19894C18__8S19894C8__8S19894C1[] = {
  ABISELECT(16,8),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
};
extern void ABISELECT(_ZTv0_n104_N8S19894C8D1Ev,_ZTv0_n52_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19894C8D1Ev,_ZThn128_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19894C8D0Ev,_ZTv0_n52_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19894C8D0Ev,_ZThn128_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C20__8S19894C8__8S19894C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-64),
  ABISELECT(40,20),
  ABISELECT(-152,-76),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-152,-76),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19894C8D1Ev,_ZTv0_n52_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19894C8D0Ev,_ZTv0_n52_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C20__A5__8S19894C8__8S19894C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn296_N8S19894C8D1Ev,_ZThn148_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn296_N8S19894C8D0Ev,_ZThn148_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__8S19894C8__8S19894C1[] = {
  ABISELECT(-296,-148),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(-296,-148),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn312_N8S19894C8D1Ev,_ZThn156_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn312_N8S19894C8D0Ev,_ZThn156_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__8S19894C8__8S19894C1[] = {
  ABISELECT(-312,-156),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__8S19894C8__8S19894C1[] = {
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn24_n104_N8S19894C8D1Ev,_ZTvn12_n52_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn24_n104_N8S19894C8D0Ev,_ZTvn12_n52_N8S19894C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C20__8S19894C8__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19894C8D1Ev,_ZTvn12_n52_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19894C8D0Ev,_ZTvn12_n52_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S19894C8D1Ev,_ZThn168_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn336_N8S19894C8D0Ev,_ZThn168_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__8S19894C8__8S19894C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev),
};
extern void ABISELECT(_ZTv0_n112_N8S19894C8D1Ev,_ZTv0_n56_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn416_N8S19894C8D1Ev,_ZThn208_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19894C8D0Ev,_ZTv0_n56_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn416_N8S19894C8D0Ev,_ZThn208_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C25__8S19894C8__8S19894C1[] = {
  ABISELECT(48,24),
  ABISELECT(-416,-208),
  ABISELECT(72,36),
  ABISELECT(-192,-96),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-304,-152),
  ABISELECT(-272,-136),
  ABISELECT(-312,-156),
  ABISELECT(-312,-156),
  ABISELECT(-288,-144),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-416,-208),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19894C8D1Ev,_ZTv0_n56_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19894C8D0Ev,_ZTv0_n56_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N8S19894C8D1Ev,_ZTv0_n48_N8S19894C8D1Ev)();
extern void ABISELECT(_ZThn472_N8S19894C8D1Ev,_ZThn236_N8S19894C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19894C8D0Ev,_ZTv0_n48_N8S19894C8D0Ev)();
extern void ABISELECT(_ZThn472_N8S19894C8D0Ev,_ZThn236_N8S19894C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C27__8S19894C8__8S19894C1[] = {
  ABISELECT(-472,-236),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-360,-180),
  ABISELECT(-328,-164),
  ABISELECT(-368,-184),
  ABISELECT(-368,-184),
  ABISELECT(-344,-172),
  ABISELECT(-472,-236),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19894C8D1Ev,_ZTv0_n48_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19894C8D0Ev,_ZTv0_n48_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n112_N8S19894C8D1Ev,_ZTvn16_n56_N8S19894C8D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N8S19894C8D0Ev,_ZTvn16_n56_N8S19894C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C229S19894C25__A1__8S19894C8__8S19894C1[] = {
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-448,-224),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19894C8D1Ev,_ZTvn16_n56_N8S19894C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19894C8D0Ev,_ZTvn16_n56_N8S19894C8D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C229S19894C25__A7__8S19894C8__8S19894C1[] = {
  ABISELECT(-464,-232),
  (VTBL_ENTRY)&(_ZTI8S19894C8[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C28D1Ev();
extern void _ZN9S19894C28D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C28__8S19894C1[] = {
  ABISELECT(496,252),
  ABISELECT(352,176),
  ABISELECT(472,240),
  ABISELECT(456,232),
  ABISELECT(120,60),
  ABISELECT(256,128),
  ABISELECT(408,204),
  ABISELECT(144,72),
  ABISELECT(416,208),
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(408,204),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C28D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C28D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C28__A2__8S19894C1[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C28__A2__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C28__A2__8S19894C1[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C28__A2__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C29D1Ev();
extern void _ZN9S19894C29D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(400,200),
  ABISELECT(408,204),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(400,200),
  ABISELECT(136,68),
  ABISELECT(112,56),
  ABISELECT(248,124),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  ABISELECT(136,68),
  ABISELECT(112,56),
  ABISELECT(248,124),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn248_N9S19894C23D1Ev,_ZThn124_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn248_N9S19894C23D0Ev,_ZThn124_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  ABISELECT(-248,-124),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S19894C23D1Ev,_ZThn56_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S19894C23D0Ev,_ZThn56_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C299S19894C28__A1__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn400_N9S19894C29D1Ev,_ZThn200_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn400_N9S19894C29D0Ev,_ZThn200_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-400,-200),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn208_N9S19894C29D1Ev,_ZThn104_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn208_N9S19894C29D0Ev,_ZThn104_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-208,-104),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C299S19894C28__8S19894C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn224_N9S19894C29D1Ev,_ZThn112_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn224_N9S19894C29D0Ev,_ZThn112_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-224,-112),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn408_N9S19894C29D1Ev,_ZThn204_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn408_N9S19894C29D0Ev,_ZThn204_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-408,-204),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(-424,-212),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn248_N9S19894C29D1Ev,_ZThn124_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn248_N9S19894C29D0Ev,_ZThn124_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-248,-124),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZThn112_N9S19894C29D1Ev,_ZThn56_N9S19894C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
extern void ABISELECT(_ZThn112_N9S19894C29D0Ev,_ZThn56_N9S19894C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C299S19894C28__8S19894C1[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C299S19894C28__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C28__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C28__8S19894C1[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C28__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S19894C28D1Ev,_ZThn4_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn8_N9S19894C28D0Ev,_ZThn4_N9S19894C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C29__9S19894C28__8S19894C1[] = {
  ABISELECT(400,200),
  ABISELECT(408,204),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(400,200),
  ABISELECT(136,68),
  ABISELECT(112,56),
  ABISELECT(248,124),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19894C28D1Ev,_ZThn4_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19894C28D0Ev,_ZThn4_N9S19894C28D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19894C28D1Ev,_ZTv0_n12_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn408_N9S19894C28D1Ev,_ZThn204_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19894C28D0Ev,_ZTv0_n12_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn408_N9S19894C28D0Ev,_ZThn204_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C28__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C28D1Ev,_ZTv0_n12_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C28D0Ev,_ZTv0_n12_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn216_N9S19894C28D1Ev,_ZThn108_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn216_N9S19894C28D0Ev,_ZThn108_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C28__8S19894C1[] = {
  ABISELECT(-216,-108),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn232_N9S19894C28D1Ev,_ZThn116_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn232_N9S19894C28D0Ev,_ZThn116_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C28__8S19894C1[] = {
  ABISELECT(-232,-116),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A2__9S19894C28__8S19894C1[] = {
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn416_N9S19894C28D1Ev,_ZThn208_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn416_N9S19894C28D0Ev,_ZThn208_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C28__8S19894C1[] = {
  ABISELECT(-416,-208),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-416,-208),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__A1__9S19894C28__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(-432,-216),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn256_N9S19894C28D1Ev,_ZThn128_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn256_N9S19894C28D0Ev,_ZThn128_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C28__8S19894C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn120_N9S19894C28D1Ev,_ZThn60_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn120_N9S19894C28D0Ev,_ZThn60_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C28__8S19894C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A4__9S19894C28__8S19894C1[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n144_N9S19894C28D1Ev,_ZTv0_n72_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn456_N9S19894C28D1Ev,_ZThn232_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N9S19894C28D0Ev,_ZTv0_n72_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn456_N9S19894C28D0Ev,_ZThn232_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C33__9S19894C28__8S19894C1[] = {
  ABISELECT(-456,-232),
  ABISELECT(-104,-56),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-40,-24),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-48,-28),
  ABISELECT(-312,-160),
  ABISELECT(-336,-172),
  ABISELECT(-200,-104),
  ABISELECT(-424,-216),
  ABISELECT(-432,-220),
  ABISELECT(-432,-220),
  ABISELECT(-408,-208),
  ABISELECT(-432,-220),
  ABISELECT(-456,-232),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N9S19894C28D1Ev,_ZTv0_n72_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N9S19894C28D0Ev,_ZTv0_n72_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S19894C28D1Ev,_ZTv0_n40_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn472_N9S19894C28D1Ev,_ZThn240_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19894C28D0Ev,_ZTv0_n40_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn472_N9S19894C28D0Ev,_ZThn240_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C12__9S19894C28__8S19894C1[] = {
  ABISELECT(-472,-240),
  ABISELECT(-328,-168),
  ABISELECT(-440,-224),
  ABISELECT(-424,-216),
  ABISELECT(-120,-64),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-472,-240),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C28D1Ev,_ZTv0_n40_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C28D0Ev,_ZTv0_n40_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__A3__9S19894C28__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(-352,-176),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C28__8S19894C1[] = {
  ABISELECT(-344,-176),
  ABISELECT(-464,-236),
  ABISELECT(-488,-248),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev)();
extern void ABISELECT(_ZThn496_N9S19894C28D1Ev,_ZThn252_N9S19894C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev)();
extern void ABISELECT(_ZThn496_N9S19894C28D0Ev,_ZThn252_N9S19894C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C35__9S19894C28__8S19894C1[] = {
  ABISELECT(-496,-252),
  0,
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-240,-124),
  ABISELECT(-472,-240),
  ABISELECT(-472,-240),
  ABISELECT(-448,-228),
  ABISELECT(-88,-48),
  ABISELECT(-496,-252),
  (VTBL_ENTRY)&(_ZTI9S19894C28[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C3__8S19894C1[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C3[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C3__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19894C3[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C3__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19894C3[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C4__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C4__8S19894C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C7__8S19894C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C9D1Ev();
extern void _ZN8S19894C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C9__8S19894C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19894C9D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__8S19894C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C108S19894C9__A2__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__8S19894C1[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C108S19894C9__8S19894C1[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__8S19894C9__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C9__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A2__8S19894C9__8S19894C1[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__8S19894C9__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__8S19894C9__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19894C9[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D1Ev,_ZThn16_N8S19894C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19894C9D0Ev,_ZThn16_N8S19894C9D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__8S19894C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C10__A3__8S19894C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__8S19894C1[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C10__A1__8S19894C1[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C13__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(304,152),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C13__8S19894C1[] = {
  0,
  ABISELECT(328,164),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C13__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(320,160),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C18__8S19894C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C18[0]),
};
extern void _ZN9S19894C20D1Ev();
extern void _ZN9S19894C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C20__8S19894C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-64),
  ABISELECT(40,20),
  ABISELECT(-152,-76),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN9S19894C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C20__A1__8S19894C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C20__A5__8S19894C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C20__A5__8S19894C1[] = {
  0,
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C20__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C20__A1__8S19894C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C20__A1__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C20__A1__8S19894C1[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C20__A1__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C23D1Ev,_ZThn28_N9S19894C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C23D0Ev,_ZThn28_N9S19894C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C20__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C20__8S19894C1[] = {
  ABISELECT(80,40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C239S19894C20__8S19894C1[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C20__8S19894C1[] = {
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C20__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C20__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A__9S19894C20__8S19894C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C20__8S19894C1[] = {
  0,
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S19894C20D1Ev,_ZThn20_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn40_N9S19894C20D0Ev,_ZThn20_N9S19894C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C20__8S19894C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C20__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C20D1Ev,_ZThn28_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C20D0Ev,_ZThn28_N9S19894C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C20__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C20__8S19894C1[] = {
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn24_N9S19894C20D1Ev,_ZThn12_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S19894C20D0Ev,_ZThn12_N9S19894C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C23__9S19894C20__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19894C20D1Ev,_ZThn12_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19894C20D0Ev,_ZThn12_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S19894C20D1Ev,_ZThn40_N9S19894C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S19894C20D0Ev,_ZThn40_N9S19894C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C20__8S19894C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C20__8S19894C1[] = {
  ABISELECT(56,28),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C20__8S19894C1[] = {
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C20__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S19894C20[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C21D1Ev();
extern void _ZN9S19894C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C21__8S19894C1[] = {
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C21D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C21__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C21__8S19894C1[] = {
  0,
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C21D1Ev,_ZThn8_N9S19894C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C21D0Ev,_ZThn8_N9S19894C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C21__8S19894C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__8S19894C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C21[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C22__8S19894C1[] = {
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C22__A2__8S19894C1[] = {
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C22__A6__8S19894C1[] = {
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A6__8S19894C1[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A2__8S19894C1[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C22__8S19894C1[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C24D1Ev();
extern void _ZN9S19894C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C24__8S19894C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C24D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C24__8S19894C1[] = {
  ABISELECT(136,68),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D1Ev,_ZTv0_n24_N9S19894C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C24D0Ev,_ZTv0_n24_N9S19894C24D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C24__8S19894C1[] = {
  0,
  ABISELECT(232,116),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__8S19894C1[] = {
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C24[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN9S19894C25D1Ev();
extern void _ZN9S19894C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C25__8S19894C1[] = {
  ABISELECT(72,36),
  ABISELECT(-192,-96),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-304,-152),
  ABISELECT(-272,-136),
  ABISELECT(-312,-156),
  ABISELECT(-312,-156),
  ABISELECT(-288,-144),
  ABISELECT(56,28),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN9S19894C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C25D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C189S19894C25__A1__8S19894C1[] = {
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C18[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C26D1Ev();
extern void _ZN9S19894C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C269S19894C25__8S19894C1[] = {
  0,
  ABISELECT(-120,-60),
  ABISELECT(-288,-144),
  ABISELECT(40,20),
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C26D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev)();
extern void ABISELECT(_ZThn40_N9S19894C26D1Ev,_ZThn20_N9S19894C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev)();
extern void ABISELECT(_ZThn40_N9S19894C26D0Ev,_ZThn20_N9S19894C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(-40,-20),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-360,-180),
  ABISELECT(-328,-164),
  ABISELECT(-368,-184),
  ABISELECT(-368,-184),
  ABISELECT(-344,-172),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(304,152),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__9S19894C269S19894C25__8S19894C1[] = {
  0,
  ABISELECT(328,164),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(288,144),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(288,144),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D1Ev,_ZTv0_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C26D0Ev,_ZTv0_n32_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C269S19894C25__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(320,160),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D1Ev,_ZTvn16_n32_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C26D0Ev,_ZTvn16_n32_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(240,120),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(120,60),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D1Ev,_ZTv0_n24_N9S19894C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C26D0Ev,_ZTv0_n24_N9S19894C26D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C269S19894C25__8S19894C1[] = {
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C26[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C22D1Ev();
extern void _ZN9S19894C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C229S19894C25__A1__8S19894C1[] = {
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C22D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C10D1Ev();
extern void _ZN9S19894C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C109S19894C229S19894C25__A3__8S19894C1[] = {
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C10D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C1[] = {
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C1[] = {
  0,
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C109S19894C229S19894C25__A3__8S19894C1[] = {
  0,
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI9S19894C10[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C229S19894C25__A1__8S19894C1[] = {
  0,
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI9S19894C22[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn16_N9S19894C25D1Ev,_ZThn8_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C25D0Ev,_ZThn8_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C26__9S19894C25__8S19894C1[] = {
  0,
  ABISELECT(-120,-60),
  ABISELECT(-288,-144),
  ABISELECT(40,20),
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19894C25D1Ev,_ZThn8_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19894C25D0Ev,_ZThn8_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn56_N9S19894C25D1Ev,_ZThn28_N9S19894C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev)();
extern void ABISELECT(_ZThn56_N9S19894C25D0Ev,_ZThn28_N9S19894C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C27__9S19894C25__8S19894C1[] = {
  ABISELECT(-56,-28),
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-360,-180),
  ABISELECT(-328,-164),
  ABISELECT(-368,-184),
  ABISELECT(-368,-184),
  ABISELECT(-344,-172),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C25__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(288,144),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__9S19894C25__8S19894C1[] = {
  0,
  ABISELECT(312,156),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C25__8S19894C1[] = {
  ABISELECT(272,136),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(272,136),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C25D1Ev,_ZTv0_n32_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C25D0Ev,_ZTv0_n32_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C25__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(304,152),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C25__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C25D1Ev,_ZTvn16_n32_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C25D0Ev,_ZTvn16_n32_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C25__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(240,120),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C25D1Ev,_ZTvn16_n32_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C25D0Ev,_ZTvn16_n32_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C25__8S19894C1[] = {
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C25__8S19894C1[] = {
  ABISELECT(104,52),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C25D1Ev,_ZTv0_n24_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C25D0Ev,_ZTv0_n24_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C25__8S19894C1[] = {
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZThn32_N9S19894C25D1Ev,_ZThn16_N9S19894C25D1Ev)();
extern void ABISELECT(_ZThn32_N9S19894C25D0Ev,_ZThn16_N9S19894C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__A__9S19894C25__8S19894C1[] = {
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-344,-172),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C25[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19894C25D1Ev,_ZThn16_N9S19894C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19894C25D0Ev,_ZThn16_N9S19894C25D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
extern void _ZN9S19894C27D1Ev();
extern void _ZN9S19894C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C27__8S19894C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-160,-80),
  ABISELECT(-360,-180),
  ABISELECT(-328,-164),
  ABISELECT(-368,-184),
  ABISELECT(-368,-184),
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C27D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C27__A1__8S19894C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-368,-184),
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C27__A1__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C27__A1__8S19894C1[] = {
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C27__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__9S19894C27__8S19894C1[] = {
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19894C9__9S19894C27__8S19894C1[] = {
  ABISELECT(328,164),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(328,164),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D1Ev,_ZTv0_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C27D0Ev,_ZTv0_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C27__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(360,180),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C78S19894C9__A1__9S19894C27__8S19894C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(312,156),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C108S19894C9__9S19894C27__8S19894C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(296,148),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D1Ev,_ZTvn16_n32_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19894C27D0Ev,_ZTvn16_n32_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__8S19894C1[] = {
  ABISELECT(280,140),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C27__8S19894C1[] = {
  ABISELECT(160,80),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D1Ev,_ZTv0_n24_N9S19894C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C27D0Ev,_ZTv0_n24_N9S19894C27D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__8S19894C1[] = {
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C27__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19894C27[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C31D1Ev();
extern void _ZN9S19894C31D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C31__8S19894C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C31D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C329S19894C31__8S19894C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C329S19894C31__A8__8S19894C1[] = {
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A8__8S19894C1[] = {
  0,
  ABISELECT(392,196),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__A2__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__A2__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(384,192),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__A2__8S19894C1[] = {
  0,
  ABISELECT(408,204),
  (VTBL_ENTRY)&(_ZTI8S19894C4[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C329S19894C31__8S19894C1[] = {
  0,
  ABISELECT(392,196),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C329S19894C31__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C329S19894C31__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI9S19894C32[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C31__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C31__8S19894C1[] = {
  0,
  ABISELECT(392,196),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C32__9S19894C31__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C31__8S19894C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19894C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D1Ev,_ZTv0_n12_N9S19894C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C31D0Ev,_ZTv0_n12_N9S19894C31D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C33D1Ev();
extern void _ZN9S19894C33D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C33__8S19894C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-40,-24),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-48,-28),
  ABISELECT(-312,-160),
  ABISELECT(-336,-172),
  ABISELECT(-200,-104),
  ABISELECT(-424,-216),
  ABISELECT(-432,-220),
  ABISELECT(-432,-220),
  ABISELECT(-408,-208),
  ABISELECT(-432,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C33D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C33D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C29D1Ev();
extern void _ZN9S19894C29D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-40,-24),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-48,-28),
  ABISELECT(-312,-160),
  ABISELECT(-336,-172),
  ABISELECT(-200,-104),
  ABISELECT(-424,-216),
  ABISELECT(-432,-220),
  ABISELECT(-432,-220),
  ABISELECT(-408,-208),
  ABISELECT(-432,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C29D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C23D1Ev();
extern void _ZN9S19894C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  ABISELECT(-312,-160),
  ABISELECT(-336,-172),
  ABISELECT(-200,-104),
  ABISELECT(-424,-216),
  ABISELECT(-432,-220),
  ABISELECT(-432,-220),
  ABISELECT(-408,-208),
  ABISELECT(-432,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C23D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[] = {
  ABISELECT(-424,-216),
  ABISELECT(-432,-220),
  ABISELECT(-432,-220),
  ABISELECT(-408,-208),
  ABISELECT(-432,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(408,208),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[] = {
  0,
  ABISELECT(432,220),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(424,216),
  (VTBL_ENTRY)&(_ZTI9S19894C13[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  ABISELECT(200,104),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  ABISELECT(336,172),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  0,
  ABISELECT(432,220),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__A1__9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(408,208),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C239S19894C299S19894C33__A2__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(424,216),
  (VTBL_ENTRY)&(_ZTI9S19894C23[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(240,124),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(408,208),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C299S19894C33__A1__8S19894C1[] = {
  0,
  ABISELECT(432,220),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(224,116),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(200,104),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(336,172),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C299S19894C33__A1__8S19894C1[] = {
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C299S19894C33__A1__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(424,216),
  (VTBL_ENTRY)&(_ZTI9S19894C29[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19894C33__8S19894C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C33D1Ev,_ZTv0_n12_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19894C33D0Ev,_ZTv0_n12_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C21__9S19894C33__8S19894C1[] = {
  ABISELECT(240,124),
  ABISELECT(16,8),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-168,-84),
  ABISELECT(-192,-96),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C33__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(408,208),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C33__8S19894C1[] = {
  0,
  ABISELECT(432,220),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C22__9S19894C33__8S19894C1[] = {
  ABISELECT(224,116),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C33__8S19894C1[] = {
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C31__9S19894C33__8S19894C1[] = {
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-368,-184),
  ABISELECT(-272,-136),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(-392,-196),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C33D1Ev,_ZTv0_n44_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19894C33D0Ev,_ZTv0_n44_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C49S19894C329S19894C31__9S19894C33__8S19894C1[] = {
  ABISELECT(-408,-204),
  ABISELECT(-408,-204),
  ABISELECT(-384,-192),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C33__8S19894C1[] = {
  ABISELECT(200,104),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D1Ev,_ZTv0_n32_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C33D0Ev,_ZTv0_n32_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__A1__9S19894C33__8S19894C1[] = {
  ABISELECT(336,172),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D1Ev,_ZTv0_n24_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C33D0Ev,_ZTv0_n24_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C33__8S19894C1[] = {
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__A1__9S19894C33__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(424,216),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev)();
extern void ABISELECT(_ZThn16_N9S19894C33D1Ev,_ZThn8_N9S19894C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev)();
extern void ABISELECT(_ZThn16_N9S19894C33D0Ev,_ZThn8_N9S19894C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19894C12__9S19894C33__8S19894C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-328,-168),
  ABISELECT(-440,-224),
  ABISELECT(-424,-216),
  ABISELECT(-120,-64),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__A1__9S19894C33__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__9S19894C33__8S19894C1[] = {
  ABISELECT(-344,-176),
  ABISELECT(-464,-236),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19894C33[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C12D1Ev();
extern void _ZN9S19894C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C12__A1__8S19894C1[] = {
  ABISELECT(-328,-168),
  ABISELECT(-440,-224),
  ABISELECT(-424,-216),
  ABISELECT(-120,-64),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C12D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C79S19894C12__A9__8S19894C1[] = {
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  ABISELECT(-448,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A9__8S19894C1[] = {
  0,
  ABISELECT(448,228),
  (VTBL_ENTRY)&(_ZTI8S19894C7[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C159S19894C12__A2__8S19894C1[] = {
  ABISELECT(-344,-176),
  ABISELECT(-464,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C15[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C13__9S19894C12__A1__8S19894C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-304,-152),
  ABISELECT(-328,-164),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C12__A1__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(424,216),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C12__A1__8S19894C1[] = {
  0,
  ABISELECT(448,228),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN8S19894C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C4__9S19894C12__A1__8S19894C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(440,224),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN8S19894C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19894C15__9S19894C12__A1__8S19894C1[] = {
  ABISELECT(-344,-176),
  ABISELECT(-464,-236),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19894C12[0]),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void _ZN9S19894C35D1Ev();
extern void _ZN9S19894C35D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19894C35__8S19894C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-240,-124),
  ABISELECT(-472,-240),
  ABISELECT(-472,-240),
  ABISELECT(-448,-228),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S19894C35D1Ev,
  (VTBL_ENTRY)&_ZN9S19894C35D0Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19894C7__9S19894C35__8S19894C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(448,228),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt__9S19894C35__8S19894C1[] = {
  0,
  ABISELECT(472,240),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C24__9S19894C35__8S19894C1[] = {
  ABISELECT(240,124),
  ABISELECT(-112,-56),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-136,-68),
  ABISELECT(-232,-116),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C35D1Ev,_ZTv0_n32_N9S19894C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19894C35D0Ev,_ZTv0_n32_N9S19894C35D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19894C10__9S19894C35__8S19894C1[] = {
  ABISELECT(376,192),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(376,192),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C35D1Ev,_ZTv0_n24_N9S19894C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19894C35D0Ev,_ZTv0_n24_N9S19894C35D0Ev),
};
extern void _ZN11S19894C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C35__8S19894C1[] = {
  ABISELECT(360,184),
  (VTBL_ENTRY)&(_ZTI9S19894C35[0]),
  (VTBL_ENTRY)&_ZN11S19894C5_nt2v1Ev,
};
static  VTT_ENTRY vtt_S19894C1[] = {
  {&(_ZTV8S19894C1[26]),  26,343},
  {&(_tg__ZTV8S19894C8__8S19894C1[20]),  20,23},
  {&(_tg__ZTV9S19894C118S19894C8__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C129S19894C118S19894C8__8S19894C1[9]),  9,12},
  {&(_tg__ZTV8S19894C79S19894C129S19894C118S19894C8__A4__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C129S19894C118S19894C8__A4__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C159S19894C129S19894C118S19894C8__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C13__9S19894C129S19894C118S19894C8__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C129S19894C118S19894C8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C129S19894C118S19894C8__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C129S19894C118S19894C8__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C15__9S19894C129S19894C118S19894C8__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C10__9S19894C118S19894C8__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C118S19894C8__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C118S19894C8__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C13__9S19894C118S19894C8__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__A1__9S19894C118S19894C8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C118S19894C8__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C118S19894C8__8S19894C1[4]),  4,4},
  {&(_tg__ZTV8S19894C9__9S19894C118S19894C8__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C78S19894C9__A3__9S19894C118S19894C8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__A1__9S19894C118S19894C8__8S19894C1[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C118S19894C8__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C9__8S19894C8__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C4__8S19894C8__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A2__8S19894C8__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C78S19894C9__A1__8S19894C8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__8S19894C8__8S19894C1[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A3__8S19894C8__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C10__A1__8S19894C8__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A4__8S19894C8__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C269S19894C25__8S19894C8__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C159S19894C129S19894C11__8S19894C8__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C18__8S19894C8__8S19894C1[3]),  3,3},
  {&(_tg__ZTV9S19894C20__8S19894C8__8S19894C1[13]),  13,15},
  {&(_tg__ZTV8S19894C79S19894C20__A5__8S19894C8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C21__8S19894C8__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C22__8S19894C8__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__8S19894C8__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C239S19894C20__8S19894C8__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C24__8S19894C8__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C25__8S19894C8__8S19894C1[15]),  15,17},
  {&(_tg__ZTV9S19894C269S19894C25__8S19894C8__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C27__8S19894C8__8S19894C1[12]),  12,16},
  {&(_tg__ZTV9S19894C229S19894C25__A1__8S19894C8__8S19894C1[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C229S19894C25__A7__8S19894C8__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C28__8S19894C1[19]),  19,22},
  {&(_tg__ZTV9S19894C139S19894C28__A2__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C28__A2__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C28__A2__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C28__A2__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C299S19894C28__8S19894C1[15]),  15,18},
  {&(_tg__ZTV9S19894C239S19894C299S19894C28__A1__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C299S19894C28__A3__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C299S19894C28__A1__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C299S19894C28__A1__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C239S19894C299S19894C28__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C299S19894C28__A1__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C299S19894C28__A1__8S19894C1[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C299S19894C28__A1__8S19894C1[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C299S19894C28__8S19894C1[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C299S19894C28__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C299S19894C28__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C299S19894C28__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C299S19894C28__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C299S19894C28__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C299S19894C28__8S19894C1[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C299S19894C28__8S19894C1[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C299S19894C28__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C299S19894C28__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C299S19894C28__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C299S19894C28__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C7__9S19894C28__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C28__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C28__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C29__9S19894C28__8S19894C1[15]),  15,18},
  {&(_tg__ZTV12S19894C30_nt__9S19894C28__8S19894C1[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C28__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C22__9S19894C28__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A2__9S19894C28__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C28__8S19894C1[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__A1__9S19894C28__8S19894C1[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C28__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C28__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A4__9S19894C28__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C33__9S19894C28__8S19894C1[18]),  18,21},
  {&(_tg__ZTV9S19894C12__9S19894C28__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C13__A3__9S19894C28__8S19894C1[7]),  7,8},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C28__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C35__9S19894C28__8S19894C1[11]),  11,14},
  {&(_ZTV8S19894C1[80]),  80,343},
  {&(_ZTV8S19894C1[88]),  88,343},
  {&(_ZTV8S19894C1[95]),  95,343},
  {&(_ZTV8S19894C1[80]),  80,343},
  {&(_ZTV8S19894C1[104]),  104,343},
  {&(_ZTV8S19894C1[112]),  112,343},
  {&(_ZTV8S19894C1[118]),  118,343},
  {&(_ZTV8S19894C1[123]),  123,343},
  {&(_ZTV8S19894C1[130]),  130,343},
  {&(_ZTV8S19894C1[135]),  135,343},
  {&(_ZTV8S19894C1[235]),  235,343},
  {&(_ZTV8S19894C1[33]),  33,343},
  {&(_ZTV8S19894C1[139]),  139,343},
  {&(_ZTV8S19894C1[152]),  152,343},
  {&(_ZTV8S19894C1[159]),  159,343},
  {&(_ZTV8S19894C1[181]),  181,343},
  {&(_ZTV8S19894C1[190]),  190,343},
  {&(_ZTV8S19894C1[195]),  195,343},
  {&(_ZTV8S19894C1[170]),  170,343},
  {&(_ZTV8S19894C1[204]),  204,343},
  {&(_ZTV8S19894C1[222]),  222,343},
  {&(_ZTV8S19894C1[235]),  235,343},
  {&(_ZTV8S19894C1[261]),  261,343},
  {&(_ZTV8S19894C1[243]),  243,343},
  {&(_ZTV8S19894C1[248]),  248,343},
  {&(_ZTV8S19894C1[52]),  52,343},
  {&(_ZTV8S19894C1[70]),  70,343},
  {&(_ZTV8S19894C1[268]),  268,343},
  {&(_ZTV8S19894C1[281]),  281,343},
  {&(_ZTV8S19894C1[289]),  289,343},
  {&(_ZTV8S19894C1[309]),  309,343},
  {&(_ZTV8S19894C1[322]),  322,343},
  {&(_ZTV8S19894C1[329]),  329,343},
  {&(_ZTV8S19894C1[340]),  340,343},
  {&(_tg__ZTV8S19894C3__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C4__8S19894C3__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C3__8S19894C1[5]),  5,6},
  {&(_tg__ZTV8S19894C3__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C4__8S19894C1[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C4__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C4__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C7__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C7__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C9__8S19894C1[6]),  6,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C78S19894C9__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C108S19894C9__8S19894C1[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C108S19894C9__A2__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C108S19894C9__A2__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C108S19894C9__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__8S19894C9__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C7__8S19894C9__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A2__8S19894C9__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C7__A__8S19894C9__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C10__8S19894C9__8S19894C1[5]),  5,8},
  {&(_tg__ZTV9S19894C10__A1__8S19894C1[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C10__A3__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C10__A3__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C10__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C13__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C13__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C13__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C13__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C18__8S19894C1[3]),  3,3},
  {&(_tg__ZTV9S19894C20__8S19894C1[12]),  12,14},
  {&(_tg__ZTV9S19894C159S19894C20__A1__8S19894C1[4]),  4,4},
  {&(_tg__ZTV8S19894C79S19894C20__A5__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C20__A5__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C239S19894C20__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C20__A1__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C20__A1__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C20__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C20__A1__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C20__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C20__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C239S19894C20__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C20__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C20__8S19894C1[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C20__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C7__A__9S19894C20__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C20__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C21__9S19894C20__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C7__A1__9S19894C20__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C22__9S19894C20__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C20__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C23__9S19894C20__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C24__9S19894C20__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C20__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C20__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C4__9S19894C20__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C21__8S19894C1[7]),  7,10},
  {&(_tg__ZTV8S19894C7__9S19894C21__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C21__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C21__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C21__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C22__8S19894C1[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C22__A2__8S19894C1[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C22__A6__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C22__A6__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C22__A2__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C22__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C24__8S19894C1[7]),  7,10},
  {&(_tg__ZTV9S19894C10__9S19894C24__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C24__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C24__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C25__8S19894C1[13]),  13,15},
  {&(_tg__ZTV9S19894C189S19894C25__A1__8S19894C1[3]),  3,3},
  {&(_tg__ZTV9S19894C269S19894C25__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C27__9S19894C269S19894C25__8S19894C1[12]),  12,16},
  {&(_tg__ZTV8S19894C7__9S19894C269S19894C25__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__9S19894C269S19894C25__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C9__9S19894C269S19894C25__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C269S19894C25__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C269S19894C25__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C269S19894C25__8S19894C1[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C269S19894C25__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C269S19894C25__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C269S19894C25__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C269S19894C25__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C229S19894C25__A1__8S19894C1[5]),  5,8},
  {&(_tg__ZTV9S19894C109S19894C229S19894C25__A3__8S19894C1[5]),  5,8},
  {&(_tg__ZTV8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C109S19894C229S19894C25__A7__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C109S19894C229S19894C25__A3__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C229S19894C25__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C26__9S19894C25__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C27__9S19894C25__8S19894C1[12]),  12,16},
  {&(_tg__ZTV8S19894C7__9S19894C25__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__9S19894C25__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C9__9S19894C25__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C25__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C25__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C25__8S19894C1[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C25__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C25__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C25__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C26__9S19894C25__8S19894C1[11]),  11,14},
  {&(_tg__ZTV9S19894C22__A__9S19894C25__8S19894C1[5]),  5,8},
  {&(_tg__ZTV9S19894C27__8S19894C1[9]),  9,13},
  {&(_tg__ZTV8S19894C49S19894C27__A1__8S19894C1[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C27__A1__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C27__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C7__9S19894C27__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__9S19894C27__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C9__9S19894C27__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C4__A1__9S19894C27__8S19894C1[7]),  7,9},
  {&(_tg__ZTV8S19894C78S19894C9__A1__9S19894C27__8S19894C1[5]),  5,6},
  {&(_tg__ZTV9S19894C108S19894C9__9S19894C27__8S19894C1[5]),  5,8},
  {&(_tg__ZTV11S19894C5_nt9S19894C108S19894C9__A4__9S19894C27__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C22__9S19894C27__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A5__9S19894C27__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C13__9S19894C27__8S19894C1[7]),  7,8},
  {&(_tg__ZTV9S19894C31__8S19894C1[9]),  9,12},
  {&(_tg__ZTV9S19894C329S19894C31__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C79S19894C329S19894C31__A8__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C329S19894C31__A8__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__A2__8S19894C1[5]),  5,7},
  {&(_tg__ZTV8S19894C7__8S19894C49S19894C329S19894C31__A2__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__A1__8S19894C49S19894C329S19894C31__A2__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt__9S19894C329S19894C31__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C329S19894C31__8S19894C1[5]),  5,7},
  {&(_tg__ZTV8S19894C7__A1__9S19894C329S19894C31__8S19894C1[5]),  5,6},
  {&(_tg__ZTV8S19894C7__9S19894C31__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C31__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C49S19894C32__9S19894C31__8S19894C1[5]),  5,7},
  {&(_tg__ZTV12S19894C30_nt__9S19894C31__8S19894C1[3]),  3,5},
  {&(_tg__ZTV9S19894C33__8S19894C1[17]),  17,20},
  {&(_tg__ZTV9S19894C299S19894C33__A1__8S19894C1[15]),  15,18},
  {&(_tg__ZTV9S19894C239S19894C299S19894C33__A2__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C139S19894C239S19894C299S19894C33__A4__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C24__9S19894C239S19894C299S19894C33__A2__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C239S19894C299S19894C33__A2__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt__9S19894C239S19894C299S19894C33__A2__8S19894C1[3]),  3,4},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A1__9S19894C239S19894C299S19894C33__A2__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C7__A1__9S19894C239S19894C299S19894C33__A2__8S19894C1[5]),  5,6},
  {&(_tg__ZTV8S19894C4__9S19894C239S19894C299S19894C33__A2__8S19894C1[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C299S19894C33__A1__8S19894C1[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C299S19894C33__A1__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C299S19894C33__A1__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C299S19894C33__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C299S19894C33__A1__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C299S19894C33__A1__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C299S19894C33__A1__8S19894C1[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C299S19894C33__A1__8S19894C1[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C299S19894C33__A1__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C299S19894C33__A1__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C299S19894C33__A1__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C299S19894C33__A1__8S19894C1[7]),  7,9},
  {&(_tg__ZTV12S19894C30_nt__9S19894C33__8S19894C1[3]),  3,5},
  {&(_tg__ZTV9S19894C21__9S19894C33__8S19894C1[8]),  8,11},
  {&(_tg__ZTV8S19894C7__9S19894C33__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C33__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C22__9S19894C33__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C109S19894C22__A1__9S19894C33__8S19894C1[2]),  2,3},
  {&(_tg__ZTV9S19894C31__9S19894C33__8S19894C1[11]),  11,14},
  {&(_tg__ZTV8S19894C49S19894C329S19894C31__9S19894C33__8S19894C1[5]),  5,7},
  {&(_tg__ZTV9S19894C24__9S19894C33__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__A1__9S19894C33__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A3__9S19894C33__8S19894C1[2]),  2,3},
  {&(_tg__ZTV8S19894C4__A1__9S19894C33__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C12__9S19894C33__8S19894C1[10]),  10,13},
  {&(_tg__ZTV9S19894C13__A1__9S19894C33__8S19894C1[7]),  7,8},
  {&(_tg__ZTV9S19894C159S19894C12__9S19894C33__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C12__A1__8S19894C1[9]),  9,12},
  {&(_tg__ZTV8S19894C79S19894C12__A9__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__8S19894C79S19894C12__A9__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C159S19894C12__A2__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C13__9S19894C12__A1__8S19894C1[7]),  7,8},
  {&(_tg__ZTV8S19894C7__9S19894C12__A1__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C12__A1__8S19894C1[3]),  3,4},
  {&(_tg__ZTV8S19894C4__9S19894C12__A1__8S19894C1[7]),  7,9},
  {&(_tg__ZTV9S19894C15__9S19894C12__A1__8S19894C1[4]),  4,4},
  {&(_tg__ZTV9S19894C35__8S19894C1[9]),  9,12},
  {&(_tg__ZTV8S19894C7__9S19894C35__8S19894C1[5]),  5,6},
  {&(_tg__ZTV11S19894C5_nt__9S19894C35__8S19894C1[3]),  3,4},
  {&(_tg__ZTV9S19894C24__9S19894C35__8S19894C1[8]),  8,11},
  {&(_tg__ZTV9S19894C10__9S19894C35__8S19894C1[6]),  6,9},
  {&(_tg__ZTV11S19894C5_nt9S19894C10__A2__9S19894C35__8S19894C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S19894C1[];
extern  VTBL_ENTRY _ZTV8S19894C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19894C1[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C33D0Ev,_ZTv0_n40_N9S19894C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C33D0Ev,_ZThn8_N9S19894C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C33D1Ev,_ZTv0_n40_N9S19894C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C33D1Ev,_ZThn8_N9S19894C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C25D0Ev,_ZTv0_n48_N9S19894C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C25D0Ev,_ZThn28_N9S19894C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C25D1Ev,_ZTv0_n48_N9S19894C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C25D1Ev,_ZThn28_N9S19894C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D0Ev,_ZTv0_n48_N9S19894C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C26D0Ev,_ZThn20_N9S19894C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19894C26D1Ev,_ZTv0_n48_N9S19894C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C26D1Ev,_ZThn20_N9S19894C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D0Ev,_ZTv0_n24_N9S19894C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C21D0Ev,_ZThn8_N9S19894C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C21D1Ev,_ZTv0_n24_N9S19894C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19894C21D1Ev,_ZThn8_N9S19894C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C20D0Ev,_ZTv0_n24_N9S19894C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C20D0Ev,_ZThn28_N9S19894C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C20D1Ev,_ZTv0_n24_N9S19894C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C20D1Ev,_ZThn28_N9S19894C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C20D0Ev,_ZTv0_n32_N9S19894C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C20D0Ev,_ZThn40_N9S19894C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C20D0Ev,_ZThn20_N9S19894C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C20D1Ev,_ZTv0_n32_N9S19894C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19894C20D1Ev,_ZThn40_N9S19894C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19894C20D1Ev,_ZThn20_N9S19894C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C28D0Ev,_ZTv0_n40_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19894C28D0Ev,_ZThn240_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19894C28D1Ev,_ZTv0_n40_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19894C28D1Ev,_ZThn240_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N9S19894C28D0Ev,_ZTv0_n72_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19894C28D0Ev,_ZThn232_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N9S19894C28D1Ev,_ZTv0_n72_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19894C28D1Ev,_ZThn232_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C28D0Ev,_ZTv0_n44_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19894C28D0Ev,_ZThn252_N9S19894C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19894C28D0Ev,_ZThn208_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C28D1Ev,_ZTv0_n44_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19894C28D1Ev,_ZThn252_N9S19894C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19894C28D1Ev,_ZThn208_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C28D0Ev,_ZTv0_n24_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19894C28D0Ev,_ZThn60_N9S19894C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19894C28D0Ev,_ZThn116_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C28D1Ev,_ZTv0_n24_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19894C28D1Ev,_ZThn60_N9S19894C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19894C28D1Ev,_ZThn116_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C28D0Ev,_ZTv0_n32_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19894C28D0Ev,_ZThn128_N9S19894C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C28D0Ev,_ZThn108_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C28D1Ev,_ZTv0_n32_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19894C28D1Ev,_ZThn128_N9S19894C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19894C28D1Ev,_ZThn108_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C28D0Ev,_ZTv0_n12_N9S19894C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19894C28D0Ev,_ZThn204_N9S19894C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C28D1Ev,_ZTv0_n12_N9S19894C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19894C28D1Ev,_ZThn204_N9S19894C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D0Ev,_ZTv0_n44_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19894C29D0Ev,_ZThn204_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19894C29D1Ev,_ZTv0_n44_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19894C29D1Ev,_ZThn204_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D0Ev,_ZTv0_n24_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19894C29D0Ev,_ZThn56_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19894C29D0Ev,_ZThn112_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C29D1Ev,_ZTv0_n24_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19894C29D1Ev,_ZThn56_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19894C29D1Ev,_ZThn112_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D0Ev,_ZTv0_n32_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S19894C29D0Ev,_ZThn124_N9S19894C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19894C29D0Ev,_ZThn104_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C29D1Ev,_ZTv0_n32_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S19894C29D1Ev,_ZThn124_N9S19894C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19894C29D1Ev,_ZThn104_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D0Ev,_ZTv0_n12_N9S19894C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19894C29D0Ev,_ZThn200_N9S19894C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19894C29D1Ev,_ZTv0_n12_N9S19894C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19894C29D1Ev,_ZThn200_N9S19894C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D0Ev,_ZTv0_n24_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19894C23D0Ev,_ZThn56_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C23D1Ev,_ZTv0_n24_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19894C23D1Ev,_ZThn56_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D0Ev,_ZTv0_n32_N9S19894C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C23D0Ev,_ZThn28_N9S19894C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S19894C23D0Ev,_ZThn124_N9S19894C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C23D1Ev,_ZTv0_n32_N9S19894C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19894C23D1Ev,_ZThn28_N9S19894C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S19894C23D1Ev,_ZThn124_N9S19894C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19894C8D0Ev,_ZTv0_n48_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19894C8D0Ev,_ZThn236_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19894C8D1Ev,_ZTv0_n48_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19894C8D1Ev,_ZThn236_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19894C8D0Ev,_ZTv0_n56_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19894C8D0Ev,_ZThn208_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19894C8D1Ev,_ZTv0_n56_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19894C8D1Ev,_ZThn208_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19894C8D0Ev,_ZTv0_n52_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19894C8D0Ev,_ZThn128_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19894C8D1Ev,_ZTv0_n52_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19894C8D1Ev,_ZThn128_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19894C8D0Ev,_ZTv0_n24_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19894C8D0Ev,_ZThn156_N8S19894C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19894C8D0Ev,_ZThn100_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19894C8D1Ev,_ZTv0_n24_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19894C8D1Ev,_ZThn156_N8S19894C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19894C8D1Ev,_ZThn100_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19894C8D0Ev,_ZTv0_n32_N8S19894C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19894C8D0Ev,_ZThn168_N8S19894C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S19894C8D0Ev,_ZThn148_N8S19894C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19894C8D0Ev,_ZThn72_N8S19894C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19894C8D1Ev,_ZTv0_n32_N8S19894C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19894C8D1Ev,_ZThn168_N8S19894C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S19894C8D1Ev,_ZThn148_N8S19894C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19894C8D1Ev,_ZThn72_N8S19894C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C11D0Ev,_ZTv0_n32_N9S19894C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C11D0Ev,_ZThn72_N9S19894C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19894C11D1Ev,_ZTv0_n32_N9S19894C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19894C11D1Ev,_ZThn72_N9S19894C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C11D0Ev,_ZTv0_n24_N9S19894C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19894C11D0Ev,_ZThn100_N9S19894C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19894C11D1Ev,_ZTv0_n24_N9S19894C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19894C11D1Ev,_ZThn100_N9S19894C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19894C1D0Ev,_ZTv0_n40_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S19894C1D0Ev,_ZThn280_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19894C1D1Ev,_ZTv0_n40_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S19894C1D1Ev,_ZThn280_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S19894C1D0Ev,_ZTv0_n72_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N8S19894C1D0Ev,_ZThn272_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S19894C1D1Ev,_ZTv0_n72_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N8S19894C1D1Ev,_ZThn272_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19894C1D0Ev,_ZTv0_n44_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19894C1D0Ev,_ZThn292_N8S19894C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19894C1D0Ev,_ZThn248_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19894C1D1Ev,_ZTv0_n44_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19894C1D1Ev,_ZThn292_N8S19894C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19894C1D1Ev,_ZThn248_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19894C1D0Ev,_ZTv0_n12_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N8S19894C1D0Ev,_ZThn244_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19894C1D1Ev,_ZTv0_n12_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N8S19894C1D1Ev,_ZThn244_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19894C1D0Ev,_ZTv0_n48_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19894C1D0Ev,_ZThn236_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19894C1D1Ev,_ZTv0_n48_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19894C1D1Ev,_ZThn236_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19894C1D0Ev,_ZTv0_n56_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19894C1D0Ev,_ZThn208_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19894C1D1Ev,_ZTv0_n56_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19894C1D1Ev,_ZThn208_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19894C1D0Ev,_ZTv0_n52_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19894C1D0Ev,_ZThn128_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19894C1D1Ev,_ZTv0_n52_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19894C1D1Ev,_ZThn128_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19894C1D0Ev,_ZTv0_n24_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19894C1D0Ev,_ZThn156_N8S19894C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19894C1D0Ev,_ZThn100_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19894C1D1Ev,_ZTv0_n24_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19894C1D1Ev,_ZThn156_N8S19894C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19894C1D1Ev,_ZThn100_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19894C1D0Ev,_ZTv0_n32_N8S19894C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19894C1D0Ev,_ZThn168_N8S19894C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S19894C1D0Ev,_ZThn148_N8S19894C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19894C1D0Ev,_ZThn72_N8S19894C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19894C1D1Ev,_ZTv0_n32_N8S19894C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19894C1D1Ev,_ZThn168_N8S19894C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S19894C1D1Ev,_ZThn148_N8S19894C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19894C1D1Ev,_ZThn72_N8S19894C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19894C1 = {  "S19894C1", // class name
  bases_S19894C1, 88,
  &(vtc_S19894C1[0]), // expected_vtbl_contents
  &(vtt_S19894C1[0]), // expected_vtt_contents
  ABISELECT(584,296), // object size
  NSPAIRA(_ZTI8S19894C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19894C1),343, //virtual function table var
  26, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19894C1),315, //virtual table table var
  62, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1527C4  {
  int s1527c4f0;
  __tsi64 s1527c4f1;
  void *s1527c4f2[4];
  int s1527c4f3[2];
  void *s1527c4f4;
  ::S3223C4_nt s1527c4f5;
  void *s1527c4f6[2];
  virtual  ~S1527C4(); // _ZN7S1527C4D1Ev
  virtual void  v6(); // _ZN7S1527C42v6Ev
  virtual void  v7(); // _ZN7S1527C42v7Ev
  virtual void  v8(); // _ZN7S1527C42v8Ev
  virtual void  v9(); // _ZN7S1527C42v9Ev
  virtual void  v10(); // _ZN7S1527C43v10Ev
  virtual void  v11(); // _ZN7S1527C43v11Ev
  virtual void  v12(); // _ZN7S1527C43v12Ev
  virtual void  v13(); // _ZN7S1527C43v13Ev
  virtual void  v14(); // _ZN7S1527C43v14Ev
  virtual void  v15(); // _ZN7S1527C43v15Ev
  virtual void  v16(); // _ZN7S1527C43v16Ev
  virtual void  v17(); // _ZN7S1527C43v17Ev
  virtual void  v18(); // _ZN7S1527C43v18Ev
  virtual void  v19(); // _ZN7S1527C43v19Ev
  virtual void  v20(); // _ZN7S1527C43v20Ev
  virtual void  v21(); // _ZN7S1527C43v21Ev
  virtual void  v22(); // _ZN7S1527C43v22Ev
  virtual void  v23(); // _ZN7S1527C43v23Ev
  virtual void  v24(); // _ZN7S1527C43v24Ev
  virtual void  v25(); // _ZN7S1527C43v25Ev
  virtual void  v26(); // _ZN7S1527C43v26Ev
  virtual void  v27(); // _ZN7S1527C43v27Ev
  virtual void  v28(); // _ZN7S1527C43v28Ev
  virtual void  v29(); // _ZN7S1527C43v29Ev
  virtual void  v30(); // _ZN7S1527C43v30Ev
  virtual void  v31(); // _ZN7S1527C43v31Ev
  virtual void  v32(); // _ZN7S1527C43v32Ev
  virtual void  v33(); // _ZN7S1527C43v33Ev
  virtual void  v34(); // _ZN7S1527C43v34Ev
  virtual void  v35(); // _ZN7S1527C43v35Ev
  virtual void  v36(); // _ZN7S1527C43v36Ev
  virtual void  v37(); // _ZN7S1527C43v37Ev
  virtual void  v38(); // _ZN7S1527C43v38Ev
  virtual void  v39(); // _ZN7S1527C43v39Ev
  virtual void  v40(); // _ZN7S1527C43v40Ev
  virtual void  v41(); // _ZN7S1527C43v41Ev
  virtual void  v42(); // _ZN7S1527C43v42Ev
  virtual void  v43(); // _ZN7S1527C43v43Ev
  virtual void  v44(); // _ZN7S1527C43v44Ev
  virtual void  v45(); // _ZN7S1527C43v45Ev
  virtual void  v46(); // _ZN7S1527C43v46Ev
  virtual void  v47(); // _ZN7S1527C43v47Ev
  virtual void  v48(); // _ZN7S1527C43v48Ev
  virtual void  v49(); // _ZN7S1527C43v49Ev
  virtual void  v50(); // _ZN7S1527C43v50Ev
  virtual void  v51(); // _ZN7S1527C43v51Ev
  virtual void  v52(); // _ZN7S1527C43v52Ev
  virtual void  v53(); // _ZN7S1527C43v53Ev
  virtual void  v54(); // _ZN7S1527C43v54Ev
  virtual void  v55(); // _ZN7S1527C43v55Ev
  virtual void  v56(); // _ZN7S1527C43v56Ev
  virtual void  v57(); // _ZN7S1527C43v57Ev
  virtual void  v58(); // _ZN7S1527C43v58Ev
  virtual void  v59(); // _ZN7S1527C43v59Ev
  virtual void  v60(); // _ZN7S1527C43v60Ev
  virtual void  v61(); // _ZN7S1527C43v61Ev
  virtual void  v62(); // _ZN7S1527C43v62Ev
  virtual void  v63(); // _ZN7S1527C43v63Ev
  virtual void  v64(); // _ZN7S1527C43v64Ev
  virtual void  v65(); // _ZN7S1527C43v65Ev
  virtual void  v66(); // _ZN7S1527C43v66Ev
  virtual void  v67(); // _ZN7S1527C43v67Ev
  virtual void  v68(); // _ZN7S1527C43v68Ev
  virtual void  v69(); // _ZN7S1527C43v69Ev
  S1527C4(); // tgen
};
//SIG(-1 S1527C4) 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]}


 S1527C4 ::~S1527C4(){ note_dtor("S1527C4", this);}
void  S1527C4 ::v6(){vfunc_called(this, "_ZN7S1527C42v6Ev");}
void  S1527C4 ::v7(){vfunc_called(this, "_ZN7S1527C42v7Ev");}
void  S1527C4 ::v8(){vfunc_called(this, "_ZN7S1527C42v8Ev");}
void  S1527C4 ::v9(){vfunc_called(this, "_ZN7S1527C42v9Ev");}
void  S1527C4 ::v10(){vfunc_called(this, "_ZN7S1527C43v10Ev");}
void  S1527C4 ::v11(){vfunc_called(this, "_ZN7S1527C43v11Ev");}
void  S1527C4 ::v12(){vfunc_called(this, "_ZN7S1527C43v12Ev");}
void  S1527C4 ::v13(){vfunc_called(this, "_ZN7S1527C43v13Ev");}
void  S1527C4 ::v14(){vfunc_called(this, "_ZN7S1527C43v14Ev");}
void  S1527C4 ::v15(){vfunc_called(this, "_ZN7S1527C43v15Ev");}
void  S1527C4 ::v16(){vfunc_called(this, "_ZN7S1527C43v16Ev");}
void  S1527C4 ::v17(){vfunc_called(this, "_ZN7S1527C43v17Ev");}
void  S1527C4 ::v18(){vfunc_called(this, "_ZN7S1527C43v18Ev");}
void  S1527C4 ::v19(){vfunc_called(this, "_ZN7S1527C43v19Ev");}
void  S1527C4 ::v20(){vfunc_called(this, "_ZN7S1527C43v20Ev");}
void  S1527C4 ::v21(){vfunc_called(this, "_ZN7S1527C43v21Ev");}
void  S1527C4 ::v22(){vfunc_called(this, "_ZN7S1527C43v22Ev");}
void  S1527C4 ::v23(){vfunc_called(this, "_ZN7S1527C43v23Ev");}
void  S1527C4 ::v24(){vfunc_called(this, "_ZN7S1527C43v24Ev");}
void  S1527C4 ::v25(){vfunc_called(this, "_ZN7S1527C43v25Ev");}
void  S1527C4 ::v26(){vfunc_called(this, "_ZN7S1527C43v26Ev");}
void  S1527C4 ::v27(){vfunc_called(this, "_ZN7S1527C43v27Ev");}
void  S1527C4 ::v28(){vfunc_called(this, "_ZN7S1527C43v28Ev");}
void  S1527C4 ::v29(){vfunc_called(this, "_ZN7S1527C43v29Ev");}
void  S1527C4 ::v30(){vfunc_called(this, "_ZN7S1527C43v30Ev");}
void  S1527C4 ::v31(){vfunc_called(this, "_ZN7S1527C43v31Ev");}
void  S1527C4 ::v32(){vfunc_called(this, "_ZN7S1527C43v32Ev");}
void  S1527C4 ::v33(){vfunc_called(this, "_ZN7S1527C43v33Ev");}
void  S1527C4 ::v34(){vfunc_called(this, "_ZN7S1527C43v34Ev");}
void  S1527C4 ::v35(){vfunc_called(this, "_ZN7S1527C43v35Ev");}
void  S1527C4 ::v36(){vfunc_called(this, "_ZN7S1527C43v36Ev");}
void  S1527C4 ::v37(){vfunc_called(this, "_ZN7S1527C43v37Ev");}
void  S1527C4 ::v38(){vfunc_called(this, "_ZN7S1527C43v38Ev");}
void  S1527C4 ::v39(){vfunc_called(this, "_ZN7S1527C43v39Ev");}
void  S1527C4 ::v40(){vfunc_called(this, "_ZN7S1527C43v40Ev");}
void  S1527C4 ::v41(){vfunc_called(this, "_ZN7S1527C43v41Ev");}
void  S1527C4 ::v42(){vfunc_called(this, "_ZN7S1527C43v42Ev");}
void  S1527C4 ::v43(){vfunc_called(this, "_ZN7S1527C43v43Ev");}
void  S1527C4 ::v44(){vfunc_called(this, "_ZN7S1527C43v44Ev");}
void  S1527C4 ::v45(){vfunc_called(this, "_ZN7S1527C43v45Ev");}
void  S1527C4 ::v46(){vfunc_called(this, "_ZN7S1527C43v46Ev");}
void  S1527C4 ::v47(){vfunc_called(this, "_ZN7S1527C43v47Ev");}
void  S1527C4 ::v48(){vfunc_called(this, "_ZN7S1527C43v48Ev");}
void  S1527C4 ::v49(){vfunc_called(this, "_ZN7S1527C43v49Ev");}
void  S1527C4 ::v50(){vfunc_called(this, "_ZN7S1527C43v50Ev");}
void  S1527C4 ::v51(){vfunc_called(this, "_ZN7S1527C43v51Ev");}
void  S1527C4 ::v52(){vfunc_called(this, "_ZN7S1527C43v52Ev");}
void  S1527C4 ::v53(){vfunc_called(this, "_ZN7S1527C43v53Ev");}
void  S1527C4 ::v54(){vfunc_called(this, "_ZN7S1527C43v54Ev");}
void  S1527C4 ::v55(){vfunc_called(this, "_ZN7S1527C43v55Ev");}
void  S1527C4 ::v56(){vfunc_called(this, "_ZN7S1527C43v56Ev");}
void  S1527C4 ::v57(){vfunc_called(this, "_ZN7S1527C43v57Ev");}
void  S1527C4 ::v58(){vfunc_called(this, "_ZN7S1527C43v58Ev");}
void  S1527C4 ::v59(){vfunc_called(this, "_ZN7S1527C43v59Ev");}
void  S1527C4 ::v60(){vfunc_called(this, "_ZN7S1527C43v60Ev");}
void  S1527C4 ::v61(){vfunc_called(this, "_ZN7S1527C43v61Ev");}
void  S1527C4 ::v62(){vfunc_called(this, "_ZN7S1527C43v62Ev");}
void  S1527C4 ::v63(){vfunc_called(this, "_ZN7S1527C43v63Ev");}
void  S1527C4 ::v64(){vfunc_called(this, "_ZN7S1527C43v64Ev");}
void  S1527C4 ::v65(){vfunc_called(this, "_ZN7S1527C43v65Ev");}
void  S1527C4 ::v66(){vfunc_called(this, "_ZN7S1527C43v66Ev");}
void  S1527C4 ::v67(){vfunc_called(this, "_ZN7S1527C43v67Ev");}
void  S1527C4 ::v68(){vfunc_called(this, "_ZN7S1527C43v68Ev");}
void  S1527C4 ::v69(){vfunc_called(this, "_ZN7S1527C43v69Ev");}
S1527C4 ::S1527C4(){ note_ctor("S1527C4", this);} // tgen

static void Test_S1527C4()
{
  extern Class_Descriptor cd_S1527C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1527C4, buf);
    S1527C4 *dp, &lv = *(dp=new (buf) S1527C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1527C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1527C4)");
    check_field_offset(lv, s1527c4f0, ABISELECT(8,4), "S1527C4.s1527c4f0");
    check_field_offset(lv, s1527c4f1, ABISELECT(16,8), "S1527C4.s1527c4f1");
    check_field_offset(lv, s1527c4f2, ABISELECT(24,16), "S1527C4.s1527c4f2");
    check_field_offset(lv, s1527c4f3, ABISELECT(56,32), "S1527C4.s1527c4f3");
    check_field_offset(lv, s1527c4f4, ABISELECT(64,40), "S1527C4.s1527c4f4");
    check_field_offset(lv, s1527c4f5, ABISELECT(72,44), "S1527C4.s1527c4f5");
    check_field_offset(lv, s1527c4f6, ABISELECT(80,52), "S1527C4.s1527c4f6");
    test_class_info(&lv, &cd_S1527C4);
    dp->~S1527C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1527C4(Test_S1527C4, "S1527C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1527C4C1Ev();
extern void _ZN7S1527C4D1Ev();
Name_Map name_map_S1527C4[] = {
  NSPAIR(_ZN7S1527C4C1Ev),
  NSPAIR(_ZN7S1527C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1527C4[];
extern void _ZN7S1527C4D1Ev();
extern void _ZN7S1527C4D0Ev();
extern void _ZN7S1527C42v6Ev();
extern void _ZN7S1527C42v7Ev();
extern void _ZN7S1527C42v8Ev();
extern void _ZN7S1527C42v9Ev();
extern void _ZN7S1527C43v10Ev();
extern void _ZN7S1527C43v11Ev();
extern void _ZN7S1527C43v12Ev();
extern void _ZN7S1527C43v13Ev();
extern void _ZN7S1527C43v14Ev();
extern void _ZN7S1527C43v15Ev();
extern void _ZN7S1527C43v16Ev();
extern void _ZN7S1527C43v17Ev();
extern void _ZN7S1527C43v18Ev();
extern void _ZN7S1527C43v19Ev();
extern void _ZN7S1527C43v20Ev();
extern void _ZN7S1527C43v21Ev();
extern void _ZN7S1527C43v22Ev();
extern void _ZN7S1527C43v23Ev();
extern void _ZN7S1527C43v24Ev();
extern void _ZN7S1527C43v25Ev();
extern void _ZN7S1527C43v26Ev();
extern void _ZN7S1527C43v27Ev();
extern void _ZN7S1527C43v28Ev();
extern void _ZN7S1527C43v29Ev();
extern void _ZN7S1527C43v30Ev();
extern void _ZN7S1527C43v31Ev();
extern void _ZN7S1527C43v32Ev();
extern void _ZN7S1527C43v33Ev();
extern void _ZN7S1527C43v34Ev();
extern void _ZN7S1527C43v35Ev();
extern void _ZN7S1527C43v36Ev();
extern void _ZN7S1527C43v37Ev();
extern void _ZN7S1527C43v38Ev();
extern void _ZN7S1527C43v39Ev();
extern void _ZN7S1527C43v40Ev();
extern void _ZN7S1527C43v41Ev();
extern void _ZN7S1527C43v42Ev();
extern void _ZN7S1527C43v43Ev();
extern void _ZN7S1527C43v44Ev();
extern void _ZN7S1527C43v45Ev();
extern void _ZN7S1527C43v46Ev();
extern void _ZN7S1527C43v47Ev();
extern void _ZN7S1527C43v48Ev();
extern void _ZN7S1527C43v49Ev();
extern void _ZN7S1527C43v50Ev();
extern void _ZN7S1527C43v51Ev();
extern void _ZN7S1527C43v52Ev();
extern void _ZN7S1527C43v53Ev();
extern void _ZN7S1527C43v54Ev();
extern void _ZN7S1527C43v55Ev();
extern void _ZN7S1527C43v56Ev();
extern void _ZN7S1527C43v57Ev();
extern void _ZN7S1527C43v58Ev();
extern void _ZN7S1527C43v59Ev();
extern void _ZN7S1527C43v60Ev();
extern void _ZN7S1527C43v61Ev();
extern void _ZN7S1527C43v62Ev();
extern void _ZN7S1527C43v63Ev();
extern void _ZN7S1527C43v64Ev();
extern void _ZN7S1527C43v65Ev();
extern void _ZN7S1527C43v66Ev();
extern void _ZN7S1527C43v67Ev();
extern void _ZN7S1527C43v68Ev();
extern void _ZN7S1527C43v69Ev();
static  VTBL_ENTRY vtc_S1527C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1527C4[0]),
  (VTBL_ENTRY)&_ZN7S1527C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1527C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1527C4[];
extern  VTBL_ENTRY _ZTV7S1527C4[];
Class_Descriptor cd_S1527C4 = {  "S1527C4", // class name
  0,0,//no base classes
  &(vtc_S1527C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1527C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1527C4),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  S1527C3  : S1527C4 {
  unsigned int s1527c3f0:1;
  unsigned int s1527c3f1:1;
  unsigned int s1527c3f2:1;
  unsigned int s1527c3f3:1;
  unsigned int s1527c3f4:1;
  unsigned int s1527c3f5:1;
  unsigned int s1527c3f6:1;
  ::S19894C34 s1527c3f7;
  virtual  ~S1527C3(); // _ZN7S1527C3D1Ev
  virtual void  v70(); // _ZN7S1527C33v70Ev
  virtual void  v71(); // _ZN7S1527C33v71Ev
  virtual void  v72(); // _ZN7S1527C33v72Ev
  virtual void  v73(); // _ZN7S1527C33v73Ev
  virtual void  v74(); // _ZN7S1527C33v74Ev
  virtual void  v75(); // _ZN7S1527C33v75Ev
  virtual void  v76(); // _ZN7S1527C33v76Ev
  virtual void  v77(); // _ZN7S1527C33v77Ev
  virtual void  v78(); // _ZN7S1527C33v78Ev
  virtual void  v79(); // _ZN7S1527C33v79Ev
  virtual void  v80(); // _ZN7S1527C33v80Ev
  virtual void  v81(); // _ZN7S1527C33v81Ev
  virtual void  v82(); // _ZN7S1527C33v82Ev
  virtual void  v83(); // _ZN7S1527C33v83Ev
  virtual void  v84(); // _ZN7S1527C33v84Ev
  virtual void  v85(); // _ZN7S1527C33v85Ev
  virtual void  v86(); // _ZN7S1527C33v86Ev
  virtual void  v87(); // _ZN7S1527C33v87Ev
  virtual void  v88(); // _ZN7S1527C33v88Ev
  virtual void  v89(); // _ZN7S1527C33v89Ev
  S1527C3(); // tgen
};
//SIG(-1 S1527C3) C1{ BC2{ 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 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ m}}


 S1527C3 ::~S1527C3(){ note_dtor("S1527C3", this);}
void  S1527C3 ::v70(){vfunc_called(this, "_ZN7S1527C33v70Ev");}
void  S1527C3 ::v71(){vfunc_called(this, "_ZN7S1527C33v71Ev");}
void  S1527C3 ::v72(){vfunc_called(this, "_ZN7S1527C33v72Ev");}
void  S1527C3 ::v73(){vfunc_called(this, "_ZN7S1527C33v73Ev");}
void  S1527C3 ::v74(){vfunc_called(this, "_ZN7S1527C33v74Ev");}
void  S1527C3 ::v75(){vfunc_called(this, "_ZN7S1527C33v75Ev");}
void  S1527C3 ::v76(){vfunc_called(this, "_ZN7S1527C33v76Ev");}
void  S1527C3 ::v77(){vfunc_called(this, "_ZN7S1527C33v77Ev");}
void  S1527C3 ::v78(){vfunc_called(this, "_ZN7S1527C33v78Ev");}
void  S1527C3 ::v79(){vfunc_called(this, "_ZN7S1527C33v79Ev");}
void  S1527C3 ::v80(){vfunc_called(this, "_ZN7S1527C33v80Ev");}
void  S1527C3 ::v81(){vfunc_called(this, "_ZN7S1527C33v81Ev");}
void  S1527C3 ::v82(){vfunc_called(this, "_ZN7S1527C33v82Ev");}
void  S1527C3 ::v83(){vfunc_called(this, "_ZN7S1527C33v83Ev");}
void  S1527C3 ::v84(){vfunc_called(this, "_ZN7S1527C33v84Ev");}
void  S1527C3 ::v85(){vfunc_called(this, "_ZN7S1527C33v85Ev");}
void  S1527C3 ::v86(){vfunc_called(this, "_ZN7S1527C33v86Ev");}
void  S1527C3 ::v87(){vfunc_called(this, "_ZN7S1527C33v87Ev");}
void  S1527C3 ::v88(){vfunc_called(this, "_ZN7S1527C33v88Ev");}
void  S1527C3 ::v89(){vfunc_called(this, "_ZN7S1527C33v89Ev");}
S1527C3 ::S1527C3(){ note_ctor("S1527C3", this);} // tgen

static void Test_S1527C3()
{
  extern Class_Descriptor cd_S1527C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1527C3, buf);
    S1527C3 *dp, &lv = *(dp=new (buf) S1527C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1527C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1527C3)");
    check_base_class_offset(lv, (S1527C4*), 0, "S1527C3");
    set_bf_and_test(lv, s1527c3f0, ABISELECT(96,60), 0, 1, 1, "S1527C3");
    set_bf_and_test(lv, s1527c3f1, ABISELECT(96,60), 1, 1, 1, "S1527C3");
    set_bf_and_test(lv, s1527c3f2, ABISELECT(96,60), 2, 1, 1, "S1527C3");
    set_bf_and_test(lv, s1527c3f3, ABISELECT(96,60), 3, 1, 1, "S1527C3");
    set_bf_and_test(lv, s1527c3f4, ABISELECT(96,60), 4, 1, 1, "S1527C3");
    set_bf_and_test(lv, s1527c3f5, ABISELECT(96,60), 5, 1, 1, "S1527C3");
    set_bf_and_test(lv, s1527c3f6, ABISELECT(96,60), 6, 1, 1, "S1527C3");
    check_field_offset(lv, s1527c3f7, ABISELECT(97,61), "S1527C3.s1527c3f7");
    test_class_info(&lv, &cd_S1527C3);
    dp->~S1527C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1527C3(Test_S1527C3, "S1527C3", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1527C3C1Ev();
extern void _ZN7S1527C3D1Ev();
Name_Map name_map_S1527C3[] = {
  NSPAIR(_ZN7S1527C3C1Ev),
  NSPAIR(_ZN7S1527C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1527C4;
extern VTBL_ENTRY _ZTI7S1527C4[];
extern  VTBL_ENTRY _ZTV7S1527C4[];
static Base_Class bases_S1527C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1527C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1527C3[];
extern void _ZN7S1527C3D1Ev();
extern void _ZN7S1527C3D0Ev();
extern void _ZN7S1527C42v6Ev();
extern void _ZN7S1527C42v7Ev();
extern void _ZN7S1527C42v8Ev();
extern void _ZN7S1527C42v9Ev();
extern void _ZN7S1527C43v10Ev();
extern void _ZN7S1527C43v11Ev();
extern void _ZN7S1527C43v12Ev();
extern void _ZN7S1527C43v13Ev();
extern void _ZN7S1527C43v14Ev();
extern void _ZN7S1527C43v15Ev();
extern void _ZN7S1527C43v16Ev();
extern void _ZN7S1527C43v17Ev();
extern void _ZN7S1527C43v18Ev();
extern void _ZN7S1527C43v19Ev();
extern void _ZN7S1527C43v20Ev();
extern void _ZN7S1527C43v21Ev();
extern void _ZN7S1527C43v22Ev();
extern void _ZN7S1527C43v23Ev();
extern void _ZN7S1527C43v24Ev();
extern void _ZN7S1527C43v25Ev();
extern void _ZN7S1527C43v26Ev();
extern void _ZN7S1527C43v27Ev();
extern void _ZN7S1527C43v28Ev();
extern void _ZN7S1527C43v29Ev();
extern void _ZN7S1527C43v30Ev();
extern void _ZN7S1527C43v31Ev();
extern void _ZN7S1527C43v32Ev();
extern void _ZN7S1527C43v33Ev();
extern void _ZN7S1527C43v34Ev();
extern void _ZN7S1527C43v35Ev();
extern void _ZN7S1527C43v36Ev();
extern void _ZN7S1527C43v37Ev();
extern void _ZN7S1527C43v38Ev();
extern void _ZN7S1527C43v39Ev();
extern void _ZN7S1527C43v40Ev();
extern void _ZN7S1527C43v41Ev();
extern void _ZN7S1527C43v42Ev();
extern void _ZN7S1527C43v43Ev();
extern void _ZN7S1527C43v44Ev();
extern void _ZN7S1527C43v45Ev();
extern void _ZN7S1527C43v46Ev();
extern void _ZN7S1527C43v47Ev();
extern void _ZN7S1527C43v48Ev();
extern void _ZN7S1527C43v49Ev();
extern void _ZN7S1527C43v50Ev();
extern void _ZN7S1527C43v51Ev();
extern void _ZN7S1527C43v52Ev();
extern void _ZN7S1527C43v53Ev();
extern void _ZN7S1527C43v54Ev();
extern void _ZN7S1527C43v55Ev();
extern void _ZN7S1527C43v56Ev();
extern void _ZN7S1527C43v57Ev();
extern void _ZN7S1527C43v58Ev();
extern void _ZN7S1527C43v59Ev();
extern void _ZN7S1527C43v60Ev();
extern void _ZN7S1527C43v61Ev();
extern void _ZN7S1527C43v62Ev();
extern void _ZN7S1527C43v63Ev();
extern void _ZN7S1527C43v64Ev();
extern void _ZN7S1527C43v65Ev();
extern void _ZN7S1527C43v66Ev();
extern void _ZN7S1527C43v67Ev();
extern void _ZN7S1527C43v68Ev();
extern void _ZN7S1527C43v69Ev();
extern void _ZN7S1527C33v70Ev();
extern void _ZN7S1527C33v71Ev();
extern void _ZN7S1527C33v72Ev();
extern void _ZN7S1527C33v73Ev();
extern void _ZN7S1527C33v74Ev();
extern void _ZN7S1527C33v75Ev();
extern void _ZN7S1527C33v76Ev();
extern void _ZN7S1527C33v77Ev();
extern void _ZN7S1527C33v78Ev();
extern void _ZN7S1527C33v79Ev();
extern void _ZN7S1527C33v80Ev();
extern void _ZN7S1527C33v81Ev();
extern void _ZN7S1527C33v82Ev();
extern void _ZN7S1527C33v83Ev();
extern void _ZN7S1527C33v84Ev();
extern void _ZN7S1527C33v85Ev();
extern void _ZN7S1527C33v86Ev();
extern void _ZN7S1527C33v87Ev();
extern void _ZN7S1527C33v88Ev();
extern void _ZN7S1527C33v89Ev();
static  VTBL_ENTRY vtc_S1527C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1527C3[0]),
  (VTBL_ENTRY)&_ZN7S1527C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1527C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v89Ev,
};
extern VTBL_ENTRY _ZTI7S1527C3[];
extern  VTBL_ENTRY _ZTV7S1527C3[];
Class_Descriptor cd_S1527C3 = {  "S1527C3", // class name
  bases_S1527C3, 1,
  &(vtc_S1527C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1527C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1527C3),88, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S1527C2_nt ::~S1527C2_nt(){ note_dtor("S1527C2_nt", this);}
void  S1527C2_nt ::v90(){vfunc_called(this, "_ZN10S1527C2_nt3v90Ev");}
void  S1527C2_nt ::v91(){vfunc_called(this, "_ZN10S1527C2_nt3v91Ev");}
S1527C2_nt ::S1527C2_nt(){ note_ctor("S1527C2_nt", this);} // tgen

//skip512 S1527C2_nt

#else // __cplusplus

extern void _ZN10S1527C2_ntC1Ev();
extern void _ZN10S1527C2_ntD1Ev();
Name_Map name_map_S1527C2_nt[] = {
  NSPAIR(_ZN10S1527C2_ntC1Ev),
  NSPAIR(_ZN10S1527C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1527C4;
extern VTBL_ENTRY _ZTI7S1527C4[];
extern  VTBL_ENTRY _ZTV7S1527C4[];
extern Class_Descriptor cd_S1527C3;
extern VTBL_ENTRY _ZTI7S1527C3[];
extern  VTBL_ENTRY _ZTV7S1527C3[];
static Base_Class bases_S1527C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1527C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1527C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1527C2_nt[];
extern void _ZN10S1527C2_ntD1Ev();
extern void _ZN10S1527C2_ntD0Ev();
extern void _ZN7S1527C42v6Ev();
extern void _ZN7S1527C42v7Ev();
extern void _ZN7S1527C42v8Ev();
extern void _ZN7S1527C42v9Ev();
extern void _ZN7S1527C43v10Ev();
extern void _ZN7S1527C43v11Ev();
extern void _ZN7S1527C43v12Ev();
extern void _ZN7S1527C43v13Ev();
extern void _ZN7S1527C43v14Ev();
extern void _ZN7S1527C43v15Ev();
extern void _ZN7S1527C43v16Ev();
extern void _ZN7S1527C43v17Ev();
extern void _ZN7S1527C43v18Ev();
extern void _ZN7S1527C43v19Ev();
extern void _ZN7S1527C43v20Ev();
extern void _ZN7S1527C43v21Ev();
extern void _ZN7S1527C43v22Ev();
extern void _ZN7S1527C43v23Ev();
extern void _ZN7S1527C43v24Ev();
extern void _ZN7S1527C43v25Ev();
extern void _ZN7S1527C43v26Ev();
extern void _ZN7S1527C43v27Ev();
extern void _ZN7S1527C43v28Ev();
extern void _ZN7S1527C43v29Ev();
extern void _ZN7S1527C43v30Ev();
extern void _ZN7S1527C43v31Ev();
extern void _ZN7S1527C43v32Ev();
extern void _ZN7S1527C43v33Ev();
extern void _ZN7S1527C43v34Ev();
extern void _ZN7S1527C43v35Ev();
extern void _ZN7S1527C43v36Ev();
extern void _ZN7S1527C43v37Ev();
extern void _ZN7S1527C43v38Ev();
extern void _ZN7S1527C43v39Ev();
extern void _ZN7S1527C43v40Ev();
extern void _ZN7S1527C43v41Ev();
extern void _ZN7S1527C43v42Ev();
extern void _ZN7S1527C43v43Ev();
extern void _ZN7S1527C43v44Ev();
extern void _ZN7S1527C43v45Ev();
extern void _ZN7S1527C43v46Ev();
extern void _ZN7S1527C43v47Ev();
extern void _ZN7S1527C43v48Ev();
extern void _ZN7S1527C43v49Ev();
extern void _ZN7S1527C43v50Ev();
extern void _ZN7S1527C43v51Ev();
extern void _ZN7S1527C43v52Ev();
extern void _ZN7S1527C43v53Ev();
extern void _ZN7S1527C43v54Ev();
extern void _ZN7S1527C43v55Ev();
extern void _ZN7S1527C43v56Ev();
extern void _ZN7S1527C43v57Ev();
extern void _ZN7S1527C43v58Ev();
extern void _ZN7S1527C43v59Ev();
extern void _ZN7S1527C43v60Ev();
extern void _ZN7S1527C43v61Ev();
extern void _ZN7S1527C43v62Ev();
extern void _ZN7S1527C43v63Ev();
extern void _ZN7S1527C43v64Ev();
extern void _ZN7S1527C43v65Ev();
extern void _ZN7S1527C43v66Ev();
extern void _ZN7S1527C43v67Ev();
extern void _ZN7S1527C43v68Ev();
extern void _ZN7S1527C43v69Ev();
extern void _ZN7S1527C33v70Ev();
extern void _ZN7S1527C33v71Ev();
extern void _ZN7S1527C33v72Ev();
extern void _ZN7S1527C33v73Ev();
extern void _ZN7S1527C33v74Ev();
extern void _ZN7S1527C33v75Ev();
extern void _ZN7S1527C33v76Ev();
extern void _ZN7S1527C33v77Ev();
extern void _ZN7S1527C33v78Ev();
extern void _ZN7S1527C33v79Ev();
extern void _ZN7S1527C33v80Ev();
extern void _ZN7S1527C33v81Ev();
extern void _ZN7S1527C33v82Ev();
extern void _ZN7S1527C33v83Ev();
extern void _ZN7S1527C33v84Ev();
extern void _ZN7S1527C33v85Ev();
extern void _ZN7S1527C33v86Ev();
extern void _ZN7S1527C33v87Ev();
extern void _ZN7S1527C33v88Ev();
extern void _ZN7S1527C33v89Ev();
extern void _ZN10S1527C2_nt3v90Ev();
extern void _ZN10S1527C2_nt3v91Ev();
static  VTBL_ENTRY vtc_S1527C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1527C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1527C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1527C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v89Ev,
  (VTBL_ENTRY)&_ZN10S1527C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1527C2_nt3v91Ev,
};
extern VTBL_ENTRY _ZTI10S1527C2_nt[];
VTBL_ENTRY *P__ZTI10S1527C2_nt = _ZTI10S1527C2_nt; 
extern  VTBL_ENTRY _ZTV10S1527C2_nt[];
Class_Descriptor cd_S1527C2_nt = {  "S1527C2_nt", // class name
  bases_S1527C2_nt, 2,
  &(vtc_S1527C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1527C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1527C2_nt),90, //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  S1527C1  : S1527C2_nt {
  ::S3223C13_nt s1527c1f0;
  ::S3223C13_nt s1527c1f1;
  ::S1515C10_nt s1527c1f2;
  ::S1515C10_nt s1527c1f3;
  virtual  ~S1527C1(); // _ZN7S1527C1D1Ev
  virtual void  v1(); // _ZN7S1527C12v1Ev
  virtual void  v2(); // _ZN7S1527C12v2Ev
  virtual void  v3(); // _ZN7S1527C12v3Ev
  virtual void  v4(); // _ZN7S1527C12v4Ev
  virtual void  v5(); // _ZN7S1527C12v5Ev
  S1527C1(); // tgen
};
//SIG(1 S1527C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v90 v91} vd v1 v2 v3 v4 v5 FC7{ m Fi[3]} FC7 FC8{ BC9{ m Fc[4] FC10{ BC11{ BC12{ m Fp Fi[2]}}} Fi[2]} Fp} FC8}


 S1527C1 ::~S1527C1(){ note_dtor("S1527C1", this);}
void  S1527C1 ::v1(){vfunc_called(this, "_ZN7S1527C12v1Ev");}
void  S1527C1 ::v2(){vfunc_called(this, "_ZN7S1527C12v2Ev");}
void  S1527C1 ::v3(){vfunc_called(this, "_ZN7S1527C12v3Ev");}
void  S1527C1 ::v4(){vfunc_called(this, "_ZN7S1527C12v4Ev");}
void  S1527C1 ::v5(){vfunc_called(this, "_ZN7S1527C12v5Ev");}
S1527C1 ::S1527C1(){ note_ctor("S1527C1", this);} // tgen

static void Test_S1527C1()
{
  extern Class_Descriptor cd_S1527C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,37)];
    init_test(&cd_S1527C1, buf);
    S1527C1 *dp, &lv = *(dp=new (buf) S1527C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,144), "sizeof(S1527C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1527C1)");
    check_base_class_offset(lv, (S1527C4*)(S1527C3*)(S1527C2_nt*), 0, "S1527C1");
    check_base_class_offset(lv, (S1527C3*)(S1527C2_nt*), 0, "S1527C1");
    check_base_class_offset(lv, (S1527C2_nt*), 0, "S1527C1");
    check_field_offset(lv, s1527c1f0, ABISELECT(100,64), "S1527C1.s1527c1f0");
    check_field_offset(lv, s1527c1f1, ABISELECT(112,76), "S1527C1.s1527c1f1");
    check_field_offset(lv, s1527c1f2, ABISELECT(128,88), "S1527C1.s1527c1f2");
    check_field_offset(lv, s1527c1f3, ABISELECT(168,116), "S1527C1.s1527c1f3");
    test_class_info(&lv, &cd_S1527C1);
    dp->~S1527C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1527C1(Test_S1527C1, "S1527C1", ABISELECT(208,144));

#else // __cplusplus

extern void _ZN7S1527C1C1Ev();
extern void _ZN7S1527C1D1Ev();
Name_Map name_map_S1527C1[] = {
  NSPAIR(_ZN7S1527C1C1Ev),
  NSPAIR(_ZN7S1527C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1527C4;
extern VTBL_ENTRY _ZTI7S1527C4[];
extern  VTBL_ENTRY _ZTV7S1527C4[];
extern Class_Descriptor cd_S1527C3;
extern VTBL_ENTRY _ZTI7S1527C3[];
extern  VTBL_ENTRY _ZTV7S1527C3[];
extern Class_Descriptor cd_S1527C2_nt;
extern VTBL_ENTRY _ZTI10S1527C2_nt[];
extern  VTBL_ENTRY _ZTV10S1527C2_nt[];
static Base_Class bases_S1527C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1527C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1527C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1527C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1527C1[];
extern void _ZN7S1527C1D1Ev();
extern void _ZN7S1527C1D0Ev();
extern void _ZN7S1527C42v6Ev();
extern void _ZN7S1527C42v7Ev();
extern void _ZN7S1527C42v8Ev();
extern void _ZN7S1527C42v9Ev();
extern void _ZN7S1527C43v10Ev();
extern void _ZN7S1527C43v11Ev();
extern void _ZN7S1527C43v12Ev();
extern void _ZN7S1527C43v13Ev();
extern void _ZN7S1527C43v14Ev();
extern void _ZN7S1527C43v15Ev();
extern void _ZN7S1527C43v16Ev();
extern void _ZN7S1527C43v17Ev();
extern void _ZN7S1527C43v18Ev();
extern void _ZN7S1527C43v19Ev();
extern void _ZN7S1527C43v20Ev();
extern void _ZN7S1527C43v21Ev();
extern void _ZN7S1527C43v22Ev();
extern void _ZN7S1527C43v23Ev();
extern void _ZN7S1527C43v24Ev();
extern void _ZN7S1527C43v25Ev();
extern void _ZN7S1527C43v26Ev();
extern void _ZN7S1527C43v27Ev();
extern void _ZN7S1527C43v28Ev();
extern void _ZN7S1527C43v29Ev();
extern void _ZN7S1527C43v30Ev();
extern void _ZN7S1527C43v31Ev();
extern void _ZN7S1527C43v32Ev();
extern void _ZN7S1527C43v33Ev();
extern void _ZN7S1527C43v34Ev();
extern void _ZN7S1527C43v35Ev();
extern void _ZN7S1527C43v36Ev();
extern void _ZN7S1527C43v37Ev();
extern void _ZN7S1527C43v38Ev();
extern void _ZN7S1527C43v39Ev();
extern void _ZN7S1527C43v40Ev();
extern void _ZN7S1527C43v41Ev();
extern void _ZN7S1527C43v42Ev();
extern void _ZN7S1527C43v43Ev();
extern void _ZN7S1527C43v44Ev();
extern void _ZN7S1527C43v45Ev();
extern void _ZN7S1527C43v46Ev();
extern void _ZN7S1527C43v47Ev();
extern void _ZN7S1527C43v48Ev();
extern void _ZN7S1527C43v49Ev();
extern void _ZN7S1527C43v50Ev();
extern void _ZN7S1527C43v51Ev();
extern void _ZN7S1527C43v52Ev();
extern void _ZN7S1527C43v53Ev();
extern void _ZN7S1527C43v54Ev();
extern void _ZN7S1527C43v55Ev();
extern void _ZN7S1527C43v56Ev();
extern void _ZN7S1527C43v57Ev();
extern void _ZN7S1527C43v58Ev();
extern void _ZN7S1527C43v59Ev();
extern void _ZN7S1527C43v60Ev();
extern void _ZN7S1527C43v61Ev();
extern void _ZN7S1527C43v62Ev();
extern void _ZN7S1527C43v63Ev();
extern void _ZN7S1527C43v64Ev();
extern void _ZN7S1527C43v65Ev();
extern void _ZN7S1527C43v66Ev();
extern void _ZN7S1527C43v67Ev();
extern void _ZN7S1527C43v68Ev();
extern void _ZN7S1527C43v69Ev();
extern void _ZN7S1527C33v70Ev();
extern void _ZN7S1527C33v71Ev();
extern void _ZN7S1527C33v72Ev();
extern void _ZN7S1527C33v73Ev();
extern void _ZN7S1527C33v74Ev();
extern void _ZN7S1527C33v75Ev();
extern void _ZN7S1527C33v76Ev();
extern void _ZN7S1527C33v77Ev();
extern void _ZN7S1527C33v78Ev();
extern void _ZN7S1527C33v79Ev();
extern void _ZN7S1527C33v80Ev();
extern void _ZN7S1527C33v81Ev();
extern void _ZN7S1527C33v82Ev();
extern void _ZN7S1527C33v83Ev();
extern void _ZN7S1527C33v84Ev();
extern void _ZN7S1527C33v85Ev();
extern void _ZN7S1527C33v86Ev();
extern void _ZN7S1527C33v87Ev();
extern void _ZN7S1527C33v88Ev();
extern void _ZN7S1527C33v89Ev();
extern void _ZN10S1527C2_nt3v90Ev();
extern void _ZN10S1527C2_nt3v91Ev();
extern void _ZN7S1527C12v1Ev();
extern void _ZN7S1527C12v2Ev();
extern void _ZN7S1527C12v3Ev();
extern void _ZN7S1527C12v4Ev();
extern void _ZN7S1527C12v5Ev();
static  VTBL_ENTRY vtc_S1527C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1527C1[0]),
  (VTBL_ENTRY)&_ZN7S1527C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1527C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1527C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1527C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1527C33v89Ev,
  (VTBL_ENTRY)&_ZN10S1527C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1527C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN7S1527C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1527C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1527C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1527C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1527C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1527C1[];
extern  VTBL_ENTRY _ZTV7S1527C1[];
Class_Descriptor cd_S1527C1 = {  "S1527C1", // class name
  bases_S1527C1, 3,
  &(vtc_S1527C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,144), // object size
  NSPAIRA(_ZTI7S1527C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1527C1),95, //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  S7097C2  {
  int s7097c2f0[2];
  virtual  ~S7097C2(); // _ZN7S7097C2D1Ev
  virtual void  v7(); // _ZN7S7097C22v7Ev
  virtual void  v8(); // _ZN7S7097C22v8Ev
  virtual void  v9(); // _ZN7S7097C22v9Ev
  virtual void  v10(); // _ZN7S7097C23v10Ev
  virtual void  v11(); // _ZN7S7097C23v11Ev
  virtual void  v12(); // _ZN7S7097C23v12Ev
  virtual void  v13(); // _ZN7S7097C23v13Ev
  virtual void  v14(); // _ZN7S7097C23v14Ev
  virtual void  v15(); // _ZN7S7097C23v15Ev
  virtual void  v16(); // _ZN7S7097C23v16Ev
  virtual void  v17(); // _ZN7S7097C23v17Ev
  virtual void  v18(); // _ZN7S7097C23v18Ev
  virtual void  v19(); // _ZN7S7097C23v19Ev
  virtual void  v20(); // _ZN7S7097C23v20Ev
  S7097C2(); // tgen
};
//SIG(-1 S7097C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7097C2 ::~S7097C2(){ note_dtor("S7097C2", this);}
void  S7097C2 ::v7(){vfunc_called(this, "_ZN7S7097C22v7Ev");}
void  S7097C2 ::v8(){vfunc_called(this, "_ZN7S7097C22v8Ev");}
void  S7097C2 ::v9(){vfunc_called(this, "_ZN7S7097C22v9Ev");}
void  S7097C2 ::v10(){vfunc_called(this, "_ZN7S7097C23v10Ev");}
void  S7097C2 ::v11(){vfunc_called(this, "_ZN7S7097C23v11Ev");}
void  S7097C2 ::v12(){vfunc_called(this, "_ZN7S7097C23v12Ev");}
void  S7097C2 ::v13(){vfunc_called(this, "_ZN7S7097C23v13Ev");}
void  S7097C2 ::v14(){vfunc_called(this, "_ZN7S7097C23v14Ev");}
void  S7097C2 ::v15(){vfunc_called(this, "_ZN7S7097C23v15Ev");}
void  S7097C2 ::v16(){vfunc_called(this, "_ZN7S7097C23v16Ev");}
void  S7097C2 ::v17(){vfunc_called(this, "_ZN7S7097C23v17Ev");}
void  S7097C2 ::v18(){vfunc_called(this, "_ZN7S7097C23v18Ev");}
void  S7097C2 ::v19(){vfunc_called(this, "_ZN7S7097C23v19Ev");}
void  S7097C2 ::v20(){vfunc_called(this, "_ZN7S7097C23v20Ev");}
S7097C2 ::S7097C2(){ note_ctor("S7097C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7097C2C1Ev();
extern void _ZN7S7097C2D1Ev();
Name_Map name_map_S7097C2[] = {
  NSPAIR(_ZN7S7097C2C1Ev),
  NSPAIR(_ZN7S7097C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7097C2[];
extern void _ZN7S7097C2D1Ev();
extern void _ZN7S7097C2D0Ev();
extern void _ZN7S7097C22v7Ev();
extern void _ZN7S7097C22v8Ev();
extern void _ZN7S7097C22v9Ev();
extern void _ZN7S7097C23v10Ev();
extern void _ZN7S7097C23v11Ev();
extern void _ZN7S7097C23v12Ev();
extern void _ZN7S7097C23v13Ev();
extern void _ZN7S7097C23v14Ev();
extern void _ZN7S7097C23v15Ev();
extern void _ZN7S7097C23v16Ev();
extern void _ZN7S7097C23v17Ev();
extern void _ZN7S7097C23v18Ev();
extern void _ZN7S7097C23v19Ev();
extern void _ZN7S7097C23v20Ev();
static  VTBL_ENTRY vtc_S7097C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7097C2[0]),
  (VTBL_ENTRY)&_ZN7S7097C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7097C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7097C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7097C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7097C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S7097C2[];
extern  VTBL_ENTRY _ZTV7S7097C2[];
Class_Descriptor cd_S7097C2 = {  "S7097C2", // class name
  0,0,//no base classes
  &(vtc_S7097C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7097C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7097C2),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  S7097C3  {
  void *s7097c3f0;
  __tsi64 s7097c3f1;
  int s7097c3f2;
  void  mf7097c3(); // _ZN7S7097C38mf7097c3Ev
};
//SIG(-1 S7097C3) C1{ m Fp FL Fi}


void  S7097C3 ::mf7097c3(){}

static void Test_S7097C3()
{
  {
    init_simple_test("S7097C3");
    S7097C3 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7097C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7097C3)");
    check_field_offset(lv, s7097c3f0, 0, "S7097C3.s7097c3f0");
    check_field_offset(lv, s7097c3f1, ABISELECT(8,4), "S7097C3.s7097c3f1");
    check_field_offset(lv, s7097c3f2, ABISELECT(16,12), "S7097C3.s7097c3f2");
  }
}
static Arrange_To_Call_Me vS7097C3(Test_S7097C3, "S7097C3", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S7097C6  {
  int s7097c6f0[8];
  char s7097c6f1[80];
};
//SIG(1 S7097C6) U1{ Fi[8] Fc[80]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7097C5  {
  void *s7097c5f0[5];
  int s7097c5f1;
  ::S7097C6 s7097c5f2;
  int s7097c5f3;
  long s7097c5f4;
  void *s7097c5f5;
  int s7097c5f6;
  void *s7097c5f7;
  int s7097c5f8;
  int s7097c5f9;
};
//SIG(-1 S7097C5) C1{ Fp[5] Fi FU2{ Fi[8] Fc[80]} Fi Fl Fp Fi Fp Fi Fi}



static void Test_S7097C5()
{
  {
    init_simple_test("S7097C5");
    S7097C5 lv;
    check2(sizeof(lv), ABISELECT(168,132), "sizeof(S7097C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7097C5)");
    check_field_offset(lv, s7097c5f0, 0, "S7097C5.s7097c5f0");
    check_field_offset(lv, s7097c5f1, ABISELECT(40,20), "S7097C5.s7097c5f1");
    check_field_offset(lv, s7097c5f2, ABISELECT(44,24), "S7097C5.s7097c5f2");
    check_field_offset(lv, s7097c5f3, ABISELECT(124,104), "S7097C5.s7097c5f3");
    check_field_offset(lv, s7097c5f4, ABISELECT(128,108), "S7097C5.s7097c5f4");
    check_field_offset(lv, s7097c5f5, ABISELECT(136,112), "S7097C5.s7097c5f5");
    check_field_offset(lv, s7097c5f6, ABISELECT(144,116), "S7097C5.s7097c5f6");
    check_field_offset(lv, s7097c5f7, ABISELECT(152,120), "S7097C5.s7097c5f7");
    check_field_offset(lv, s7097c5f8, ABISELECT(160,124), "S7097C5.s7097c5f8");
    check_field_offset(lv, s7097c5f9, ABISELECT(164,128), "S7097C5.s7097c5f9");
  }
}
static Arrange_To_Call_Me vS7097C5(Test_S7097C5, "S7097C5", ABISELECT(168,132));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7097C4  {
  ::S7097C5 s7097c4f0;
  __tsi64 s7097c4f1[24];
};
//SIG(-1 S7097C4) C1{ FC2{ Fp[5] Fi FU3{ Fi[8] Fc[80]} Fi Fl Fp Fi Fp Fi Fi} FL[24]}



static void Test_S7097C4()
{
  {
    init_simple_test("S7097C4");
    S7097C4 lv;
    check2(sizeof(lv), ABISELECT(360,324), "sizeof(S7097C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7097C4)");
    check_field_offset(lv, s7097c4f0, 0, "S7097C4.s7097c4f0");
    check_field_offset(lv, s7097c4f1, ABISELECT(168,132), "S7097C4.s7097c4f1");
  }
}
static Arrange_To_Call_Me vS7097C4(Test_S7097C4, "S7097C4", ABISELECT(360,324));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7097C7  {
  void *s7097c7f0;
  void *s7097c7f1;
  void *s7097c7f2;
  void *s7097c7f3;
  char s7097c7f4;
  int s7097c7f5;
  void *s7097c7f6;
  int s7097c7f7;
  int s7097c7f8;
  int s7097c7f9;
  int s7097c7f10;
  int s7097c7f11;
  int s7097c7f12;
  int s7097c7f13;
  __tsi64 s7097c7f14;
  char s7097c7f15;
  char s7097c7f16;
  int s7097c7f17;
  char s7097c7f18;
  char s7097c7f19;
  char s7097c7f20;
  int s7097c7f21;
  char s7097c7f22;
  int s7097c7f23;
  char s7097c7f24;
  char s7097c7f25;
  char s7097c7f26;
  int s7097c7f27;
  int s7097c7f28;
  int s7097c7f29;
  int s7097c7f30;
  int s7097c7f31;
  int s7097c7f32;
  void *s7097c7f33;
  int s7097c7f34;
  int s7097c7f35;
  int s7097c7f36;
  int s7097c7f37;
  int s7097c7f38;
  void *s7097c7f39;
  void *s7097c7f40[4];
  void *s7097c7f41[4];
  void *s7097c7f42[4];
  int s7097c7f43;
  void *s7097c7f44;
  char s7097c7f45;
  char s7097c7f46;
  char s7097c7f47;
  char s7097c7f48[16];
  char s7097c7f49[16];
  char s7097c7f50[16];
  int s7097c7f51;
  char s7097c7f52;
  char s7097c7f53;
  char s7097c7f54;
  char s7097c7f55;
  short s7097c7f56;
  short s7097c7f57;
  char s7097c7f58;
  char s7097c7f59;
  char s7097c7f60;
  void *s7097c7f61;
  int s7097c7f62;
  int s7097c7f63;
  int s7097c7f64;
  int s7097c7f65;
  int s7097c7f66;
  void *s7097c7f67;
  int s7097c7f68;
  void *s7097c7f69[4];
  int s7097c7f70;
  int s7097c7f71;
  int s7097c7f72;
  int s7097c7f73[10];
  int s7097c7f74;
  int s7097c7f75;
  int s7097c7f76;
  int s7097c7f77;
  int s7097c7f78;
  void *s7097c7f79;
  int s7097c7f80;
  int s7097c7f81;
  void *s7097c7f82;
  void *s7097c7f83;
  void *s7097c7f84;
  void *s7097c7f85;
  void *s7097c7f86;
  void *s7097c7f87;
  void *s7097c7f88;
  void *s7097c7f89;
  void *s7097c7f90;
  void *s7097c7f91;
  void *s7097c7f92;
};
//SIG(-1 S7097C7) C1{ Fp[4] Fc Fi Fp Fi[7] FL Fc[2] Fi Fc[3] Fi Fc Fi Fc[3] Fi[6] Fp Fi[5] Fp[13] Fi Fp Fc[51] Fi Fc[4] Fs[2] Fc[3] Fp Fi[5] Fp Fi Fp[4] Fi[18] Fp Fi[2] Fp[11]}



static void Test_S7097C7()
{
  {
    init_simple_test("S7097C7");
    S7097C7 lv;
    check2(sizeof(lv), ABISELECT(624,444), "sizeof(S7097C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7097C7)");
    check_field_offset(lv, s7097c7f0, 0, "S7097C7.s7097c7f0");
    check_field_offset(lv, s7097c7f1, ABISELECT(8,4), "S7097C7.s7097c7f1");
    check_field_offset(lv, s7097c7f2, ABISELECT(16,8), "S7097C7.s7097c7f2");
    check_field_offset(lv, s7097c7f3, ABISELECT(24,12), "S7097C7.s7097c7f3");
    check_field_offset(lv, s7097c7f4, ABISELECT(32,16), "S7097C7.s7097c7f4");
    check_field_offset(lv, s7097c7f5, ABISELECT(36,20), "S7097C7.s7097c7f5");
    check_field_offset(lv, s7097c7f6, ABISELECT(40,24), "S7097C7.s7097c7f6");
    check_field_offset(lv, s7097c7f7, ABISELECT(48,28), "S7097C7.s7097c7f7");
    check_field_offset(lv, s7097c7f8, ABISELECT(52,32), "S7097C7.s7097c7f8");
    check_field_offset(lv, s7097c7f9, ABISELECT(56,36), "S7097C7.s7097c7f9");
    check_field_offset(lv, s7097c7f10, ABISELECT(60,40), "S7097C7.s7097c7f10");
    check_field_offset(lv, s7097c7f11, ABISELECT(64,44), "S7097C7.s7097c7f11");
    check_field_offset(lv, s7097c7f12, ABISELECT(68,48), "S7097C7.s7097c7f12");
    check_field_offset(lv, s7097c7f13, ABISELECT(72,52), "S7097C7.s7097c7f13");
    check_field_offset(lv, s7097c7f14, ABISELECT(80,56), "S7097C7.s7097c7f14");
    check_field_offset(lv, s7097c7f15, ABISELECT(88,64), "S7097C7.s7097c7f15");
    check_field_offset(lv, s7097c7f16, ABISELECT(89,65), "S7097C7.s7097c7f16");
    check_field_offset(lv, s7097c7f17, ABISELECT(92,68), "S7097C7.s7097c7f17");
    check_field_offset(lv, s7097c7f18, ABISELECT(96,72), "S7097C7.s7097c7f18");
    check_field_offset(lv, s7097c7f19, ABISELECT(97,73), "S7097C7.s7097c7f19");
    check_field_offset(lv, s7097c7f20, ABISELECT(98,74), "S7097C7.s7097c7f20");
    check_field_offset(lv, s7097c7f21, ABISELECT(100,76), "S7097C7.s7097c7f21");
    check_field_offset(lv, s7097c7f22, ABISELECT(104,80), "S7097C7.s7097c7f22");
    check_field_offset(lv, s7097c7f23, ABISELECT(108,84), "S7097C7.s7097c7f23");
    check_field_offset(lv, s7097c7f24, ABISELECT(112,88), "S7097C7.s7097c7f24");
    check_field_offset(lv, s7097c7f25, ABISELECT(113,89), "S7097C7.s7097c7f25");
    check_field_offset(lv, s7097c7f26, ABISELECT(114,90), "S7097C7.s7097c7f26");
    check_field_offset(lv, s7097c7f27, ABISELECT(116,92), "S7097C7.s7097c7f27");
    check_field_offset(lv, s7097c7f28, ABISELECT(120,96), "S7097C7.s7097c7f28");
    check_field_offset(lv, s7097c7f29, ABISELECT(124,100), "S7097C7.s7097c7f29");
    check_field_offset(lv, s7097c7f30, ABISELECT(128,104), "S7097C7.s7097c7f30");
    check_field_offset(lv, s7097c7f31, ABISELECT(132,108), "S7097C7.s7097c7f31");
    check_field_offset(lv, s7097c7f32, ABISELECT(136,112), "S7097C7.s7097c7f32");
    check_field_offset(lv, s7097c7f33, ABISELECT(144,116), "S7097C7.s7097c7f33");
    check_field_offset(lv, s7097c7f34, ABISELECT(152,120), "S7097C7.s7097c7f34");
    check_field_offset(lv, s7097c7f35, ABISELECT(156,124), "S7097C7.s7097c7f35");
    check_field_offset(lv, s7097c7f36, ABISELECT(160,128), "S7097C7.s7097c7f36");
    check_field_offset(lv, s7097c7f37, ABISELECT(164,132), "S7097C7.s7097c7f37");
    check_field_offset(lv, s7097c7f38, ABISELECT(168,136), "S7097C7.s7097c7f38");
    check_field_offset(lv, s7097c7f39, ABISELECT(176,140), "S7097C7.s7097c7f39");
    check_field_offset(lv, s7097c7f40, ABISELECT(184,144), "S7097C7.s7097c7f40");
    check_field_offset(lv, s7097c7f41, ABISELECT(216,160), "S7097C7.s7097c7f41");
    check_field_offset(lv, s7097c7f42, ABISELECT(248,176), "S7097C7.s7097c7f42");
    check_field_offset(lv, s7097c7f43, ABISELECT(280,192), "S7097C7.s7097c7f43");
    check_field_offset(lv, s7097c7f44, ABISELECT(288,196), "S7097C7.s7097c7f44");
    check_field_offset(lv, s7097c7f45, ABISELECT(296,200), "S7097C7.s7097c7f45");
    check_field_offset(lv, s7097c7f46, ABISELECT(297,201), "S7097C7.s7097c7f46");
    check_field_offset(lv, s7097c7f47, ABISELECT(298,202), "S7097C7.s7097c7f47");
    check_field_offset(lv, s7097c7f48, ABISELECT(299,203), "S7097C7.s7097c7f48");
    check_field_offset(lv, s7097c7f49, ABISELECT(315,219), "S7097C7.s7097c7f49");
    check_field_offset(lv, s7097c7f50, ABISELECT(331,235), "S7097C7.s7097c7f50");
    check_field_offset(lv, s7097c7f51, ABISELECT(348,252), "S7097C7.s7097c7f51");
    check_field_offset(lv, s7097c7f52, ABISELECT(352,256), "S7097C7.s7097c7f52");
    check_field_offset(lv, s7097c7f53, ABISELECT(353,257), "S7097C7.s7097c7f53");
    check_field_offset(lv, s7097c7f54, ABISELECT(354,258), "S7097C7.s7097c7f54");
    check_field_offset(lv, s7097c7f55, ABISELECT(355,259), "S7097C7.s7097c7f55");
    check_field_offset(lv, s7097c7f56, ABISELECT(356,260), "S7097C7.s7097c7f56");
    check_field_offset(lv, s7097c7f57, ABISELECT(358,262), "S7097C7.s7097c7f57");
    check_field_offset(lv, s7097c7f58, ABISELECT(360,264), "S7097C7.s7097c7f58");
    check_field_offset(lv, s7097c7f59, ABISELECT(361,265), "S7097C7.s7097c7f59");
    check_field_offset(lv, s7097c7f60, ABISELECT(362,266), "S7097C7.s7097c7f60");
    check_field_offset(lv, s7097c7f61, ABISELECT(368,268), "S7097C7.s7097c7f61");
    check_field_offset(lv, s7097c7f62, ABISELECT(376,272), "S7097C7.s7097c7f62");
    check_field_offset(lv, s7097c7f63, ABISELECT(380,276), "S7097C7.s7097c7f63");
    check_field_offset(lv, s7097c7f64, ABISELECT(384,280), "S7097C7.s7097c7f64");
    check_field_offset(lv, s7097c7f65, ABISELECT(388,284), "S7097C7.s7097c7f65");
    check_field_offset(lv, s7097c7f66, ABISELECT(392,288), "S7097C7.s7097c7f66");
    check_field_offset(lv, s7097c7f67, ABISELECT(400,292), "S7097C7.s7097c7f67");
    check_field_offset(lv, s7097c7f68, ABISELECT(408,296), "S7097C7.s7097c7f68");
    check_field_offset(lv, s7097c7f69, ABISELECT(416,300), "S7097C7.s7097c7f69");
    check_field_offset(lv, s7097c7f70, ABISELECT(448,316), "S7097C7.s7097c7f70");
    check_field_offset(lv, s7097c7f71, ABISELECT(452,320), "S7097C7.s7097c7f71");
    check_field_offset(lv, s7097c7f72, ABISELECT(456,324), "S7097C7.s7097c7f72");
    check_field_offset(lv, s7097c7f73, ABISELECT(460,328), "S7097C7.s7097c7f73");
    check_field_offset(lv, s7097c7f74, ABISELECT(500,368), "S7097C7.s7097c7f74");
    check_field_offset(lv, s7097c7f75, ABISELECT(504,372), "S7097C7.s7097c7f75");
    check_field_offset(lv, s7097c7f76, ABISELECT(508,376), "S7097C7.s7097c7f76");
    check_field_offset(lv, s7097c7f77, ABISELECT(512,380), "S7097C7.s7097c7f77");
    check_field_offset(lv, s7097c7f78, ABISELECT(516,384), "S7097C7.s7097c7f78");
    check_field_offset(lv, s7097c7f79, ABISELECT(520,388), "S7097C7.s7097c7f79");
    check_field_offset(lv, s7097c7f80, ABISELECT(528,392), "S7097C7.s7097c7f80");
    check_field_offset(lv, s7097c7f81, ABISELECT(532,396), "S7097C7.s7097c7f81");
    check_field_offset(lv, s7097c7f82, ABISELECT(536,400), "S7097C7.s7097c7f82");
    check_field_offset(lv, s7097c7f83, ABISELECT(544,404), "S7097C7.s7097c7f83");
    check_field_offset(lv, s7097c7f84, ABISELECT(552,408), "S7097C7.s7097c7f84");
    check_field_offset(lv, s7097c7f85, ABISELECT(560,412), "S7097C7.s7097c7f85");
    check_field_offset(lv, s7097c7f86, ABISELECT(568,416), "S7097C7.s7097c7f86");
    check_field_offset(lv, s7097c7f87, ABISELECT(576,420), "S7097C7.s7097c7f87");
    check_field_offset(lv, s7097c7f88, ABISELECT(584,424), "S7097C7.s7097c7f88");
    check_field_offset(lv, s7097c7f89, ABISELECT(592,428), "S7097C7.s7097c7f89");
    check_field_offset(lv, s7097c7f90, ABISELECT(600,432), "S7097C7.s7097c7f90");
    check_field_offset(lv, s7097c7f91, ABISELECT(608,436), "S7097C7.s7097c7f91");
    check_field_offset(lv, s7097c7f92, ABISELECT(616,440), "S7097C7.s7097c7f92");
  }
}
static Arrange_To_Call_Me vS7097C7(Test_S7097C7, "S7097C7", ABISELECT(624,444));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7097C1  : S7097C2 {
  ::S7097C3 s7097c1f0;
  ::S7097C4 s7097c1f1;
  int s7097c1f2;
  void *s7097c1f3;
  void *s7097c1f4;
  void *s7097c1f5;
  void *s7097c1f6;
  ::S7097C7 s7097c1f7;
  int s7097c1f8;
  int s7097c1f9;
  ::S3618C13_nt s7097c1f10;
  virtual  ~S7097C1(); // _ZN7S7097C1D1Ev
  virtual void  v1(); // _ZN7S7097C12v1Ev
  virtual void  v2(); // _ZN7S7097C12v2Ev
  virtual void  v3(); // _ZN7S7097C12v3Ev
  virtual void  v4(); // _ZN7S7097C12v4Ev
  virtual void  v5(); // _ZN7S7097C12v5Ev
  virtual void  v6(); // _ZN7S7097C12v6Ev
  S7097C1(); // tgen
};
//SIG(1 S7097C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi[2]} vd v1 v2 v3 v4 v5 v6 FC3{ m Fp FL Fi} FC4{ FC5{ Fp[5] Fi FU6{ Fi[8] Fc[80]} Fi Fl Fp Fi Fp Fi Fi} FL[24]} Fi Fp Fp Fp Fp FC7{ Fp Fp Fp Fp Fc Fi Fp Fi Fi Fi Fi Fi Fi Fi FL Fc Fc Fi Fc Fc Fc Fi Fc Fi Fc Fc Fc Fi Fi Fi Fi Fi Fi Fp Fi Fi Fi Fi Fi Fp Fp[4] Fp[4] Fp[4] Fi Fp Fc Fc Fc Fc[16] Fc[16] Fc[16] Fi Fc Fc Fc Fc Fs Fs Fc Fc Fc Fp Fi Fi Fi Fi Fi Fp Fi Fp[4] Fi Fi Fi Fi[10] Fi Fi Fi Fi Fi Fp Fi Fi Fp Fp Fp Fp Fp Fp Fp Fp Fp Fp Fp} Fi Fi FC8{ m FC9{ Fl[4]}}}


 S7097C1 ::~S7097C1(){ note_dtor("S7097C1", this);}
void  S7097C1 ::v1(){vfunc_called(this, "_ZN7S7097C12v1Ev");}
void  S7097C1 ::v2(){vfunc_called(this, "_ZN7S7097C12v2Ev");}
void  S7097C1 ::v3(){vfunc_called(this, "_ZN7S7097C12v3Ev");}
void  S7097C1 ::v4(){vfunc_called(this, "_ZN7S7097C12v4Ev");}
void  S7097C1 ::v5(){vfunc_called(this, "_ZN7S7097C12v5Ev");}
void  S7097C1 ::v6(){vfunc_called(this, "_ZN7S7097C12v6Ev");}
S7097C1 ::S7097C1(){ note_ctor("S7097C1", this);} // tgen

static void Test_S7097C1()
{
  extern Class_Descriptor cd_S7097C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,211)];
    init_test(&cd_S7097C1, buf);
    S7097C1 *dp, &lv = *(dp=new (buf) S7097C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,840), "sizeof(S7097C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7097C1)");
    check_base_class_offset(lv, (S7097C2*), 0, "S7097C1");
    check_field_offset(lv, s7097c1f0, ABISELECT(16,12), "S7097C1.s7097c1f0");
    check_field_offset(lv, s7097c1f1, ABISELECT(40,28), "S7097C1.s7097c1f1");
    check_field_offset(lv, s7097c1f2, ABISELECT(400,352), "S7097C1.s7097c1f2");
    check_field_offset(lv, s7097c1f3, ABISELECT(408,356), "S7097C1.s7097c1f3");
    check_field_offset(lv, s7097c1f4, ABISELECT(416,360), "S7097C1.s7097c1f4");
    check_field_offset(lv, s7097c1f5, ABISELECT(424,364), "S7097C1.s7097c1f5");
    check_field_offset(lv, s7097c1f6, ABISELECT(432,368), "S7097C1.s7097c1f6");
    check_field_offset(lv, s7097c1f7, ABISELECT(440,372), "S7097C1.s7097c1f7");
    check_field_offset(lv, s7097c1f8, ABISELECT(1064,816), "S7097C1.s7097c1f8");
    check_field_offset(lv, s7097c1f9, ABISELECT(1068,820), "S7097C1.s7097c1f9");
    check_field_offset(lv, s7097c1f10, ABISELECT(1072,824), "S7097C1.s7097c1f10");
    test_class_info(&lv, &cd_S7097C1);
    dp->~S7097C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7097C1(Test_S7097C1, "S7097C1", ABISELECT(1104,840));

#else // __cplusplus

extern void _ZN7S7097C1C1Ev();
extern void _ZN7S7097C1D1Ev();
Name_Map name_map_S7097C1[] = {
  NSPAIR(_ZN7S7097C1C1Ev),
  NSPAIR(_ZN7S7097C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7097C2;
extern VTBL_ENTRY _ZTI7S7097C2[];
extern  VTBL_ENTRY _ZTV7S7097C2[];
static Base_Class bases_S7097C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7097C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7097C1[];
extern void _ZN7S7097C1D1Ev();
extern void _ZN7S7097C1D0Ev();
extern void _ZN7S7097C22v7Ev();
extern void _ZN7S7097C22v8Ev();
extern void _ZN7S7097C22v9Ev();
extern void _ZN7S7097C23v10Ev();
extern void _ZN7S7097C23v11Ev();
extern void _ZN7S7097C23v12Ev();
extern void _ZN7S7097C23v13Ev();
extern void _ZN7S7097C23v14Ev();
extern void _ZN7S7097C23v15Ev();
extern void _ZN7S7097C23v16Ev();
extern void _ZN7S7097C23v17Ev();
extern void _ZN7S7097C23v18Ev();
extern void _ZN7S7097C23v19Ev();
extern void _ZN7S7097C23v20Ev();
extern void _ZN7S7097C12v1Ev();
extern void _ZN7S7097C12v2Ev();
extern void _ZN7S7097C12v3Ev();
extern void _ZN7S7097C12v4Ev();
extern void _ZN7S7097C12v5Ev();
extern void _ZN7S7097C12v6Ev();
static  VTBL_ENTRY vtc_S7097C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7097C1[0]),
  (VTBL_ENTRY)&_ZN7S7097C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7097C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7097C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7097C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7097C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7097C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7097C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7097C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7097C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7097C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7097C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7097C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7097C1[];
extern  VTBL_ENTRY _ZTV7S7097C1[];
Class_Descriptor cd_S7097C1 = {  "S7097C1", // class name
  bases_S7097C1, 1,
  &(vtc_S7097C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1104,840), // object size
  NSPAIRA(_ZTI7S7097C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7097C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7098C2  {
  int s7098c2f0[2];
  virtual  ~S7098C2(); // _ZN7S7098C2D1Ev
  virtual void  v7(); // _ZN7S7098C22v7Ev
  virtual void  v8(); // _ZN7S7098C22v8Ev
  virtual void  v9(); // _ZN7S7098C22v9Ev
  virtual void  v10(); // _ZN7S7098C23v10Ev
  virtual void  v11(); // _ZN7S7098C23v11Ev
  virtual void  v12(); // _ZN7S7098C23v12Ev
  virtual void  v13(); // _ZN7S7098C23v13Ev
  virtual void  v14(); // _ZN7S7098C23v14Ev
  virtual void  v15(); // _ZN7S7098C23v15Ev
  virtual void  v16(); // _ZN7S7098C23v16Ev
  virtual void  v17(); // _ZN7S7098C23v17Ev
  virtual void  v18(); // _ZN7S7098C23v18Ev
  virtual void  v19(); // _ZN7S7098C23v19Ev
  virtual void  v20(); // _ZN7S7098C23v20Ev
  S7098C2(); // tgen
};
//SIG(-1 S7098C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7098C2 ::~S7098C2(){ note_dtor("S7098C2", this);}
void  S7098C2 ::v7(){vfunc_called(this, "_ZN7S7098C22v7Ev");}
void  S7098C2 ::v8(){vfunc_called(this, "_ZN7S7098C22v8Ev");}
void  S7098C2 ::v9(){vfunc_called(this, "_ZN7S7098C22v9Ev");}
void  S7098C2 ::v10(){vfunc_called(this, "_ZN7S7098C23v10Ev");}
void  S7098C2 ::v11(){vfunc_called(this, "_ZN7S7098C23v11Ev");}
void  S7098C2 ::v12(){vfunc_called(this, "_ZN7S7098C23v12Ev");}
void  S7098C2 ::v13(){vfunc_called(this, "_ZN7S7098C23v13Ev");}
void  S7098C2 ::v14(){vfunc_called(this, "_ZN7S7098C23v14Ev");}
void  S7098C2 ::v15(){vfunc_called(this, "_ZN7S7098C23v15Ev");}
void  S7098C2 ::v16(){vfunc_called(this, "_ZN7S7098C23v16Ev");}
void  S7098C2 ::v17(){vfunc_called(this, "_ZN7S7098C23v17Ev");}
void  S7098C2 ::v18(){vfunc_called(this, "_ZN7S7098C23v18Ev");}
void  S7098C2 ::v19(){vfunc_called(this, "_ZN7S7098C23v19Ev");}
void  S7098C2 ::v20(){vfunc_called(this, "_ZN7S7098C23v20Ev");}
S7098C2 ::S7098C2(){ note_ctor("S7098C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7098C2C1Ev();
extern void _ZN7S7098C2D1Ev();
Name_Map name_map_S7098C2[] = {
  NSPAIR(_ZN7S7098C2C1Ev),
  NSPAIR(_ZN7S7098C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7098C2[];
extern void _ZN7S7098C2D1Ev();
extern void _ZN7S7098C2D0Ev();
extern void _ZN7S7098C22v7Ev();
extern void _ZN7S7098C22v8Ev();
extern void _ZN7S7098C22v9Ev();
extern void _ZN7S7098C23v10Ev();
extern void _ZN7S7098C23v11Ev();
extern void _ZN7S7098C23v12Ev();
extern void _ZN7S7098C23v13Ev();
extern void _ZN7S7098C23v14Ev();
extern void _ZN7S7098C23v15Ev();
extern void _ZN7S7098C23v16Ev();
extern void _ZN7S7098C23v17Ev();
extern void _ZN7S7098C23v18Ev();
extern void _ZN7S7098C23v19Ev();
extern void _ZN7S7098C23v20Ev();
static  VTBL_ENTRY vtc_S7098C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7098C2[0]),
  (VTBL_ENTRY)&_ZN7S7098C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7098C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7098C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7098C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7098C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S7098C2[];
extern  VTBL_ENTRY _ZTV7S7098C2[];
Class_Descriptor cd_S7098C2 = {  "S7098C2", // class name
  0,0,//no base classes
  &(vtc_S7098C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7098C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7098C2),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  S7098C1  : S7098C2 {
  ::S7097C3 s7098c1f0;
  ::S7097C4 s7098c1f1;
  int s7098c1f2;
  void *s7098c1f3;
  void *s7098c1f4;
  void *s7098c1f5;
  void *s7098c1f6;
  ::S7097C7 s7098c1f7;
  int s7098c1f8;
  int s7098c1f9;
  ::S3619C13_nt s7098c1f10;
  virtual  ~S7098C1(); // _ZN7S7098C1D1Ev
  virtual void  v1(); // _ZN7S7098C12v1Ev
  virtual void  v2(); // _ZN7S7098C12v2Ev
  virtual void  v3(); // _ZN7S7098C12v3Ev
  virtual void  v4(); // _ZN7S7098C12v4Ev
  virtual void  v5(); // _ZN7S7098C12v5Ev
  virtual void  v6(); // _ZN7S7098C12v6Ev
  S7098C1(); // tgen
};
//SIG(1 S7098C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi[2]} vd v1 v2 v3 v4 v5 v6 FC3{ m Fp FL Fi} FC4{ FC5{ Fp[5] Fi FU6{ Fi[8] Fc[80]} Fi Fl Fp Fi Fp Fi Fi} FL[24]} Fi Fp Fp Fp Fp FC7{ Fp Fp Fp Fp Fc Fi Fp Fi Fi Fi Fi Fi Fi Fi FL Fc Fc Fi Fc Fc Fc Fi Fc Fi Fc Fc Fc Fi Fi Fi Fi Fi Fi Fp Fi Fi Fi Fi Fi Fp Fp[4] Fp[4] Fp[4] Fi Fp Fc Fc Fc Fc[16] Fc[16] Fc[16] Fi Fc Fc Fc Fc Fs Fs Fc Fc Fc Fp Fi Fi Fi Fi Fi Fp Fi Fp[4] Fi Fi Fi Fi[10] Fi Fi Fi Fi Fi Fp Fi Fi Fp Fp Fp Fp Fp Fp Fp Fp Fp Fp Fp} Fi Fi FC8{ m FC9{ FL[4]}}}


 S7098C1 ::~S7098C1(){ note_dtor("S7098C1", this);}
void  S7098C1 ::v1(){vfunc_called(this, "_ZN7S7098C12v1Ev");}
void  S7098C1 ::v2(){vfunc_called(this, "_ZN7S7098C12v2Ev");}
void  S7098C1 ::v3(){vfunc_called(this, "_ZN7S7098C12v3Ev");}
void  S7098C1 ::v4(){vfunc_called(this, "_ZN7S7098C12v4Ev");}
void  S7098C1 ::v5(){vfunc_called(this, "_ZN7S7098C12v5Ev");}
void  S7098C1 ::v6(){vfunc_called(this, "_ZN7S7098C12v6Ev");}
S7098C1 ::S7098C1(){ note_ctor("S7098C1", this);} // tgen

static void Test_S7098C1()
{
  extern Class_Descriptor cd_S7098C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,215)];
    init_test(&cd_S7098C1, buf);
    S7098C1 *dp, &lv = *(dp=new (buf) S7098C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,856), "sizeof(S7098C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7098C1)");
    check_base_class_offset(lv, (S7098C2*), 0, "S7098C1");
    check_field_offset(lv, s7098c1f0, ABISELECT(16,12), "S7098C1.s7098c1f0");
    check_field_offset(lv, s7098c1f1, ABISELECT(40,28), "S7098C1.s7098c1f1");
    check_field_offset(lv, s7098c1f2, ABISELECT(400,352), "S7098C1.s7098c1f2");
    check_field_offset(lv, s7098c1f3, ABISELECT(408,356), "S7098C1.s7098c1f3");
    check_field_offset(lv, s7098c1f4, ABISELECT(416,360), "S7098C1.s7098c1f4");
    check_field_offset(lv, s7098c1f5, ABISELECT(424,364), "S7098C1.s7098c1f5");
    check_field_offset(lv, s7098c1f6, ABISELECT(432,368), "S7098C1.s7098c1f6");
    check_field_offset(lv, s7098c1f7, ABISELECT(440,372), "S7098C1.s7098c1f7");
    check_field_offset(lv, s7098c1f8, ABISELECT(1064,816), "S7098C1.s7098c1f8");
    check_field_offset(lv, s7098c1f9, ABISELECT(1068,820), "S7098C1.s7098c1f9");
    check_field_offset(lv, s7098c1f10, ABISELECT(1072,824), "S7098C1.s7098c1f10");
    test_class_info(&lv, &cd_S7098C1);
    dp->~S7098C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7098C1(Test_S7098C1, "S7098C1", ABISELECT(1104,856));

#else // __cplusplus

extern void _ZN7S7098C1C1Ev();
extern void _ZN7S7098C1D1Ev();
Name_Map name_map_S7098C1[] = {
  NSPAIR(_ZN7S7098C1C1Ev),
  NSPAIR(_ZN7S7098C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7098C2;
extern VTBL_ENTRY _ZTI7S7098C2[];
extern  VTBL_ENTRY _ZTV7S7098C2[];
static Base_Class bases_S7098C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7098C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7098C1[];
extern void _ZN7S7098C1D1Ev();
extern void _ZN7S7098C1D0Ev();
extern void _ZN7S7098C22v7Ev();
extern void _ZN7S7098C22v8Ev();
extern void _ZN7S7098C22v9Ev();
extern void _ZN7S7098C23v10Ev();
extern void _ZN7S7098C23v11Ev();
extern void _ZN7S7098C23v12Ev();
extern void _ZN7S7098C23v13Ev();
extern void _ZN7S7098C23v14Ev();
extern void _ZN7S7098C23v15Ev();
extern void _ZN7S7098C23v16Ev();
extern void _ZN7S7098C23v17Ev();
extern void _ZN7S7098C23v18Ev();
extern void _ZN7S7098C23v19Ev();
extern void _ZN7S7098C23v20Ev();
extern void _ZN7S7098C12v1Ev();
extern void _ZN7S7098C12v2Ev();
extern void _ZN7S7098C12v3Ev();
extern void _ZN7S7098C12v4Ev();
extern void _ZN7S7098C12v5Ev();
extern void _ZN7S7098C12v6Ev();
static  VTBL_ENTRY vtc_S7098C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7098C1[0]),
  (VTBL_ENTRY)&_ZN7S7098C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7098C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7098C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7098C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7098C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7098C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7098C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7098C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7098C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7098C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7098C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7098C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7098C1[];
extern  VTBL_ENTRY _ZTV7S7098C1[];
Class_Descriptor cd_S7098C1 = {  "S7098C1", // class name
  bases_S7098C1, 1,
  &(vtc_S7098C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1104,856), // object size
  NSPAIRA(_ZTI7S7098C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7098C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7099C2  {
  int s7099c2f0[2];
  virtual  ~S7099C2(); // _ZN7S7099C2D1Ev
  virtual void  v7(); // _ZN7S7099C22v7Ev
  virtual void  v8(); // _ZN7S7099C22v8Ev
  virtual void  v9(); // _ZN7S7099C22v9Ev
  virtual void  v10(); // _ZN7S7099C23v10Ev
  virtual void  v11(); // _ZN7S7099C23v11Ev
  virtual void  v12(); // _ZN7S7099C23v12Ev
  virtual void  v13(); // _ZN7S7099C23v13Ev
  virtual void  v14(); // _ZN7S7099C23v14Ev
  virtual void  v15(); // _ZN7S7099C23v15Ev
  virtual void  v16(); // _ZN7S7099C23v16Ev
  virtual void  v17(); // _ZN7S7099C23v17Ev
  virtual void  v18(); // _ZN7S7099C23v18Ev
  virtual void  v19(); // _ZN7S7099C23v19Ev
  virtual void  v20(); // _ZN7S7099C23v20Ev
  S7099C2(); // tgen
};
//SIG(-1 S7099C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7099C2 ::~S7099C2(){ note_dtor("S7099C2", this);}
void  S7099C2 ::v7(){vfunc_called(this, "_ZN7S7099C22v7Ev");}
void  S7099C2 ::v8(){vfunc_called(this, "_ZN7S7099C22v8Ev");}
void  S7099C2 ::v9(){vfunc_called(this, "_ZN7S7099C22v9Ev");}
void  S7099C2 ::v10(){vfunc_called(this, "_ZN7S7099C23v10Ev");}
void  S7099C2 ::v11(){vfunc_called(this, "_ZN7S7099C23v11Ev");}
void  S7099C2 ::v12(){vfunc_called(this, "_ZN7S7099C23v12Ev");}
void  S7099C2 ::v13(){vfunc_called(this, "_ZN7S7099C23v13Ev");}
void  S7099C2 ::v14(){vfunc_called(this, "_ZN7S7099C23v14Ev");}
void  S7099C2 ::v15(){vfunc_called(this, "_ZN7S7099C23v15Ev");}
void  S7099C2 ::v16(){vfunc_called(this, "_ZN7S7099C23v16Ev");}
void  S7099C2 ::v17(){vfunc_called(this, "_ZN7S7099C23v17Ev");}
void  S7099C2 ::v18(){vfunc_called(this, "_ZN7S7099C23v18Ev");}
void  S7099C2 ::v19(){vfunc_called(this, "_ZN7S7099C23v19Ev");}
void  S7099C2 ::v20(){vfunc_called(this, "_ZN7S7099C23v20Ev");}
S7099C2 ::S7099C2(){ note_ctor("S7099C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7099C2C1Ev();
extern void _ZN7S7099C2D1Ev();
Name_Map name_map_S7099C2[] = {
  NSPAIR(_ZN7S7099C2C1Ev),
  NSPAIR(_ZN7S7099C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7099C2[];
extern void _ZN7S7099C2D1Ev();
extern void _ZN7S7099C2D0Ev();
extern void _ZN7S7099C22v7Ev();
extern void _ZN7S7099C22v8Ev();
extern void _ZN7S7099C22v9Ev();
extern void _ZN7S7099C23v10Ev();
extern void _ZN7S7099C23v11Ev();
extern void _ZN7S7099C23v12Ev();
extern void _ZN7S7099C23v13Ev();
extern void _ZN7S7099C23v14Ev();
extern void _ZN7S7099C23v15Ev();
extern void _ZN7S7099C23v16Ev();
extern void _ZN7S7099C23v17Ev();
extern void _ZN7S7099C23v18Ev();
extern void _ZN7S7099C23v19Ev();
extern void _ZN7S7099C23v20Ev();
static  VTBL_ENTRY vtc_S7099C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7099C2[0]),
  (VTBL_ENTRY)&_ZN7S7099C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7099C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7099C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7099C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7099C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S7099C2[];
extern  VTBL_ENTRY _ZTV7S7099C2[];
Class_Descriptor cd_S7099C2 = {  "S7099C2", // class name
  0,0,//no base classes
  &(vtc_S7099C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7099C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7099C2),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  S7099C1  : S7099C2 {
  ::S7097C3 s7099c1f0;
  ::S7097C4 s7099c1f1;
  int s7099c1f2;
  void *s7099c1f3;
  void *s7099c1f4;
  void *s7099c1f5;
  void *s7099c1f6;
  ::S7097C7 s7099c1f7;
  int s7099c1f8;
  int s7099c1f9;
  ::S3620C13_nt s7099c1f10;
  virtual  ~S7099C1(); // _ZN7S7099C1D1Ev
  virtual void  v1(); // _ZN7S7099C12v1Ev
  virtual void  v2(); // _ZN7S7099C12v2Ev
  virtual void  v3(); // _ZN7S7099C12v3Ev
  virtual void  v4(); // _ZN7S7099C12v4Ev
  virtual void  v5(); // _ZN7S7099C12v5Ev
  virtual void  v6(); // _ZN7S7099C12v6Ev
  S7099C1(); // tgen
};
//SIG(1 S7099C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi[2]} vd v1 v2 v3 v4 v5 v6 FC3{ m Fp FL Fi} FC4{ FC5{ Fp[5] Fi FU6{ Fi[8] Fc[80]} Fi Fl Fp Fi Fp Fi Fi} FL[24]} Fi Fp Fp Fp Fp FC7{ Fp Fp Fp Fp Fc Fi Fp Fi Fi Fi Fi Fi Fi Fi FL Fc Fc Fi Fc Fc Fc Fi Fc Fi Fc Fc Fc Fi Fi Fi Fi Fi Fi Fp Fi Fi Fi Fi Fi Fp Fp[4] Fp[4] Fp[4] Fi Fp Fc Fc Fc Fc[16] Fc[16] Fc[16] Fi Fc Fc Fc Fc Fs Fs Fc Fc Fc Fp Fi Fi Fi Fi Fi Fp Fi Fp[4] Fi Fi Fi Fi[10] Fi Fi Fi Fi Fi Fp Fi Fi Fp Fp Fp Fp Fp Fp Fp Fp Fp Fp Fp} Fi Fi FC8{ m FL[4]}}


 S7099C1 ::~S7099C1(){ note_dtor("S7099C1", this);}
void  S7099C1 ::v1(){vfunc_called(this, "_ZN7S7099C12v1Ev");}
void  S7099C1 ::v2(){vfunc_called(this, "_ZN7S7099C12v2Ev");}
void  S7099C1 ::v3(){vfunc_called(this, "_ZN7S7099C12v3Ev");}
void  S7099C1 ::v4(){vfunc_called(this, "_ZN7S7099C12v4Ev");}
void  S7099C1 ::v5(){vfunc_called(this, "_ZN7S7099C12v5Ev");}
void  S7099C1 ::v6(){vfunc_called(this, "_ZN7S7099C12v6Ev");}
S7099C1 ::S7099C1(){ note_ctor("S7099C1", this);} // tgen

static void Test_S7099C1()
{
  extern Class_Descriptor cd_S7099C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,215)];
    init_test(&cd_S7099C1, buf);
    S7099C1 *dp, &lv = *(dp=new (buf) S7099C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,856), "sizeof(S7099C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7099C1)");
    check_base_class_offset(lv, (S7099C2*), 0, "S7099C1");
    check_field_offset(lv, s7099c1f0, ABISELECT(16,12), "S7099C1.s7099c1f0");
    check_field_offset(lv, s7099c1f1, ABISELECT(40,28), "S7099C1.s7099c1f1");
    check_field_offset(lv, s7099c1f2, ABISELECT(400,352), "S7099C1.s7099c1f2");
    check_field_offset(lv, s7099c1f3, ABISELECT(408,356), "S7099C1.s7099c1f3");
    check_field_offset(lv, s7099c1f4, ABISELECT(416,360), "S7099C1.s7099c1f4");
    check_field_offset(lv, s7099c1f5, ABISELECT(424,364), "S7099C1.s7099c1f5");
    check_field_offset(lv, s7099c1f6, ABISELECT(432,368), "S7099C1.s7099c1f6");
    check_field_offset(lv, s7099c1f7, ABISELECT(440,372), "S7099C1.s7099c1f7");
    check_field_offset(lv, s7099c1f8, ABISELECT(1064,816), "S7099C1.s7099c1f8");
    check_field_offset(lv, s7099c1f9, ABISELECT(1068,820), "S7099C1.s7099c1f9");
    check_field_offset(lv, s7099c1f10, ABISELECT(1072,824), "S7099C1.s7099c1f10");
    test_class_info(&lv, &cd_S7099C1);
    dp->~S7099C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7099C1(Test_S7099C1, "S7099C1", ABISELECT(1104,856));

#else // __cplusplus

extern void _ZN7S7099C1C1Ev();
extern void _ZN7S7099C1D1Ev();
Name_Map name_map_S7099C1[] = {
  NSPAIR(_ZN7S7099C1C1Ev),
  NSPAIR(_ZN7S7099C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7099C2;
extern VTBL_ENTRY _ZTI7S7099C2[];
extern  VTBL_ENTRY _ZTV7S7099C2[];
static Base_Class bases_S7099C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7099C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7099C1[];
extern void _ZN7S7099C1D1Ev();
extern void _ZN7S7099C1D0Ev();
extern void _ZN7S7099C22v7Ev();
extern void _ZN7S7099C22v8Ev();
extern void _ZN7S7099C22v9Ev();
extern void _ZN7S7099C23v10Ev();
extern void _ZN7S7099C23v11Ev();
extern void _ZN7S7099C23v12Ev();
extern void _ZN7S7099C23v13Ev();
extern void _ZN7S7099C23v14Ev();
extern void _ZN7S7099C23v15Ev();
extern void _ZN7S7099C23v16Ev();
extern void _ZN7S7099C23v17Ev();
extern void _ZN7S7099C23v18Ev();
extern void _ZN7S7099C23v19Ev();
extern void _ZN7S7099C23v20Ev();
extern void _ZN7S7099C12v1Ev();
extern void _ZN7S7099C12v2Ev();
extern void _ZN7S7099C12v3Ev();
extern void _ZN7S7099C12v4Ev();
extern void _ZN7S7099C12v5Ev();
extern void _ZN7S7099C12v6Ev();
static  VTBL_ENTRY vtc_S7099C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7099C1[0]),
  (VTBL_ENTRY)&_ZN7S7099C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7099C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7099C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7099C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7099C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7099C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7099C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7099C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7099C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7099C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7099C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7099C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7099C1[];
extern  VTBL_ENTRY _ZTV7S7099C1[];
Class_Descriptor cd_S7099C1 = {  "S7099C1", // class name
  bases_S7099C1, 1,
  &(vtc_S7099C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1104,856), // object size
  NSPAIRA(_ZTI7S7099C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7099C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3236C3  {
  int s3236c3f0;
  __tsi64 s3236c3f1;
  void *s3236c3f2[4];
  int s3236c3f3[2];
  void *s3236c3f4;
  ::S3223C4_nt s3236c3f5;
  void *s3236c3f6[2];
  virtual  ~S3236C3(); // _ZN7S3236C3D1Ev
  virtual void  v4(); // _ZN7S3236C32v4Ev
  virtual void  v5(); // _ZN7S3236C32v5Ev
  virtual void  v6(); // _ZN7S3236C32v6Ev
  virtual void  v7(); // _ZN7S3236C32v7Ev
  virtual void  v8(); // _ZN7S3236C32v8Ev
  virtual void  v9(); // _ZN7S3236C32v9Ev
  virtual void  v10(); // _ZN7S3236C33v10Ev
  virtual void  v11(); // _ZN7S3236C33v11Ev
  virtual void  v12(); // _ZN7S3236C33v12Ev
  virtual void  v13(); // _ZN7S3236C33v13Ev
  virtual void  v14(); // _ZN7S3236C33v14Ev
  virtual void  v15(); // _ZN7S3236C33v15Ev
  virtual void  v16(); // _ZN7S3236C33v16Ev
  virtual void  v17(); // _ZN7S3236C33v17Ev
  virtual void  v18(); // _ZN7S3236C33v18Ev
  virtual void  v19(); // _ZN7S3236C33v19Ev
  virtual void  v20(); // _ZN7S3236C33v20Ev
  virtual void  v21(); // _ZN7S3236C33v21Ev
  virtual void  v22(); // _ZN7S3236C33v22Ev
  virtual void  v23(); // _ZN7S3236C33v23Ev
  virtual void  v24(); // _ZN7S3236C33v24Ev
  virtual void  v25(); // _ZN7S3236C33v25Ev
  virtual void  v26(); // _ZN7S3236C33v26Ev
  virtual void  v27(); // _ZN7S3236C33v27Ev
  virtual void  v28(); // _ZN7S3236C33v28Ev
  virtual void  v29(); // _ZN7S3236C33v29Ev
  virtual void  v30(); // _ZN7S3236C33v30Ev
  virtual void  v31(); // _ZN7S3236C33v31Ev
  virtual void  v32(); // _ZN7S3236C33v32Ev
  virtual void  v33(); // _ZN7S3236C33v33Ev
  virtual void  v34(); // _ZN7S3236C33v34Ev
  virtual void  v35(); // _ZN7S3236C33v35Ev
  virtual void  v36(); // _ZN7S3236C33v36Ev
  virtual void  v37(); // _ZN7S3236C33v37Ev
  virtual void  v38(); // _ZN7S3236C33v38Ev
  virtual void  v39(); // _ZN7S3236C33v39Ev
  virtual void  v40(); // _ZN7S3236C33v40Ev
  virtual void  v41(); // _ZN7S3236C33v41Ev
  virtual void  v42(); // _ZN7S3236C33v42Ev
  virtual void  v43(); // _ZN7S3236C33v43Ev
  virtual void  v44(); // _ZN7S3236C33v44Ev
  virtual void  v45(); // _ZN7S3236C33v45Ev
  virtual void  v46(); // _ZN7S3236C33v46Ev
  virtual void  v47(); // _ZN7S3236C33v47Ev
  virtual void  v48(); // _ZN7S3236C33v48Ev
  virtual void  v49(); // _ZN7S3236C33v49Ev
  virtual void  v50(); // _ZN7S3236C33v50Ev
  virtual void  v51(); // _ZN7S3236C33v51Ev
  virtual void  v52(); // _ZN7S3236C33v52Ev
  virtual void  v53(); // _ZN7S3236C33v53Ev
  virtual void  v54(); // _ZN7S3236C33v54Ev
  virtual void  v55(); // _ZN7S3236C33v55Ev
  virtual void  v56(); // _ZN7S3236C33v56Ev
  virtual void  v57(); // _ZN7S3236C33v57Ev
  virtual void  v58(); // _ZN7S3236C33v58Ev
  virtual void  v59(); // _ZN7S3236C33v59Ev
  virtual void  v60(); // _ZN7S3236C33v60Ev
  virtual void  v61(); // _ZN7S3236C33v61Ev
  virtual void  v62(); // _ZN7S3236C33v62Ev
  virtual void  v63(); // _ZN7S3236C33v63Ev
  virtual void  v64(); // _ZN7S3236C33v64Ev
  virtual void  v65(); // _ZN7S3236C33v65Ev
  virtual void  v66(); // _ZN7S3236C33v66Ev
  virtual void  v67(); // _ZN7S3236C33v67Ev
  S3236C3(); // tgen
};
//SIG(-1 S3236C3) 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]}


 S3236C3 ::~S3236C3(){ note_dtor("S3236C3", this);}
void  S3236C3 ::v4(){vfunc_called(this, "_ZN7S3236C32v4Ev");}
void  S3236C3 ::v5(){vfunc_called(this, "_ZN7S3236C32v5Ev");}
void  S3236C3 ::v6(){vfunc_called(this, "_ZN7S3236C32v6Ev");}
void  S3236C3 ::v7(){vfunc_called(this, "_ZN7S3236C32v7Ev");}
void  S3236C3 ::v8(){vfunc_called(this, "_ZN7S3236C32v8Ev");}
void  S3236C3 ::v9(){vfunc_called(this, "_ZN7S3236C32v9Ev");}
void  S3236C3 ::v10(){vfunc_called(this, "_ZN7S3236C33v10Ev");}
void  S3236C3 ::v11(){vfunc_called(this, "_ZN7S3236C33v11Ev");}
void  S3236C3 ::v12(){vfunc_called(this, "_ZN7S3236C33v12Ev");}
void  S3236C3 ::v13(){vfunc_called(this, "_ZN7S3236C33v13Ev");}
void  S3236C3 ::v14(){vfunc_called(this, "_ZN7S3236C33v14Ev");}
void  S3236C3 ::v15(){vfunc_called(this, "_ZN7S3236C33v15Ev");}
void  S3236C3 ::v16(){vfunc_called(this, "_ZN7S3236C33v16Ev");}
void  S3236C3 ::v17(){vfunc_called(this, "_ZN7S3236C33v17Ev");}
void  S3236C3 ::v18(){vfunc_called(this, "_ZN7S3236C33v18Ev");}
void  S3236C3 ::v19(){vfunc_called(this, "_ZN7S3236C33v19Ev");}
void  S3236C3 ::v20(){vfunc_called(this, "_ZN7S3236C33v20Ev");}
void  S3236C3 ::v21(){vfunc_called(this, "_ZN7S3236C33v21Ev");}
void  S3236C3 ::v22(){vfunc_called(this, "_ZN7S3236C33v22Ev");}
void  S3236C3 ::v23(){vfunc_called(this, "_ZN7S3236C33v23Ev");}
void  S3236C3 ::v24(){vfunc_called(this, "_ZN7S3236C33v24Ev");}
void  S3236C3 ::v25(){vfunc_called(this, "_ZN7S3236C33v25Ev");}
void  S3236C3 ::v26(){vfunc_called(this, "_ZN7S3236C33v26Ev");}
void  S3236C3 ::v27(){vfunc_called(this, "_ZN7S3236C33v27Ev");}
void  S3236C3 ::v28(){vfunc_called(this, "_ZN7S3236C33v28Ev");}
void  S3236C3 ::v29(){vfunc_called(this, "_ZN7S3236C33v29Ev");}
void  S3236C3 ::v30(){vfunc_called(this, "_ZN7S3236C33v30Ev");}
void  S3236C3 ::v31(){vfunc_called(this, "_ZN7S3236C33v31Ev");}
void  S3236C3 ::v32(){vfunc_called(this, "_ZN7S3236C33v32Ev");}
void  S3236C3 ::v33(){vfunc_called(this, "_ZN7S3236C33v33Ev");}
void  S3236C3 ::v34(){vfunc_called(this, "_ZN7S3236C33v34Ev");}
void  S3236C3 ::v35(){vfunc_called(this, "_ZN7S3236C33v35Ev");}
void  S3236C3 ::v36(){vfunc_called(this, "_ZN7S3236C33v36Ev");}
void  S3236C3 ::v37(){vfunc_called(this, "_ZN7S3236C33v37Ev");}
void  S3236C3 ::v38(){vfunc_called(this, "_ZN7S3236C33v38Ev");}
void  S3236C3 ::v39(){vfunc_called(this, "_ZN7S3236C33v39Ev");}
void  S3236C3 ::v40(){vfunc_called(this, "_ZN7S3236C33v40Ev");}
void  S3236C3 ::v41(){vfunc_called(this, "_ZN7S3236C33v41Ev");}
void  S3236C3 ::v42(){vfunc_called(this, "_ZN7S3236C33v42Ev");}
void  S3236C3 ::v43(){vfunc_called(this, "_ZN7S3236C33v43Ev");}
void  S3236C3 ::v44(){vfunc_called(this, "_ZN7S3236C33v44Ev");}
void  S3236C3 ::v45(){vfunc_called(this, "_ZN7S3236C33v45Ev");}
void  S3236C3 ::v46(){vfunc_called(this, "_ZN7S3236C33v46Ev");}
void  S3236C3 ::v47(){vfunc_called(this, "_ZN7S3236C33v47Ev");}
void  S3236C3 ::v48(){vfunc_called(this, "_ZN7S3236C33v48Ev");}
void  S3236C3 ::v49(){vfunc_called(this, "_ZN7S3236C33v49Ev");}
void  S3236C3 ::v50(){vfunc_called(this, "_ZN7S3236C33v50Ev");}
void  S3236C3 ::v51(){vfunc_called(this, "_ZN7S3236C33v51Ev");}
void  S3236C3 ::v52(){vfunc_called(this, "_ZN7S3236C33v52Ev");}
void  S3236C3 ::v53(){vfunc_called(this, "_ZN7S3236C33v53Ev");}
void  S3236C3 ::v54(){vfunc_called(this, "_ZN7S3236C33v54Ev");}
void  S3236C3 ::v55(){vfunc_called(this, "_ZN7S3236C33v55Ev");}
void  S3236C3 ::v56(){vfunc_called(this, "_ZN7S3236C33v56Ev");}
void  S3236C3 ::v57(){vfunc_called(this, "_ZN7S3236C33v57Ev");}
void  S3236C3 ::v58(){vfunc_called(this, "_ZN7S3236C33v58Ev");}
void  S3236C3 ::v59(){vfunc_called(this, "_ZN7S3236C33v59Ev");}
void  S3236C3 ::v60(){vfunc_called(this, "_ZN7S3236C33v60Ev");}
void  S3236C3 ::v61(){vfunc_called(this, "_ZN7S3236C33v61Ev");}
void  S3236C3 ::v62(){vfunc_called(this, "_ZN7S3236C33v62Ev");}
void  S3236C3 ::v63(){vfunc_called(this, "_ZN7S3236C33v63Ev");}
void  S3236C3 ::v64(){vfunc_called(this, "_ZN7S3236C33v64Ev");}
void  S3236C3 ::v65(){vfunc_called(this, "_ZN7S3236C33v65Ev");}
void  S3236C3 ::v66(){vfunc_called(this, "_ZN7S3236C33v66Ev");}
void  S3236C3 ::v67(){vfunc_called(this, "_ZN7S3236C33v67Ev");}
S3236C3 ::S3236C3(){ note_ctor("S3236C3", this);} // tgen

static void Test_S3236C3()
{
  extern Class_Descriptor cd_S3236C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3236C3, buf);
    S3236C3 *dp, &lv = *(dp=new (buf) S3236C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3236C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3236C3)");
    check_field_offset(lv, s3236c3f0, ABISELECT(8,4), "S3236C3.s3236c3f0");
    check_field_offset(lv, s3236c3f1, ABISELECT(16,8), "S3236C3.s3236c3f1");
    check_field_offset(lv, s3236c3f2, ABISELECT(24,16), "S3236C3.s3236c3f2");
    check_field_offset(lv, s3236c3f3, ABISELECT(56,32), "S3236C3.s3236c3f3");
    check_field_offset(lv, s3236c3f4, ABISELECT(64,40), "S3236C3.s3236c3f4");
    check_field_offset(lv, s3236c3f5, ABISELECT(72,44), "S3236C3.s3236c3f5");
    check_field_offset(lv, s3236c3f6, ABISELECT(80,52), "S3236C3.s3236c3f6");
    test_class_info(&lv, &cd_S3236C3);
    dp->~S3236C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3236C3(Test_S3236C3, "S3236C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3236C3C1Ev();
extern void _ZN7S3236C3D1Ev();
Name_Map name_map_S3236C3[] = {
  NSPAIR(_ZN7S3236C3C1Ev),
  NSPAIR(_ZN7S3236C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3236C3[];
extern void _ZN7S3236C3D1Ev();
extern void _ZN7S3236C3D0Ev();
extern void _ZN7S3236C32v4Ev();
extern void _ZN7S3236C32v5Ev();
extern void _ZN7S3236C32v6Ev();
extern void _ZN7S3236C32v7Ev();
extern void _ZN7S3236C32v8Ev();
extern void _ZN7S3236C32v9Ev();
extern void _ZN7S3236C33v10Ev();
extern void _ZN7S3236C33v11Ev();
extern void _ZN7S3236C33v12Ev();
extern void _ZN7S3236C33v13Ev();
extern void _ZN7S3236C33v14Ev();
extern void _ZN7S3236C33v15Ev();
extern void _ZN7S3236C33v16Ev();
extern void _ZN7S3236C33v17Ev();
extern void _ZN7S3236C33v18Ev();
extern void _ZN7S3236C33v19Ev();
extern void _ZN7S3236C33v20Ev();
extern void _ZN7S3236C33v21Ev();
extern void _ZN7S3236C33v22Ev();
extern void _ZN7S3236C33v23Ev();
extern void _ZN7S3236C33v24Ev();
extern void _ZN7S3236C33v25Ev();
extern void _ZN7S3236C33v26Ev();
extern void _ZN7S3236C33v27Ev();
extern void _ZN7S3236C33v28Ev();
extern void _ZN7S3236C33v29Ev();
extern void _ZN7S3236C33v30Ev();
extern void _ZN7S3236C33v31Ev();
extern void _ZN7S3236C33v32Ev();
extern void _ZN7S3236C33v33Ev();
extern void _ZN7S3236C33v34Ev();
extern void _ZN7S3236C33v35Ev();
extern void _ZN7S3236C33v36Ev();
extern void _ZN7S3236C33v37Ev();
extern void _ZN7S3236C33v38Ev();
extern void _ZN7S3236C33v39Ev();
extern void _ZN7S3236C33v40Ev();
extern void _ZN7S3236C33v41Ev();
extern void _ZN7S3236C33v42Ev();
extern void _ZN7S3236C33v43Ev();
extern void _ZN7S3236C33v44Ev();
extern void _ZN7S3236C33v45Ev();
extern void _ZN7S3236C33v46Ev();
extern void _ZN7S3236C33v47Ev();
extern void _ZN7S3236C33v48Ev();
extern void _ZN7S3236C33v49Ev();
extern void _ZN7S3236C33v50Ev();
extern void _ZN7S3236C33v51Ev();
extern void _ZN7S3236C33v52Ev();
extern void _ZN7S3236C33v53Ev();
extern void _ZN7S3236C33v54Ev();
extern void _ZN7S3236C33v55Ev();
extern void _ZN7S3236C33v56Ev();
extern void _ZN7S3236C33v57Ev();
extern void _ZN7S3236C33v58Ev();
extern void _ZN7S3236C33v59Ev();
extern void _ZN7S3236C33v60Ev();
extern void _ZN7S3236C33v61Ev();
extern void _ZN7S3236C33v62Ev();
extern void _ZN7S3236C33v63Ev();
extern void _ZN7S3236C33v64Ev();
extern void _ZN7S3236C33v65Ev();
extern void _ZN7S3236C33v66Ev();
extern void _ZN7S3236C33v67Ev();
static  VTBL_ENTRY vtc_S3236C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3236C3[0]),
  (VTBL_ENTRY)&_ZN7S3236C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3236C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3236C3[];
extern  VTBL_ENTRY _ZTV7S3236C3[];
Class_Descriptor cd_S3236C3 = {  "S3236C3", // class name
  0,0,//no base classes
  &(vtc_S3236C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3236C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3236C3),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  S3236C2  : S3236C3 {
  ::S3223C4_nt s3236c2f0;
  void *s3236c2f1;
  ::S3223C13_nt s3236c2f2;
  ::S3223C13_nt s3236c2f3;
  unsigned int s3236c2f4:1;
  unsigned int s3236c2f5:1;
  unsigned int s3236c2f6:1;
  unsigned int s3236c2f7:1;
  unsigned int s3236c2f8:1;
  unsigned int s3236c2f9:1;
  unsigned int s3236c2f10:1;
  unsigned int s3236c2f11:1;
  unsigned int s3236c2f12:1;
  unsigned int s3236c2f13:1;
  unsigned int s3236c2f14:1;
  ::S19894C34 s3236c2f15;
  ::S3223C17 s3236c2f16;
  int s3236c2f17[2];
  virtual  ~S3236C2(); // _ZN7S3236C2D1Ev
  virtual void  v68(); // _ZN7S3236C23v68Ev
  virtual void  v69(); // _ZN7S3236C23v69Ev
  virtual void  v70(); // _ZN7S3236C23v70Ev
  virtual void  v71(); // _ZN7S3236C23v71Ev
  virtual void  v72(); // _ZN7S3236C23v72Ev
  S3236C2(); // tgen
};
//SIG(-1 S3236C2) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 FC3 Fp FC4{ m Fi[3]} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m} FC6{ BC7{ BC8{ m Fp Fi[2]}}} Fi[2]}


 S3236C2 ::~S3236C2(){ note_dtor("S3236C2", this);}
void  S3236C2 ::v68(){vfunc_called(this, "_ZN7S3236C23v68Ev");}
void  S3236C2 ::v69(){vfunc_called(this, "_ZN7S3236C23v69Ev");}
void  S3236C2 ::v70(){vfunc_called(this, "_ZN7S3236C23v70Ev");}
void  S3236C2 ::v71(){vfunc_called(this, "_ZN7S3236C23v71Ev");}
void  S3236C2 ::v72(){vfunc_called(this, "_ZN7S3236C23v72Ev");}
S3236C2 ::S3236C2(){ note_ctor("S3236C2", this);} // tgen

static void Test_S3236C2()
{
  extern Class_Descriptor cd_S3236C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,31)];
    init_test(&cd_S3236C2, buf);
    S3236C2 *dp, &lv = *(dp=new (buf) S3236C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,120), "sizeof(S3236C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3236C2)");
    check_base_class_offset(lv, (S3236C3*), 0, "S3236C2");
    check_field_offset(lv, s3236c2f0, ABISELECT(96,60), "S3236C2.s3236c2f0");
    check_field_offset(lv, s3236c2f1, ABISELECT(104,68), "S3236C2.s3236c2f1");
    check_field_offset(lv, s3236c2f2, ABISELECT(112,72), "S3236C2.s3236c2f2");
    check_field_offset(lv, s3236c2f3, ABISELECT(124,84), "S3236C2.s3236c2f3");
    set_bf_and_test(lv, s3236c2f4, ABISELECT(136,96), 0, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f5, ABISELECT(136,96), 1, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f6, ABISELECT(136,96), 2, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f7, ABISELECT(136,96), 3, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f8, ABISELECT(136,96), 4, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f9, ABISELECT(136,96), 5, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f10, ABISELECT(136,96), 6, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f11, ABISELECT(136,96), 7, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f12, ABISELECT(137,97), 0, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f13, ABISELECT(137,97), 1, 1, 1, "S3236C2");
    set_bf_and_test(lv, s3236c2f14, ABISELECT(137,97), 2, 1, 1, "S3236C2");
    check_field_offset(lv, s3236c2f15, ABISELECT(138,98), "S3236C2.s3236c2f15");
    check_field_offset(lv, s3236c2f16, ABISELECT(144,100), "S3236C2.s3236c2f16");
    check_field_offset(lv, s3236c2f17, ABISELECT(160,112), "S3236C2.s3236c2f17");
    test_class_info(&lv, &cd_S3236C2);
    dp->~S3236C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3236C2(Test_S3236C2, "S3236C2", ABISELECT(168,120));

#else // __cplusplus

extern void _ZN7S3236C2C1Ev();
extern void _ZN7S3236C2D1Ev();
Name_Map name_map_S3236C2[] = {
  NSPAIR(_ZN7S3236C2C1Ev),
  NSPAIR(_ZN7S3236C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3236C3;
extern VTBL_ENTRY _ZTI7S3236C3[];
extern  VTBL_ENTRY _ZTV7S3236C3[];
static Base_Class bases_S3236C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3236C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3236C2[];
extern void _ZN7S3236C2D1Ev();
extern void _ZN7S3236C2D0Ev();
extern void _ZN7S3236C32v4Ev();
extern void _ZN7S3236C32v5Ev();
extern void _ZN7S3236C32v6Ev();
extern void _ZN7S3236C32v7Ev();
extern void _ZN7S3236C32v8Ev();
extern void _ZN7S3236C32v9Ev();
extern void _ZN7S3236C33v10Ev();
extern void _ZN7S3236C33v11Ev();
extern void _ZN7S3236C33v12Ev();
extern void _ZN7S3236C33v13Ev();
extern void _ZN7S3236C33v14Ev();
extern void _ZN7S3236C33v15Ev();
extern void _ZN7S3236C33v16Ev();
extern void _ZN7S3236C33v17Ev();
extern void _ZN7S3236C33v18Ev();
extern void _ZN7S3236C33v19Ev();
extern void _ZN7S3236C33v20Ev();
extern void _ZN7S3236C33v21Ev();
extern void _ZN7S3236C33v22Ev();
extern void _ZN7S3236C33v23Ev();
extern void _ZN7S3236C33v24Ev();
extern void _ZN7S3236C33v25Ev();
extern void _ZN7S3236C33v26Ev();
extern void _ZN7S3236C33v27Ev();
extern void _ZN7S3236C33v28Ev();
extern void _ZN7S3236C33v29Ev();
extern void _ZN7S3236C33v30Ev();
extern void _ZN7S3236C33v31Ev();
extern void _ZN7S3236C33v32Ev();
extern void _ZN7S3236C33v33Ev();
extern void _ZN7S3236C33v34Ev();
extern void _ZN7S3236C33v35Ev();
extern void _ZN7S3236C33v36Ev();
extern void _ZN7S3236C33v37Ev();
extern void _ZN7S3236C33v38Ev();
extern void _ZN7S3236C33v39Ev();
extern void _ZN7S3236C33v40Ev();
extern void _ZN7S3236C33v41Ev();
extern void _ZN7S3236C33v42Ev();
extern void _ZN7S3236C33v43Ev();
extern void _ZN7S3236C33v44Ev();
extern void _ZN7S3236C33v45Ev();
extern void _ZN7S3236C33v46Ev();
extern void _ZN7S3236C33v47Ev();
extern void _ZN7S3236C33v48Ev();
extern void _ZN7S3236C33v49Ev();
extern void _ZN7S3236C33v50Ev();
extern void _ZN7S3236C33v51Ev();
extern void _ZN7S3236C33v52Ev();
extern void _ZN7S3236C33v53Ev();
extern void _ZN7S3236C33v54Ev();
extern void _ZN7S3236C33v55Ev();
extern void _ZN7S3236C33v56Ev();
extern void _ZN7S3236C33v57Ev();
extern void _ZN7S3236C33v58Ev();
extern void _ZN7S3236C33v59Ev();
extern void _ZN7S3236C33v60Ev();
extern void _ZN7S3236C33v61Ev();
extern void _ZN7S3236C33v62Ev();
extern void _ZN7S3236C33v63Ev();
extern void _ZN7S3236C33v64Ev();
extern void _ZN7S3236C33v65Ev();
extern void _ZN7S3236C33v66Ev();
extern void _ZN7S3236C33v67Ev();
extern void _ZN7S3236C23v68Ev();
extern void _ZN7S3236C23v69Ev();
extern void _ZN7S3236C23v70Ev();
extern void _ZN7S3236C23v71Ev();
extern void _ZN7S3236C23v72Ev();
static  VTBL_ENTRY vtc_S3236C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3236C2[0]),
  (VTBL_ENTRY)&_ZN7S3236C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3236C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v72Ev,
};
extern VTBL_ENTRY _ZTI7S3236C2[];
extern  VTBL_ENTRY _ZTV7S3236C2[];
Class_Descriptor cd_S3236C2 = {  "S3236C2", // class name
  bases_S3236C2, 1,
  &(vtc_S3236C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,120), // object size
  NSPAIRA(_ZTI7S3236C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3236C2),73, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3236C1  : S3236C2 {
  ::S3223C13_nt s3236c1f0;
  int s3236c1f1;
  virtual  ~S3236C1(); // _ZN7S3236C1D1Ev
  virtual void  v1(); // _ZN7S3236C12v1Ev
  virtual void  v2(); // _ZN7S3236C12v2Ev
  virtual void  v3(); // _ZN7S3236C12v3Ev
  S3236C1(); // tgen
};
//SIG(1 S3236C1) 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 FC4 Fp FC5{ m Fi[3]} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m} FC7{ BC8{ BC9{ m Fp Fi[2]}}} Fi[2]} vd v1 v2 v3 FC5 Fi}


 S3236C1 ::~S3236C1(){ note_dtor("S3236C1", this);}
void  S3236C1 ::v1(){vfunc_called(this, "_ZN7S3236C12v1Ev");}
void  S3236C1 ::v2(){vfunc_called(this, "_ZN7S3236C12v2Ev");}
void  S3236C1 ::v3(){vfunc_called(this, "_ZN7S3236C12v3Ev");}
S3236C1 ::S3236C1(){ note_ctor("S3236C1", this);} // tgen

static void Test_S3236C1()
{
  extern Class_Descriptor cd_S3236C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,35)];
    init_test(&cd_S3236C1, buf);
    S3236C1 *dp, &lv = *(dp=new (buf) S3236C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,136), "sizeof(S3236C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3236C1)");
    check_base_class_offset(lv, (S3236C3*)(S3236C2*), 0, "S3236C1");
    check_base_class_offset(lv, (S3236C2*), 0, "S3236C1");
    check_field_offset(lv, s3236c1f0, ABISELECT(168,120), "S3236C1.s3236c1f0");
    check_field_offset(lv, s3236c1f1, ABISELECT(180,132), "S3236C1.s3236c1f1");
    test_class_info(&lv, &cd_S3236C1);
    dp->~S3236C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3236C1(Test_S3236C1, "S3236C1", ABISELECT(184,136));

#else // __cplusplus

extern void _ZN7S3236C1C1Ev();
extern void _ZN7S3236C1D1Ev();
Name_Map name_map_S3236C1[] = {
  NSPAIR(_ZN7S3236C1C1Ev),
  NSPAIR(_ZN7S3236C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3236C3;
extern VTBL_ENTRY _ZTI7S3236C3[];
extern  VTBL_ENTRY _ZTV7S3236C3[];
extern Class_Descriptor cd_S3236C2;
extern VTBL_ENTRY _ZTI7S3236C2[];
extern  VTBL_ENTRY _ZTV7S3236C2[];
static Base_Class bases_S3236C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3236C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3236C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3236C1[];
extern void _ZN7S3236C1D1Ev();
extern void _ZN7S3236C1D0Ev();
extern void _ZN7S3236C32v4Ev();
extern void _ZN7S3236C32v5Ev();
extern void _ZN7S3236C32v6Ev();
extern void _ZN7S3236C32v7Ev();
extern void _ZN7S3236C32v8Ev();
extern void _ZN7S3236C32v9Ev();
extern void _ZN7S3236C33v10Ev();
extern void _ZN7S3236C33v11Ev();
extern void _ZN7S3236C33v12Ev();
extern void _ZN7S3236C33v13Ev();
extern void _ZN7S3236C33v14Ev();
extern void _ZN7S3236C33v15Ev();
extern void _ZN7S3236C33v16Ev();
extern void _ZN7S3236C33v17Ev();
extern void _ZN7S3236C33v18Ev();
extern void _ZN7S3236C33v19Ev();
extern void _ZN7S3236C33v20Ev();
extern void _ZN7S3236C33v21Ev();
extern void _ZN7S3236C33v22Ev();
extern void _ZN7S3236C33v23Ev();
extern void _ZN7S3236C33v24Ev();
extern void _ZN7S3236C33v25Ev();
extern void _ZN7S3236C33v26Ev();
extern void _ZN7S3236C33v27Ev();
extern void _ZN7S3236C33v28Ev();
extern void _ZN7S3236C33v29Ev();
extern void _ZN7S3236C33v30Ev();
extern void _ZN7S3236C33v31Ev();
extern void _ZN7S3236C33v32Ev();
extern void _ZN7S3236C33v33Ev();
extern void _ZN7S3236C33v34Ev();
extern void _ZN7S3236C33v35Ev();
extern void _ZN7S3236C33v36Ev();
extern void _ZN7S3236C33v37Ev();
extern void _ZN7S3236C33v38Ev();
extern void _ZN7S3236C33v39Ev();
extern void _ZN7S3236C33v40Ev();
extern void _ZN7S3236C33v41Ev();
extern void _ZN7S3236C33v42Ev();
extern void _ZN7S3236C33v43Ev();
extern void _ZN7S3236C33v44Ev();
extern void _ZN7S3236C33v45Ev();
extern void _ZN7S3236C33v46Ev();
extern void _ZN7S3236C33v47Ev();
extern void _ZN7S3236C33v48Ev();
extern void _ZN7S3236C33v49Ev();
extern void _ZN7S3236C33v50Ev();
extern void _ZN7S3236C33v51Ev();
extern void _ZN7S3236C33v52Ev();
extern void _ZN7S3236C33v53Ev();
extern void _ZN7S3236C33v54Ev();
extern void _ZN7S3236C33v55Ev();
extern void _ZN7S3236C33v56Ev();
extern void _ZN7S3236C33v57Ev();
extern void _ZN7S3236C33v58Ev();
extern void _ZN7S3236C33v59Ev();
extern void _ZN7S3236C33v60Ev();
extern void _ZN7S3236C33v61Ev();
extern void _ZN7S3236C33v62Ev();
extern void _ZN7S3236C33v63Ev();
extern void _ZN7S3236C33v64Ev();
extern void _ZN7S3236C33v65Ev();
extern void _ZN7S3236C33v66Ev();
extern void _ZN7S3236C33v67Ev();
extern void _ZN7S3236C23v68Ev();
extern void _ZN7S3236C23v69Ev();
extern void _ZN7S3236C23v70Ev();
extern void _ZN7S3236C23v71Ev();
extern void _ZN7S3236C23v72Ev();
extern void _ZN7S3236C12v1Ev();
extern void _ZN7S3236C12v2Ev();
extern void _ZN7S3236C12v3Ev();
static  VTBL_ENTRY vtc_S3236C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3236C1[0]),
  (VTBL_ENTRY)&_ZN7S3236C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3236C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3236C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3236C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3236C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3236C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3236C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3236C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3236C1[];
extern  VTBL_ENTRY _ZTV7S3236C1[];
Class_Descriptor cd_S3236C1 = {  "S3236C1", // class name
  bases_S3236C1, 2,
  &(vtc_S3236C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,136), // object size
  NSPAIRA(_ZTI7S3236C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3236C1),76, //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  S3284C3  {
  int s3284c3f0;
  __tsi64 s3284c3f1;
  void *s3284c3f2[4];
  int s3284c3f3[2];
  void *s3284c3f4;
  ::S3223C4_nt s3284c3f5;
  void *s3284c3f6[2];
  virtual  ~S3284C3(); // _ZN7S3284C3D1Ev
  virtual void  v5(); // _ZN7S3284C32v5Ev
  virtual void  v6(); // _ZN7S3284C32v6Ev
  virtual void  v7(); // _ZN7S3284C32v7Ev
  virtual void  v8(); // _ZN7S3284C32v8Ev
  virtual void  v9(); // _ZN7S3284C32v9Ev
  virtual void  v10(); // _ZN7S3284C33v10Ev
  virtual void  v11(); // _ZN7S3284C33v11Ev
  virtual void  v12(); // _ZN7S3284C33v12Ev
  virtual void  v13(); // _ZN7S3284C33v13Ev
  virtual void  v14(); // _ZN7S3284C33v14Ev
  virtual void  v15(); // _ZN7S3284C33v15Ev
  virtual void  v16(); // _ZN7S3284C33v16Ev
  virtual void  v17(); // _ZN7S3284C33v17Ev
  virtual void  v18(); // _ZN7S3284C33v18Ev
  virtual void  v19(); // _ZN7S3284C33v19Ev
  virtual void  v20(); // _ZN7S3284C33v20Ev
  virtual void  v21(); // _ZN7S3284C33v21Ev
  virtual void  v22(); // _ZN7S3284C33v22Ev
  virtual void  v23(); // _ZN7S3284C33v23Ev
  virtual void  v24(); // _ZN7S3284C33v24Ev
  virtual void  v25(); // _ZN7S3284C33v25Ev
  virtual void  v26(); // _ZN7S3284C33v26Ev
  virtual void  v27(); // _ZN7S3284C33v27Ev
  virtual void  v28(); // _ZN7S3284C33v28Ev
  virtual void  v29(); // _ZN7S3284C33v29Ev
  virtual void  v30(); // _ZN7S3284C33v30Ev
  virtual void  v31(); // _ZN7S3284C33v31Ev
  virtual void  v32(); // _ZN7S3284C33v32Ev
  virtual void  v33(); // _ZN7S3284C33v33Ev
  virtual void  v34(); // _ZN7S3284C33v34Ev
  virtual void  v35(); // _ZN7S3284C33v35Ev
  virtual void  v36(); // _ZN7S3284C33v36Ev
  virtual void  v37(); // _ZN7S3284C33v37Ev
  virtual void  v38(); // _ZN7S3284C33v38Ev
  virtual void  v39(); // _ZN7S3284C33v39Ev
  virtual void  v40(); // _ZN7S3284C33v40Ev
  virtual void  v41(); // _ZN7S3284C33v41Ev
  virtual void  v42(); // _ZN7S3284C33v42Ev
  virtual void  v43(); // _ZN7S3284C33v43Ev
  virtual void  v44(); // _ZN7S3284C33v44Ev
  virtual void  v45(); // _ZN7S3284C33v45Ev
  virtual void  v46(); // _ZN7S3284C33v46Ev
  virtual void  v47(); // _ZN7S3284C33v47Ev
  virtual void  v48(); // _ZN7S3284C33v48Ev
  virtual void  v49(); // _ZN7S3284C33v49Ev
  virtual void  v50(); // _ZN7S3284C33v50Ev
  virtual void  v51(); // _ZN7S3284C33v51Ev
  virtual void  v52(); // _ZN7S3284C33v52Ev
  virtual void  v53(); // _ZN7S3284C33v53Ev
  virtual void  v54(); // _ZN7S3284C33v54Ev
  virtual void  v55(); // _ZN7S3284C33v55Ev
  virtual void  v56(); // _ZN7S3284C33v56Ev
  virtual void  v57(); // _ZN7S3284C33v57Ev
  virtual void  v58(); // _ZN7S3284C33v58Ev
  virtual void  v59(); // _ZN7S3284C33v59Ev
  virtual void  v60(); // _ZN7S3284C33v60Ev
  virtual void  v61(); // _ZN7S3284C33v61Ev
  virtual void  v62(); // _ZN7S3284C33v62Ev
  virtual void  v63(); // _ZN7S3284C33v63Ev
  virtual void  v64(); // _ZN7S3284C33v64Ev
  virtual void  v65(); // _ZN7S3284C33v65Ev
  virtual void  v66(); // _ZN7S3284C33v66Ev
  virtual void  v67(); // _ZN7S3284C33v67Ev
  virtual void  v68(); // _ZN7S3284C33v68Ev
  S3284C3(); // tgen
};
//SIG(-1 S3284C3) 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]}


 S3284C3 ::~S3284C3(){ note_dtor("S3284C3", this);}
void  S3284C3 ::v5(){vfunc_called(this, "_ZN7S3284C32v5Ev");}
void  S3284C3 ::v6(){vfunc_called(this, "_ZN7S3284C32v6Ev");}
void  S3284C3 ::v7(){vfunc_called(this, "_ZN7S3284C32v7Ev");}
void  S3284C3 ::v8(){vfunc_called(this, "_ZN7S3284C32v8Ev");}
void  S3284C3 ::v9(){vfunc_called(this, "_ZN7S3284C32v9Ev");}
void  S3284C3 ::v10(){vfunc_called(this, "_ZN7S3284C33v10Ev");}
void  S3284C3 ::v11(){vfunc_called(this, "_ZN7S3284C33v11Ev");}
void  S3284C3 ::v12(){vfunc_called(this, "_ZN7S3284C33v12Ev");}
void  S3284C3 ::v13(){vfunc_called(this, "_ZN7S3284C33v13Ev");}
void  S3284C3 ::v14(){vfunc_called(this, "_ZN7S3284C33v14Ev");}
void  S3284C3 ::v15(){vfunc_called(this, "_ZN7S3284C33v15Ev");}
void  S3284C3 ::v16(){vfunc_called(this, "_ZN7S3284C33v16Ev");}
void  S3284C3 ::v17(){vfunc_called(this, "_ZN7S3284C33v17Ev");}
void  S3284C3 ::v18(){vfunc_called(this, "_ZN7S3284C33v18Ev");}
void  S3284C3 ::v19(){vfunc_called(this, "_ZN7S3284C33v19Ev");}
void  S3284C3 ::v20(){vfunc_called(this, "_ZN7S3284C33v20Ev");}
void  S3284C3 ::v21(){vfunc_called(this, "_ZN7S3284C33v21Ev");}
void  S3284C3 ::v22(){vfunc_called(this, "_ZN7S3284C33v22Ev");}
void  S3284C3 ::v23(){vfunc_called(this, "_ZN7S3284C33v23Ev");}
void  S3284C3 ::v24(){vfunc_called(this, "_ZN7S3284C33v24Ev");}
void  S3284C3 ::v25(){vfunc_called(this, "_ZN7S3284C33v25Ev");}
void  S3284C3 ::v26(){vfunc_called(this, "_ZN7S3284C33v26Ev");}
void  S3284C3 ::v27(){vfunc_called(this, "_ZN7S3284C33v27Ev");}
void  S3284C3 ::v28(){vfunc_called(this, "_ZN7S3284C33v28Ev");}
void  S3284C3 ::v29(){vfunc_called(this, "_ZN7S3284C33v29Ev");}
void  S3284C3 ::v30(){vfunc_called(this, "_ZN7S3284C33v30Ev");}
void  S3284C3 ::v31(){vfunc_called(this, "_ZN7S3284C33v31Ev");}
void  S3284C3 ::v32(){vfunc_called(this, "_ZN7S3284C33v32Ev");}
void  S3284C3 ::v33(){vfunc_called(this, "_ZN7S3284C33v33Ev");}
void  S3284C3 ::v34(){vfunc_called(this, "_ZN7S3284C33v34Ev");}
void  S3284C3 ::v35(){vfunc_called(this, "_ZN7S3284C33v35Ev");}
void  S3284C3 ::v36(){vfunc_called(this, "_ZN7S3284C33v36Ev");}
void  S3284C3 ::v37(){vfunc_called(this, "_ZN7S3284C33v37Ev");}
void  S3284C3 ::v38(){vfunc_called(this, "_ZN7S3284C33v38Ev");}
void  S3284C3 ::v39(){vfunc_called(this, "_ZN7S3284C33v39Ev");}
void  S3284C3 ::v40(){vfunc_called(this, "_ZN7S3284C33v40Ev");}
void  S3284C3 ::v41(){vfunc_called(this, "_ZN7S3284C33v41Ev");}
void  S3284C3 ::v42(){vfunc_called(this, "_ZN7S3284C33v42Ev");}
void  S3284C3 ::v43(){vfunc_called(this, "_ZN7S3284C33v43Ev");}
void  S3284C3 ::v44(){vfunc_called(this, "_ZN7S3284C33v44Ev");}
void  S3284C3 ::v45(){vfunc_called(this, "_ZN7S3284C33v45Ev");}
void  S3284C3 ::v46(){vfunc_called(this, "_ZN7S3284C33v46Ev");}
void  S3284C3 ::v47(){vfunc_called(this, "_ZN7S3284C33v47Ev");}
void  S3284C3 ::v48(){vfunc_called(this, "_ZN7S3284C33v48Ev");}
void  S3284C3 ::v49(){vfunc_called(this, "_ZN7S3284C33v49Ev");}
void  S3284C3 ::v50(){vfunc_called(this, "_ZN7S3284C33v50Ev");}
void  S3284C3 ::v51(){vfunc_called(this, "_ZN7S3284C33v51Ev");}
void  S3284C3 ::v52(){vfunc_called(this, "_ZN7S3284C33v52Ev");}
void  S3284C3 ::v53(){vfunc_called(this, "_ZN7S3284C33v53Ev");}
void  S3284C3 ::v54(){vfunc_called(this, "_ZN7S3284C33v54Ev");}
void  S3284C3 ::v55(){vfunc_called(this, "_ZN7S3284C33v55Ev");}
void  S3284C3 ::v56(){vfunc_called(this, "_ZN7S3284C33v56Ev");}
void  S3284C3 ::v57(){vfunc_called(this, "_ZN7S3284C33v57Ev");}
void  S3284C3 ::v58(){vfunc_called(this, "_ZN7S3284C33v58Ev");}
void  S3284C3 ::v59(){vfunc_called(this, "_ZN7S3284C33v59Ev");}
void  S3284C3 ::v60(){vfunc_called(this, "_ZN7S3284C33v60Ev");}
void  S3284C3 ::v61(){vfunc_called(this, "_ZN7S3284C33v61Ev");}
void  S3284C3 ::v62(){vfunc_called(this, "_ZN7S3284C33v62Ev");}
void  S3284C3 ::v63(){vfunc_called(this, "_ZN7S3284C33v63Ev");}
void  S3284C3 ::v64(){vfunc_called(this, "_ZN7S3284C33v64Ev");}
void  S3284C3 ::v65(){vfunc_called(this, "_ZN7S3284C33v65Ev");}
void  S3284C3 ::v66(){vfunc_called(this, "_ZN7S3284C33v66Ev");}
void  S3284C3 ::v67(){vfunc_called(this, "_ZN7S3284C33v67Ev");}
void  S3284C3 ::v68(){vfunc_called(this, "_ZN7S3284C33v68Ev");}
S3284C3 ::S3284C3(){ note_ctor("S3284C3", this);} // tgen

static void Test_S3284C3()
{
  extern Class_Descriptor cd_S3284C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3284C3, buf);
    S3284C3 *dp, &lv = *(dp=new (buf) S3284C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3284C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3284C3)");
    check_field_offset(lv, s3284c3f0, ABISELECT(8,4), "S3284C3.s3284c3f0");
    check_field_offset(lv, s3284c3f1, ABISELECT(16,8), "S3284C3.s3284c3f1");
    check_field_offset(lv, s3284c3f2, ABISELECT(24,16), "S3284C3.s3284c3f2");
    check_field_offset(lv, s3284c3f3, ABISELECT(56,32), "S3284C3.s3284c3f3");
    check_field_offset(lv, s3284c3f4, ABISELECT(64,40), "S3284C3.s3284c3f4");
    check_field_offset(lv, s3284c3f5, ABISELECT(72,44), "S3284C3.s3284c3f5");
    check_field_offset(lv, s3284c3f6, ABISELECT(80,52), "S3284C3.s3284c3f6");
    test_class_info(&lv, &cd_S3284C3);
    dp->~S3284C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3284C3(Test_S3284C3, "S3284C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3284C3C1Ev();
extern void _ZN7S3284C3D1Ev();
Name_Map name_map_S3284C3[] = {
  NSPAIR(_ZN7S3284C3C1Ev),
  NSPAIR(_ZN7S3284C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3284C3[];
extern void _ZN7S3284C3D1Ev();
extern void _ZN7S3284C3D0Ev();
extern void _ZN7S3284C32v5Ev();
extern void _ZN7S3284C32v6Ev();
extern void _ZN7S3284C32v7Ev();
extern void _ZN7S3284C32v8Ev();
extern void _ZN7S3284C32v9Ev();
extern void _ZN7S3284C33v10Ev();
extern void _ZN7S3284C33v11Ev();
extern void _ZN7S3284C33v12Ev();
extern void _ZN7S3284C33v13Ev();
extern void _ZN7S3284C33v14Ev();
extern void _ZN7S3284C33v15Ev();
extern void _ZN7S3284C33v16Ev();
extern void _ZN7S3284C33v17Ev();
extern void _ZN7S3284C33v18Ev();
extern void _ZN7S3284C33v19Ev();
extern void _ZN7S3284C33v20Ev();
extern void _ZN7S3284C33v21Ev();
extern void _ZN7S3284C33v22Ev();
extern void _ZN7S3284C33v23Ev();
extern void _ZN7S3284C33v24Ev();
extern void _ZN7S3284C33v25Ev();
extern void _ZN7S3284C33v26Ev();
extern void _ZN7S3284C33v27Ev();
extern void _ZN7S3284C33v28Ev();
extern void _ZN7S3284C33v29Ev();
extern void _ZN7S3284C33v30Ev();
extern void _ZN7S3284C33v31Ev();
extern void _ZN7S3284C33v32Ev();
extern void _ZN7S3284C33v33Ev();
extern void _ZN7S3284C33v34Ev();
extern void _ZN7S3284C33v35Ev();
extern void _ZN7S3284C33v36Ev();
extern void _ZN7S3284C33v37Ev();
extern void _ZN7S3284C33v38Ev();
extern void _ZN7S3284C33v39Ev();
extern void _ZN7S3284C33v40Ev();
extern void _ZN7S3284C33v41Ev();
extern void _ZN7S3284C33v42Ev();
extern void _ZN7S3284C33v43Ev();
extern void _ZN7S3284C33v44Ev();
extern void _ZN7S3284C33v45Ev();
extern void _ZN7S3284C33v46Ev();
extern void _ZN7S3284C33v47Ev();
extern void _ZN7S3284C33v48Ev();
extern void _ZN7S3284C33v49Ev();
extern void _ZN7S3284C33v50Ev();
extern void _ZN7S3284C33v51Ev();
extern void _ZN7S3284C33v52Ev();
extern void _ZN7S3284C33v53Ev();
extern void _ZN7S3284C33v54Ev();
extern void _ZN7S3284C33v55Ev();
extern void _ZN7S3284C33v56Ev();
extern void _ZN7S3284C33v57Ev();
extern void _ZN7S3284C33v58Ev();
extern void _ZN7S3284C33v59Ev();
extern void _ZN7S3284C33v60Ev();
extern void _ZN7S3284C33v61Ev();
extern void _ZN7S3284C33v62Ev();
extern void _ZN7S3284C33v63Ev();
extern void _ZN7S3284C33v64Ev();
extern void _ZN7S3284C33v65Ev();
extern void _ZN7S3284C33v66Ev();
extern void _ZN7S3284C33v67Ev();
extern void _ZN7S3284C33v68Ev();
static  VTBL_ENTRY vtc_S3284C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3284C3[0]),
  (VTBL_ENTRY)&_ZN7S3284C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3284C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v68Ev,
};
extern VTBL_ENTRY _ZTI7S3284C3[];
extern  VTBL_ENTRY _ZTV7S3284C3[];
Class_Descriptor cd_S3284C3 = {  "S3284C3", // class name
  0,0,//no base classes
  &(vtc_S3284C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3284C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3284C3),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  S3284C2  : S3284C3 {
  ::S3223C4_nt s3284c2f0;
  void *s3284c2f1;
  ::S3223C13_nt s3284c2f2;
  ::S3223C13_nt s3284c2f3;
  unsigned int s3284c2f4:1;
  unsigned int s3284c2f5:1;
  unsigned int s3284c2f6:1;
  unsigned int s3284c2f7:1;
  unsigned int s3284c2f8:1;
  unsigned int s3284c2f9:1;
  unsigned int s3284c2f10:1;
  unsigned int s3284c2f11:1;
  unsigned int s3284c2f12:1;
  unsigned int s3284c2f13:1;
  unsigned int s3284c2f14:1;
  ::S19894C34 s3284c2f15;
  ::S3223C17 s3284c2f16;
  int s3284c2f17[2];
  virtual  ~S3284C2(); // _ZN7S3284C2D1Ev
  virtual void  v69(); // _ZN7S3284C23v69Ev
  virtual void  v70(); // _ZN7S3284C23v70Ev
  virtual void  v71(); // _ZN7S3284C23v71Ev
  virtual void  v72(); // _ZN7S3284C23v72Ev
  virtual void  v73(); // _ZN7S3284C23v73Ev
  S3284C2(); // tgen
};
//SIG(-1 S3284C2) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 FC3 Fp FC4{ m Fi[3]} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m} FC6{ BC7{ BC8{ m Fp Fi[2]}}} Fi[2]}


 S3284C2 ::~S3284C2(){ note_dtor("S3284C2", this);}
void  S3284C2 ::v69(){vfunc_called(this, "_ZN7S3284C23v69Ev");}
void  S3284C2 ::v70(){vfunc_called(this, "_ZN7S3284C23v70Ev");}
void  S3284C2 ::v71(){vfunc_called(this, "_ZN7S3284C23v71Ev");}
void  S3284C2 ::v72(){vfunc_called(this, "_ZN7S3284C23v72Ev");}
void  S3284C2 ::v73(){vfunc_called(this, "_ZN7S3284C23v73Ev");}
S3284C2 ::S3284C2(){ note_ctor("S3284C2", this);} // tgen

static void Test_S3284C2()
{
  extern Class_Descriptor cd_S3284C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,31)];
    init_test(&cd_S3284C2, buf);
    S3284C2 *dp, &lv = *(dp=new (buf) S3284C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,120), "sizeof(S3284C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3284C2)");
    check_base_class_offset(lv, (S3284C3*), 0, "S3284C2");
    check_field_offset(lv, s3284c2f0, ABISELECT(96,60), "S3284C2.s3284c2f0");
    check_field_offset(lv, s3284c2f1, ABISELECT(104,68), "S3284C2.s3284c2f1");
    check_field_offset(lv, s3284c2f2, ABISELECT(112,72), "S3284C2.s3284c2f2");
    check_field_offset(lv, s3284c2f3, ABISELECT(124,84), "S3284C2.s3284c2f3");
    set_bf_and_test(lv, s3284c2f4, ABISELECT(136,96), 0, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f5, ABISELECT(136,96), 1, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f6, ABISELECT(136,96), 2, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f7, ABISELECT(136,96), 3, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f8, ABISELECT(136,96), 4, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f9, ABISELECT(136,96), 5, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f10, ABISELECT(136,96), 6, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f11, ABISELECT(136,96), 7, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f12, ABISELECT(137,97), 0, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f13, ABISELECT(137,97), 1, 1, 1, "S3284C2");
    set_bf_and_test(lv, s3284c2f14, ABISELECT(137,97), 2, 1, 1, "S3284C2");
    check_field_offset(lv, s3284c2f15, ABISELECT(138,98), "S3284C2.s3284c2f15");
    check_field_offset(lv, s3284c2f16, ABISELECT(144,100), "S3284C2.s3284c2f16");
    check_field_offset(lv, s3284c2f17, ABISELECT(160,112), "S3284C2.s3284c2f17");
    test_class_info(&lv, &cd_S3284C2);
    dp->~S3284C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3284C2(Test_S3284C2, "S3284C2", ABISELECT(168,120));

#else // __cplusplus

extern void _ZN7S3284C2C1Ev();
extern void _ZN7S3284C2D1Ev();
Name_Map name_map_S3284C2[] = {
  NSPAIR(_ZN7S3284C2C1Ev),
  NSPAIR(_ZN7S3284C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3284C3;
extern VTBL_ENTRY _ZTI7S3284C3[];
extern  VTBL_ENTRY _ZTV7S3284C3[];
static Base_Class bases_S3284C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3284C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3284C2[];
extern void _ZN7S3284C2D1Ev();
extern void _ZN7S3284C2D0Ev();
extern void _ZN7S3284C32v5Ev();
extern void _ZN7S3284C32v6Ev();
extern void _ZN7S3284C32v7Ev();
extern void _ZN7S3284C32v8Ev();
extern void _ZN7S3284C32v9Ev();
extern void _ZN7S3284C33v10Ev();
extern void _ZN7S3284C33v11Ev();
extern void _ZN7S3284C33v12Ev();
extern void _ZN7S3284C33v13Ev();
extern void _ZN7S3284C33v14Ev();
extern void _ZN7S3284C33v15Ev();
extern void _ZN7S3284C33v16Ev();
extern void _ZN7S3284C33v17Ev();
extern void _ZN7S3284C33v18Ev();
extern void _ZN7S3284C33v19Ev();
extern void _ZN7S3284C33v20Ev();
extern void _ZN7S3284C33v21Ev();
extern void _ZN7S3284C33v22Ev();
extern void _ZN7S3284C33v23Ev();
extern void _ZN7S3284C33v24Ev();
extern void _ZN7S3284C33v25Ev();
extern void _ZN7S3284C33v26Ev();
extern void _ZN7S3284C33v27Ev();
extern void _ZN7S3284C33v28Ev();
extern void _ZN7S3284C33v29Ev();
extern void _ZN7S3284C33v30Ev();
extern void _ZN7S3284C33v31Ev();
extern void _ZN7S3284C33v32Ev();
extern void _ZN7S3284C33v33Ev();
extern void _ZN7S3284C33v34Ev();
extern void _ZN7S3284C33v35Ev();
extern void _ZN7S3284C33v36Ev();
extern void _ZN7S3284C33v37Ev();
extern void _ZN7S3284C33v38Ev();
extern void _ZN7S3284C33v39Ev();
extern void _ZN7S3284C33v40Ev();
extern void _ZN7S3284C33v41Ev();
extern void _ZN7S3284C33v42Ev();
extern void _ZN7S3284C33v43Ev();
extern void _ZN7S3284C33v44Ev();
extern void _ZN7S3284C33v45Ev();
extern void _ZN7S3284C33v46Ev();
extern void _ZN7S3284C33v47Ev();
extern void _ZN7S3284C33v48Ev();
extern void _ZN7S3284C33v49Ev();
extern void _ZN7S3284C33v50Ev();
extern void _ZN7S3284C33v51Ev();
extern void _ZN7S3284C33v52Ev();
extern void _ZN7S3284C33v53Ev();
extern void _ZN7S3284C33v54Ev();
extern void _ZN7S3284C33v55Ev();
extern void _ZN7S3284C33v56Ev();
extern void _ZN7S3284C33v57Ev();
extern void _ZN7S3284C33v58Ev();
extern void _ZN7S3284C33v59Ev();
extern void _ZN7S3284C33v60Ev();
extern void _ZN7S3284C33v61Ev();
extern void _ZN7S3284C33v62Ev();
extern void _ZN7S3284C33v63Ev();
extern void _ZN7S3284C33v64Ev();
extern void _ZN7S3284C33v65Ev();
extern void _ZN7S3284C33v66Ev();
extern void _ZN7S3284C33v67Ev();
extern void _ZN7S3284C33v68Ev();
extern void _ZN7S3284C23v69Ev();
extern void _ZN7S3284C23v70Ev();
extern void _ZN7S3284C23v71Ev();
extern void _ZN7S3284C23v72Ev();
extern void _ZN7S3284C23v73Ev();
static  VTBL_ENTRY vtc_S3284C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3284C2[0]),
  (VTBL_ENTRY)&_ZN7S3284C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3284C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v73Ev,
};
extern VTBL_ENTRY _ZTI7S3284C2[];
extern  VTBL_ENTRY _ZTV7S3284C2[];
Class_Descriptor cd_S3284C2 = {  "S3284C2", // class name
  bases_S3284C2, 1,
  &(vtc_S3284C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,120), // object size
  NSPAIRA(_ZTI7S3284C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3284C2),73, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3284C1  : S3284C2 {
  virtual  ~S3284C1(); // _ZN7S3284C1D1Ev
  virtual void  v1(); // _ZN7S3284C12v1Ev
  virtual void  v2(); // _ZN7S3284C12v2Ev
  virtual void  v3(); // _ZN7S3284C12v3Ev
  virtual void  v4(); // _ZN7S3284C12v4Ev
  S3284C1(); // tgen
};
//SIG(1 S3284C1) 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 FC4 Fp FC5{ m Fi[3]} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m} FC7{ BC8{ BC9{ m Fp Fi[2]}}} Fi[2]} vd v1 v2 v3 v4}


 S3284C1 ::~S3284C1(){ note_dtor("S3284C1", this);}
void  S3284C1 ::v1(){vfunc_called(this, "_ZN7S3284C12v1Ev");}
void  S3284C1 ::v2(){vfunc_called(this, "_ZN7S3284C12v2Ev");}
void  S3284C1 ::v3(){vfunc_called(this, "_ZN7S3284C12v3Ev");}
void  S3284C1 ::v4(){vfunc_called(this, "_ZN7S3284C12v4Ev");}
S3284C1 ::S3284C1(){ note_ctor("S3284C1", this);} // tgen

static void Test_S3284C1()
{
  extern Class_Descriptor cd_S3284C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,31)];
    init_test(&cd_S3284C1, buf);
    S3284C1 *dp, &lv = *(dp=new (buf) S3284C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,120), "sizeof(S3284C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3284C1)");
    check_base_class_offset(lv, (S3284C3*)(S3284C2*), 0, "S3284C1");
    check_base_class_offset(lv, (S3284C2*), 0, "S3284C1");
    test_class_info(&lv, &cd_S3284C1);
    dp->~S3284C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3284C1(Test_S3284C1, "S3284C1", ABISELECT(168,120));

#else // __cplusplus

extern void _ZN7S3284C1C1Ev();
extern void _ZN7S3284C1D1Ev();
Name_Map name_map_S3284C1[] = {
  NSPAIR(_ZN7S3284C1C1Ev),
  NSPAIR(_ZN7S3284C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3284C3;
extern VTBL_ENTRY _ZTI7S3284C3[];
extern  VTBL_ENTRY _ZTV7S3284C3[];
extern Class_Descriptor cd_S3284C2;
extern VTBL_ENTRY _ZTI7S3284C2[];
extern  VTBL_ENTRY _ZTV7S3284C2[];
static Base_Class bases_S3284C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3284C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3284C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3284C1[];
extern void _ZN7S3284C1D1Ev();
extern void _ZN7S3284C1D0Ev();
extern void _ZN7S3284C32v5Ev();
extern void _ZN7S3284C32v6Ev();
extern void _ZN7S3284C32v7Ev();
extern void _ZN7S3284C32v8Ev();
extern void _ZN7S3284C32v9Ev();
extern void _ZN7S3284C33v10Ev();
extern void _ZN7S3284C33v11Ev();
extern void _ZN7S3284C33v12Ev();
extern void _ZN7S3284C33v13Ev();
extern void _ZN7S3284C33v14Ev();
extern void _ZN7S3284C33v15Ev();
extern void _ZN7S3284C33v16Ev();
extern void _ZN7S3284C33v17Ev();
extern void _ZN7S3284C33v18Ev();
extern void _ZN7S3284C33v19Ev();
extern void _ZN7S3284C33v20Ev();
extern void _ZN7S3284C33v21Ev();
extern void _ZN7S3284C33v22Ev();
extern void _ZN7S3284C33v23Ev();
extern void _ZN7S3284C33v24Ev();
extern void _ZN7S3284C33v25Ev();
extern void _ZN7S3284C33v26Ev();
extern void _ZN7S3284C33v27Ev();
extern void _ZN7S3284C33v28Ev();
extern void _ZN7S3284C33v29Ev();
extern void _ZN7S3284C33v30Ev();
extern void _ZN7S3284C33v31Ev();
extern void _ZN7S3284C33v32Ev();
extern void _ZN7S3284C33v33Ev();
extern void _ZN7S3284C33v34Ev();
extern void _ZN7S3284C33v35Ev();
extern void _ZN7S3284C33v36Ev();
extern void _ZN7S3284C33v37Ev();
extern void _ZN7S3284C33v38Ev();
extern void _ZN7S3284C33v39Ev();
extern void _ZN7S3284C33v40Ev();
extern void _ZN7S3284C33v41Ev();
extern void _ZN7S3284C33v42Ev();
extern void _ZN7S3284C33v43Ev();
extern void _ZN7S3284C33v44Ev();
extern void _ZN7S3284C33v45Ev();
extern void _ZN7S3284C33v46Ev();
extern void _ZN7S3284C33v47Ev();
extern void _ZN7S3284C33v48Ev();
extern void _ZN7S3284C33v49Ev();
extern void _ZN7S3284C33v50Ev();
extern void _ZN7S3284C33v51Ev();
extern void _ZN7S3284C33v52Ev();
extern void _ZN7S3284C33v53Ev();
extern void _ZN7S3284C33v54Ev();
extern void _ZN7S3284C33v55Ev();
extern void _ZN7S3284C33v56Ev();
extern void _ZN7S3284C33v57Ev();
extern void _ZN7S3284C33v58Ev();
extern void _ZN7S3284C33v59Ev();
extern void _ZN7S3284C33v60Ev();
extern void _ZN7S3284C33v61Ev();
extern void _ZN7S3284C33v62Ev();
extern void _ZN7S3284C33v63Ev();
extern void _ZN7S3284C33v64Ev();
extern void _ZN7S3284C33v65Ev();
extern void _ZN7S3284C33v66Ev();
extern void _ZN7S3284C33v67Ev();
extern void _ZN7S3284C33v68Ev();
extern void _ZN7S3284C23v69Ev();
extern void _ZN7S3284C23v70Ev();
extern void _ZN7S3284C23v71Ev();
extern void _ZN7S3284C23v72Ev();
extern void _ZN7S3284C23v73Ev();
extern void _ZN7S3284C12v1Ev();
extern void _ZN7S3284C12v2Ev();
extern void _ZN7S3284C12v3Ev();
extern void _ZN7S3284C12v4Ev();
static  VTBL_ENTRY vtc_S3284C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3284C1[0]),
  (VTBL_ENTRY)&_ZN7S3284C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3284C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3284C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3284C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3284C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3284C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3284C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3284C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3284C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3284C1[];
extern  VTBL_ENTRY _ZTV7S3284C1[];
Class_Descriptor cd_S3284C1 = {  "S3284C1", // class name
  bases_S3284C1, 2,
  &(vtc_S3284C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,120), // object size
  NSPAIRA(_ZTI7S3284C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3284C1),77, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C4  {
  ::S3445C28 s5757c4f0;
  void *s5757c4f1[8];
  unsigned int s5757c4f2:1;
  void  mf5757c4(); // _ZN7S5757C48mf5757c4Ev
};
//SIG(-1 S5757C4) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp[8] Fi:1}


void  S5757C4 ::mf5757c4(){}

static void Test_S5757C4()
{
  {
    init_simple_test("S5757C4");
    static S5757C4 lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S5757C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C4)");
    check_field_offset(lv, s5757c4f0, 0, "S5757C4.s5757c4f0");
    check_field_offset(lv, s5757c4f1, ABISELECT(16,12), "S5757C4.s5757c4f1");
    set_bf_and_test(lv, s5757c4f2, ABISELECT(80,44), 0, 1, 1, "S5757C4");
  }
}
static Arrange_To_Call_Me vS5757C4(Test_S5757C4, "S5757C4", ABISELECT(88,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C8_nt  {
  ::S3223C13_nt s5757c8f0;
  ::S3223C13_nt s5757c8f1;
  char s5757c8f2;
  void  mf5757c8(); // _ZN10S5757C8_nt8mf5757c8Ev
};
//SIG(-1 S5757C8_nt) C1{ m FC2{ m Fi[3]} FC2 Fc}


void  S5757C8_nt ::mf5757c8(){}

//skip512 S5757C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C7  {
  ::S5757C8_nt s5757c7f0;
  ::S3223C13_nt s5757c7f1;
  ::S3223C13_nt s5757c7f2;
  int s5757c7f3;
  void  mf5757c7(); // _ZN7S5757C78mf5757c7Ev
};
//SIG(-1 S5757C7) C1{ m FC2{ m FC3{ m Fi[3]} FC3 Fc} FC3 FC3 Fi}


void  S5757C7 ::mf5757c7(){}

static void Test_S5757C7()
{
  {
    init_simple_test("S5757C7");
    S5757C7 lv;
    check2(sizeof(lv), 56, "sizeof(S5757C7)");
    check2(__alignof__(lv), 4, "__alignof__(S5757C7)");
    check_field_offset(lv, s5757c7f0, 0, "S5757C7.s5757c7f0");
    check_field_offset(lv, s5757c7f1, 28, "S5757C7.s5757c7f1");
    check_field_offset(lv, s5757c7f2, 40, "S5757C7.s5757c7f2");
    check_field_offset(lv, s5757c7f3, 52, "S5757C7.s5757c7f3");
  }
}
static Arrange_To_Call_Me vS5757C7(Test_S5757C7, "S5757C7", 56);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C3  {
  ::S5757C4 s5757c3f0;
  ::S5757C7 s5757c3f1;
  void  mf5757c3(); // _ZN7S5757C38mf5757c3Ev
};
//SIG(-1 S5757C3) C1{ m FC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp[8] Fi:1} FC5{ m FC6{ m FC7{ m Fi[3]} FC7 Fc} FC7 FC7 Fi}}


void  S5757C3 ::mf5757c3(){}

static void Test_S5757C3()
{
  {
    init_simple_test("S5757C3");
    static S5757C3 lv;
    check2(sizeof(lv), ABISELECT(144,104), "sizeof(S5757C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C3)");
    check_field_offset(lv, s5757c3f0, 0, "S5757C3.s5757c3f0");
    check_field_offset(lv, s5757c3f1, ABISELECT(88,48), "S5757C3.s5757c3f1");
  }
}
static Arrange_To_Call_Me vS5757C3(Test_S5757C3, "S5757C3", ABISELECT(144,104));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C2  {
  int s5757c2f0;
  void *s5757c2f1;
  ::S5757C3 s5757c2f2;
  int s5757c2f3;
  void *s5757c2f4;
  int s5757c2f5[2];
  void  mf5757c2(); // _ZN7S5757C28mf5757c2Ev
};
//SIG(-1 S5757C2) C1{ m Fi Fp FC2{ m FC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp[8] Fi:1} FC6{ m FC7{ m FC8{ m Fi[3]} FC8 Fc} FC8 FC8 Fi}} Fi Fp Fi[2]}


void  S5757C2 ::mf5757c2(){}

static void Test_S5757C2()
{
  {
    init_simple_test("S5757C2");
    static S5757C2 lv;
    check2(sizeof(lv), ABISELECT(184,128), "sizeof(S5757C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C2)");
    check_field_offset(lv, s5757c2f0, 0, "S5757C2.s5757c2f0");
    check_field_offset(lv, s5757c2f1, ABISELECT(8,4), "S5757C2.s5757c2f1");
    check_field_offset(lv, s5757c2f2, ABISELECT(16,8), "S5757C2.s5757c2f2");
    check_field_offset(lv, s5757c2f3, ABISELECT(160,112), "S5757C2.s5757c2f3");
    check_field_offset(lv, s5757c2f4, ABISELECT(168,116), "S5757C2.s5757c2f4");
    check_field_offset(lv, s5757c2f5, ABISELECT(176,120), "S5757C2.s5757c2f5");
  }
}
static Arrange_To_Call_Me vS5757C2(Test_S5757C2, "S5757C2", ABISELECT(184,128));

#else // __cplusplus

Class_Descriptor cd_S5757C2 = {  "S5757C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(184,128), // 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  S5757C13_nt  {
  void *s5757c13f0[3];
  void  mf5757c13(); // _ZN11S5757C13_nt9mf5757c13Ev
};
//SIG(-1 S5757C13_nt) C1{ m Fp[3]}


void  S5757C13_nt ::mf5757c13(){}

//skip512 S5757C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C12_nt  {
  ::S5757C13_nt s5757c12f0;
  unsigned int s5757c12f1:1;
  virtual  ~S5757C12_nt(); // _ZN11S5757C12_ntD1Ev
  virtual void  v3(); // _ZN11S5757C12_nt2v3Ev
  virtual void  v4(); // _ZN11S5757C12_nt2v4Ev
  virtual void  v5(); // _ZN11S5757C12_nt2v5Ev
  virtual void  v6(); // _ZN11S5757C12_nt2v6Ev
  virtual void  v7(); // _ZN11S5757C12_nt2v7Ev
  virtual void  v8(); // _ZN11S5757C12_nt2v8Ev
  virtual void  v9(); // _ZN11S5757C12_nt2v9Ev
  S5757C12_nt(); // tgen
};
//SIG(-1 S5757C12_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S5757C12_nt ::~S5757C12_nt(){ note_dtor("S5757C12_nt", this);}
void  S5757C12_nt ::v3(){vfunc_called(this, "_ZN11S5757C12_nt2v3Ev");}
void  S5757C12_nt ::v4(){vfunc_called(this, "_ZN11S5757C12_nt2v4Ev");}
void  S5757C12_nt ::v5(){vfunc_called(this, "_ZN11S5757C12_nt2v5Ev");}
void  S5757C12_nt ::v6(){vfunc_called(this, "_ZN11S5757C12_nt2v6Ev");}
void  S5757C12_nt ::v7(){vfunc_called(this, "_ZN11S5757C12_nt2v7Ev");}
void  S5757C12_nt ::v8(){vfunc_called(this, "_ZN11S5757C12_nt2v8Ev");}
void  S5757C12_nt ::v9(){vfunc_called(this, "_ZN11S5757C12_nt2v9Ev");}
S5757C12_nt ::S5757C12_nt(){ note_ctor("S5757C12_nt", this);} // tgen

//skip512 S5757C12_nt

#else // __cplusplus

extern void _ZN11S5757C12_ntC1Ev();
extern void _ZN11S5757C12_ntD1Ev();
Name_Map name_map_S5757C12_nt[] = {
  NSPAIR(_ZN11S5757C12_ntC1Ev),
  NSPAIR(_ZN11S5757C12_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern void _ZN11S5757C12_ntD1Ev();
extern void _ZN11S5757C12_ntD0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
static  VTBL_ENTRY vtc_S5757C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S5757C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S5757C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
VTBL_ENTRY *P__ZTI11S5757C12_nt = _ZTI11S5757C12_nt; 
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
Class_Descriptor cd_S5757C12_nt = {  "S5757C12_nt", // class name
  0,0,//no base classes
  &(vtc_S5757C12_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI11S5757C12_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S5757C12_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  S5757C11_nt  : S5757C12_nt {
  ::S19894C6_nt s5757c11f0;
  virtual  ~S5757C11_nt(); // _ZN11S5757C11_ntD1Ev
  virtual void  v10(); // _ZN11S5757C11_nt3v10Ev
  virtual void  v11(); // _ZN11S5757C11_nt3v11Ev
  S5757C11_nt(); // tgen
};
//SIG(-1 S5757C11_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} vd v1 v2 FC4{ m Fp}}


 S5757C11_nt ::~S5757C11_nt(){ note_dtor("S5757C11_nt", this);}
void  S5757C11_nt ::v10(){vfunc_called(this, "_ZN11S5757C11_nt3v10Ev");}
void  S5757C11_nt ::v11(){vfunc_called(this, "_ZN11S5757C11_nt3v11Ev");}
S5757C11_nt ::S5757C11_nt(){ note_ctor("S5757C11_nt", this);} // tgen

//skip512 S5757C11_nt

#else // __cplusplus

extern void _ZN11S5757C11_ntC1Ev();
extern void _ZN11S5757C11_ntD1Ev();
Name_Map name_map_S5757C11_nt[] = {
  NSPAIR(_ZN11S5757C11_ntC1Ev),
  NSPAIR(_ZN11S5757C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5757C12_nt;
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
static Base_Class bases_S5757C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S5757C11_nt[];
extern void _ZN11S5757C11_ntD1Ev();
extern void _ZN11S5757C11_ntD0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
extern void _ZN11S5757C11_nt3v10Ev();
extern void _ZN11S5757C11_nt3v11Ev();
static  VTBL_ENTRY vtc_S5757C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S5757C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S5757C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S5757C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S5757C11_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S5757C11_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI11S5757C11_nt[];
VTBL_ENTRY *P__ZTI11S5757C11_nt = _ZTI11S5757C11_nt; 
extern  VTBL_ENTRY _ZTV11S5757C11_nt[];
Class_Descriptor cd_S5757C11_nt = {  "S5757C11_nt", // class name
  bases_S5757C11_nt, 1,
  &(vtc_S5757C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI11S5757C11_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S5757C11_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C10  : S5757C11_nt {
  void *s5757c10f0;
  virtual void  v1(); // _ZN8S5757C102v1Ev
  virtual void  v2(); // _ZN8S5757C102v2Ev
  ~S5757C10(); // tgen
  S5757C10(); // tgen
};
//SIG(-1 S5757C10) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 FC4{ m Fp[3]} Fi:1} vd v10 v11 FC5{ m Fp}} v1 v2 Fp}


void  S5757C10 ::v1(){vfunc_called(this, "_ZN8S5757C102v1Ev");}
void  S5757C10 ::v2(){vfunc_called(this, "_ZN8S5757C102v2Ev");}
S5757C10 ::~S5757C10(){ note_dtor("S5757C10", this);} // tgen
S5757C10 ::S5757C10(){ note_ctor("S5757C10", this);} // tgen

static void Test_S5757C10()
{
  extern Class_Descriptor cd_S5757C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S5757C10, buf);
    S5757C10 *dp, &lv = *(dp=new (buf) S5757C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S5757C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C10)");
    check_base_class_offset(lv, (S5757C12_nt*)(S5757C11_nt*), 0, "S5757C10");
    check_base_class_offset(lv, (S5757C11_nt*), 0, "S5757C10");
    check_field_offset(lv, s5757c10f0, ABISELECT(48,24), "S5757C10.s5757c10f0");
    test_class_info(&lv, &cd_S5757C10);
    dp->~S5757C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5757C10(Test_S5757C10, "S5757C10", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S5757C10C1Ev();
extern void _ZN8S5757C10D1Ev();
Name_Map name_map_S5757C10[] = {
  NSPAIR(_ZN8S5757C10C1Ev),
  NSPAIR(_ZN8S5757C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5757C12_nt;
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
extern Class_Descriptor cd_S5757C11_nt;
extern VTBL_ENTRY _ZTI11S5757C11_nt[];
extern  VTBL_ENTRY _ZTV11S5757C11_nt[];
static Base_Class bases_S5757C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5757C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S5757C10[];
extern void _ZN8S5757C10D1Ev();
extern void _ZN8S5757C10D0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
extern void _ZN11S5757C11_nt3v10Ev();
extern void _ZN11S5757C11_nt3v11Ev();
extern void _ZN8S5757C102v1Ev();
extern void _ZN8S5757C102v2Ev();
static  VTBL_ENTRY vtc_S5757C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5757C10[0]),
  (VTBL_ENTRY)&_ZN8S5757C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5757C10D0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S5757C11_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S5757C11_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S5757C102v1Ev,
  (VTBL_ENTRY)&_ZN8S5757C102v2Ev,
};
extern VTBL_ENTRY _ZTI8S5757C10[];
extern  VTBL_ENTRY _ZTV8S5757C10[];
Class_Descriptor cd_S5757C10 = {  "S5757C10", // class name
  bases_S5757C10, 2,
  &(vtc_S5757C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S5757C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S5757C10),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C18_nt  {
  void *s5757c18f0;
  int s5757c18f1[2];
};
//SIG(-1 S5757C18_nt) C1{ Fp Fi[2]}



//skip512 S5757C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C17_nt  {
  ::S5757C18_nt s5757c17f0[16];
  int s5757c17f1;
  void  mf5757c17(); // _ZN11S5757C17_nt9mf5757c17Ev
};
//SIG(-1 S5757C17_nt) C1{ m FC2{ Fp Fi[2]}[16] Fi}


void  S5757C17_nt ::mf5757c17(){}

//skip512 S5757C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C19_nt  {
  void *s5757c19f0;
  void  mf5757c19(); // _ZN11S5757C19_nt9mf5757c19Ev
};
//SIG(-1 S5757C19_nt) C1{ m Fp}


void  S5757C19_nt ::mf5757c19(){}

//skip512 S5757C19_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S5757C19_nt[];
VTBL_ENTRY *P__ZTI11S5757C19_nt = _ZTI11S5757C19_nt; 
Class_Descriptor cd_S5757C19_nt = {  "S5757C19_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S5757C19_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  S5757C21_nt  {
  char s5757c21f0[3];
  int s5757c21f1;
};
//SIG(-1 S5757C21_nt) C1{ Fc[3] Fi}



//skip512 S5757C21_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C20_nt  {
  ::S5757C21_nt s5757c20f0;
  int s5757c20f1[2];
  void  mf5757c20(); // _ZN11S5757C20_nt9mf5757c20Ev
};
//SIG(-1 S5757C20_nt) C1{ m FC2{ Fc[3] Fi} Fi[2]}


void  S5757C20_nt ::mf5757c20(){}

//skip512 S5757C20_nt

#else // __cplusplus

Class_Descriptor cd_S5757C20_nt = {  "S5757C20_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C16_nt  : S5757C12_nt {
  ::S5757C17_nt s5757c16f0;
  ::S5757C17_nt s5757c16f1;
  ::S5757C19_nt s5757c16f2;
  ::S5757C19_nt s5757c16f3;
  ::S5757C19_nt s5757c16f4;
  ::S5757C19_nt s5757c16f5;
  ::S5757C19_nt s5757c16f6;
  ::S5757C20_nt s5757c16f7;
  virtual void  v14(); // _ZN11S5757C16_nt3v14Ev
  virtual void  v15(); // _ZN11S5757C16_nt3v15Ev
  virtual void  v16(); // _ZN11S5757C16_nt3v16Ev
  ~S5757C16_nt(); // tgen
  S5757C16_nt(); // tgen
};
//SIG(-1 S5757C16_nt) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S5757C16_nt ::v14(){vfunc_called(this, "_ZN11S5757C16_nt3v14Ev");}
void  S5757C16_nt ::v15(){vfunc_called(this, "_ZN11S5757C16_nt3v15Ev");}
void  S5757C16_nt ::v16(){vfunc_called(this, "_ZN11S5757C16_nt3v16Ev");}
S5757C16_nt ::~S5757C16_nt(){ note_dtor("S5757C16_nt", this);} // tgen
S5757C16_nt ::S5757C16_nt(){ note_ctor("S5757C16_nt", this);} // tgen

//skip512 S5757C16_nt

#else // __cplusplus

extern void _ZN11S5757C16_ntC1Ev();
extern void _ZN11S5757C16_ntD1Ev();
Name_Map name_map_S5757C16_nt[] = {
  NSPAIR(_ZN11S5757C16_ntC1Ev),
  NSPAIR(_ZN11S5757C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5757C12_nt;
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
static Base_Class bases_S5757C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S5757C16_nt[];
extern void _ZN11S5757C16_ntD1Ev();
extern void _ZN11S5757C16_ntD0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
extern void _ZN11S5757C16_nt3v14Ev();
extern void _ZN11S5757C16_nt3v15Ev();
extern void _ZN11S5757C16_nt3v16Ev();
static  VTBL_ENTRY vtc_S5757C16_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S5757C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S5757C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_nt3v16Ev,
};
extern VTBL_ENTRY _ZTI11S5757C16_nt[];
VTBL_ENTRY *P__ZTI11S5757C16_nt = _ZTI11S5757C16_nt; 
extern  VTBL_ENTRY _ZTV11S5757C16_nt[];
Class_Descriptor cd_S5757C16_nt = {  "S5757C16_nt", // class name
  bases_S5757C16_nt, 1,
  &(vtc_S5757C16_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI11S5757C16_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S5757C16_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C23_nt  {
  void *s5757c23f0;
  char s5757c23f1[3];
  int s5757c23f2;
  void  mf5757c23(); // _ZN11S5757C23_nt9mf5757c23Ev
};
//SIG(-1 S5757C23_nt) C1{ m Fp Fc[3] Fi}


void  S5757C23_nt ::mf5757c23(){}

//skip512 S5757C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C22  : S5757C20_nt {
  ::S5757C23_nt s5757c22f0;
  ::S5757C23_nt s5757c22f1[3];
  ::S5757C23_nt s5757c22f2;
  ::S5757C23_nt s5757c22f3;
  ::S5757C23_nt s5757c22f4;
  ::S5757C23_nt s5757c22f5[3];
};
//SIG(-1 S5757C22) C1{ BC2{ m FC3{ Fc[3] Fi} Fi[2]} FC4{ m Fp Fc[3] Fi} FC4[3] FC4 FC4 FC4 FC4[3]}



static void Test_S5757C22()
{
  extern Class_Descriptor cd_S5757C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S5757C22, buf);
    S5757C22 &lv = *(new (buf) S5757C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S5757C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C22)");
    check_base_class_offset(lv, (S5757C20_nt*), 0, "S5757C22");
    check_field_offset(lv, s5757c22f0, 16, "S5757C22.s5757c22f0");
    check_field_offset(lv, s5757c22f1, ABISELECT(32,28), "S5757C22.s5757c22f1");
    check_field_offset(lv, s5757c22f2, ABISELECT(80,64), "S5757C22.s5757c22f2");
    check_field_offset(lv, s5757c22f3, ABISELECT(96,76), "S5757C22.s5757c22f3");
    check_field_offset(lv, s5757c22f4, ABISELECT(112,88), "S5757C22.s5757c22f4");
    check_field_offset(lv, s5757c22f5, ABISELECT(128,100), "S5757C22.s5757c22f5");
    test_class_info(&lv, &cd_S5757C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5757C22(Test_S5757C22, "S5757C22", ABISELECT(176,136));

#else // __cplusplus

extern Class_Descriptor cd_S5757C20_nt;
static Base_Class bases_S5757C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C20_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5757C22 = {  "S5757C22", // class name
  bases_S5757C22, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(176,136), // 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  S5757C15  : S5757C16_nt {
  ::S5757C22 s5757c15f0;
  virtual void  v12(); // _ZN8S5757C153v12Ev
  virtual void  v13(); // _ZN8S5757C153v13Ev
  ~S5757C15(); // tgen
  S5757C15(); // tgen
};
//SIG(-1 S5757C15) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 FC4{ m Fp[3]} Fi:1} v10 v11 v12 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 FC10{ BC8 FC11{ m Fp Fc[3] Fi} FC11[3] FC11 FC11 FC11 FC11[3]}}


void  S5757C15 ::v12(){vfunc_called(this, "_ZN8S5757C153v12Ev");}
void  S5757C15 ::v13(){vfunc_called(this, "_ZN8S5757C153v13Ev");}
S5757C15 ::~S5757C15(){ note_dtor("S5757C15", this);} // tgen
S5757C15 ::S5757C15(){ note_ctor("S5757C15", this);} // tgen

static void Test_S5757C15()
{
  extern Class_Descriptor cd_S5757C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(101,147)];
    init_test(&cd_S5757C15, buf);
    S5757C15 *dp, &lv = *(dp=new (buf) S5757C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(800,584), "sizeof(S5757C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C15)");
    check_base_class_offset(lv, (S5757C12_nt*)(S5757C16_nt*), 0, "S5757C15");
    check_base_class_offset(lv, (S5757C16_nt*), 0, "S5757C15");
    check_field_offset(lv, s5757c15f0, ABISELECT(624,448), "S5757C15.s5757c15f0");
    test_class_info(&lv, &cd_S5757C15);
    dp->~S5757C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5757C15(Test_S5757C15, "S5757C15", ABISELECT(800,584));

#else // __cplusplus

extern void _ZN8S5757C15C1Ev();
extern void _ZN8S5757C15D1Ev();
Name_Map name_map_S5757C15[] = {
  NSPAIR(_ZN8S5757C15C1Ev),
  NSPAIR(_ZN8S5757C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5757C12_nt;
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
extern Class_Descriptor cd_S5757C16_nt;
extern VTBL_ENTRY _ZTI11S5757C16_nt[];
extern  VTBL_ENTRY _ZTV11S5757C16_nt[];
static Base_Class bases_S5757C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5757C16_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S5757C15[];
extern void _ZN8S5757C15D1Ev();
extern void _ZN8S5757C15D0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
extern void _ZN11S5757C16_nt3v14Ev();
extern void _ZN11S5757C16_nt3v15Ev();
extern void _ZN11S5757C16_nt3v16Ev();
extern void _ZN8S5757C153v12Ev();
extern void _ZN8S5757C153v13Ev();
static  VTBL_ENTRY vtc_S5757C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5757C15[0]),
  (VTBL_ENTRY)&_ZN8S5757C15D1Ev,
  (VTBL_ENTRY)&_ZN8S5757C15D0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S5757C16_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S5757C153v12Ev,
  (VTBL_ENTRY)&_ZN8S5757C153v13Ev,
};
extern VTBL_ENTRY _ZTI8S5757C15[];
extern  VTBL_ENTRY _ZTV8S5757C15[];
Class_Descriptor cd_S5757C15 = {  "S5757C15", // class name
  bases_S5757C15, 2,
  &(vtc_S5757C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(800,584), // object size
  NSPAIRA(_ZTI8S5757C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S5757C15),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C25  : S5757C12_nt {
  ::S5757C19_nt s5757c25f0;
  virtual  ~S5757C25(); // _ZN8S5757C25D1Ev
  virtual void  v18(); // _ZN8S5757C253v18Ev
  virtual void  v19(); // _ZN8S5757C253v19Ev
  S5757C25(); // tgen
};
//SIG(-1 S5757C25) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} vd v1 v2 FC4{ m Fp}}


 S5757C25 ::~S5757C25(){ note_dtor("S5757C25", this);}
void  S5757C25 ::v18(){vfunc_called(this, "_ZN8S5757C253v18Ev");}
void  S5757C25 ::v19(){vfunc_called(this, "_ZN8S5757C253v19Ev");}
S5757C25 ::S5757C25(){ note_ctor("S5757C25", this);} // tgen

static void Test_S5757C25()
{
  extern Class_Descriptor cd_S5757C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S5757C25, buf);
    S5757C25 *dp, &lv = *(dp=new (buf) S5757C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S5757C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C25)");
    check_base_class_offset(lv, (S5757C12_nt*), 0, "S5757C25");
    check_field_offset(lv, s5757c25f0, ABISELECT(40,20), "S5757C25.s5757c25f0");
    test_class_info(&lv, &cd_S5757C25);
    dp->~S5757C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5757C25(Test_S5757C25, "S5757C25", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S5757C25C1Ev();
extern void _ZN8S5757C25D1Ev();
Name_Map name_map_S5757C25[] = {
  NSPAIR(_ZN8S5757C25C1Ev),
  NSPAIR(_ZN8S5757C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5757C12_nt;
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
static Base_Class bases_S5757C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5757C25[];
extern void _ZN8S5757C25D1Ev();
extern void _ZN8S5757C25D0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
extern void _ZN8S5757C253v18Ev();
extern void _ZN8S5757C253v19Ev();
static  VTBL_ENTRY vtc_S5757C25[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5757C25[0]),
  (VTBL_ENTRY)&_ZN8S5757C25D1Ev,
  (VTBL_ENTRY)&_ZN8S5757C25D0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S5757C253v18Ev,
  (VTBL_ENTRY)&_ZN8S5757C253v19Ev,
};
extern VTBL_ENTRY _ZTI8S5757C25[];
extern  VTBL_ENTRY _ZTV8S5757C25[];
Class_Descriptor cd_S5757C25 = {  "S5757C25", // class name
  bases_S5757C25, 1,
  &(vtc_S5757C25[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S5757C25),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S5757C25),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C24_nt  : S5757C25 {
  void *s5757c24f0;
  int s5757c24f1;
  virtual void  v17(); // _ZN11S5757C24_nt3v17Ev
  ~S5757C24_nt(); // tgen
  S5757C24_nt(); // tgen
};
//SIG(-1 S5757C24_nt) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[3]} Fi:1} vd v9 v10 FC5{ m Fp}} v1 Fp Fi}


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

//skip512 S5757C24_nt

#else // __cplusplus

extern void _ZN11S5757C24_ntC1Ev();
extern void _ZN11S5757C24_ntD1Ev();
Name_Map name_map_S5757C24_nt[] = {
  NSPAIR(_ZN11S5757C24_ntC1Ev),
  NSPAIR(_ZN11S5757C24_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5757C12_nt;
extern VTBL_ENTRY _ZTI11S5757C12_nt[];
extern  VTBL_ENTRY _ZTV11S5757C12_nt[];
extern Class_Descriptor cd_S5757C25;
extern VTBL_ENTRY _ZTI8S5757C25[];
extern  VTBL_ENTRY _ZTV8S5757C25[];
static Base_Class bases_S5757C24_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5757C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S5757C24_nt[];
extern void _ZN11S5757C24_ntD1Ev();
extern void _ZN11S5757C24_ntD0Ev();
extern void _ZN11S5757C12_nt2v3Ev();
extern void _ZN11S5757C12_nt2v4Ev();
extern void _ZN11S5757C12_nt2v5Ev();
extern void _ZN11S5757C12_nt2v6Ev();
extern void _ZN11S5757C12_nt2v7Ev();
extern void _ZN11S5757C12_nt2v8Ev();
extern void _ZN11S5757C12_nt2v9Ev();
extern void _ZN8S5757C253v18Ev();
extern void _ZN8S5757C253v19Ev();
extern void _ZN11S5757C24_nt3v17Ev();
static  VTBL_ENTRY vtc_S5757C24_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S5757C24_nt[0]),
  (VTBL_ENTRY)&_ZN11S5757C24_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S5757C24_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S5757C12_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S5757C253v18Ev,
  (VTBL_ENTRY)&_ZN8S5757C253v19Ev,
  (VTBL_ENTRY)&_ZN11S5757C24_nt3v17Ev,
};
extern VTBL_ENTRY _ZTI11S5757C24_nt[];
VTBL_ENTRY *P__ZTI11S5757C24_nt = _ZTI11S5757C24_nt; 
extern  VTBL_ENTRY _ZTV11S5757C24_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5757C1  : S5757C2 {
  ::S5757C10 s5757c1f0;
  ::S5757C15 s5757c1f1;
  ::S5757C24_nt s5757c1f2;
};
//SIG(1 S5757C1) C1{ BC2{ m Fi Fp FC3{ m FC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp[8] Fi:1} FC7{ m FC8{ m FC9{ m Fi[3]} FC9 Fc} FC9 FC9 Fi}} Fi Fp Fi[2]} FC10{ BC11{ BC12{ vd v3 v4 v5 v6 v7 v8 v9 FC13{ m Fp[3]} Fi:1} vd v10 v11 FC14{ m Fp}} v1 v2 Fp} FC15{ BC16{ BC12 v14 v15 v16 FC17{ m FC18{ Fp Fi[2]}[16] Fi} FC17 FC19{ m Fp} FC19 FC19 FC19 FC19 FC20{ m FC21{ Fc[3] Fi} Fi[2]}} v12 v13 FC22{ BC20 FC23{ m Fp Fc[3] Fi} FC23[3] FC23 FC23 FC23 FC23[3]}} FC24{ BC25{ BC12 vd v18 v19 FC19} v17 Fp Fi}}



static void Test_S5757C1()
{
  extern Class_Descriptor cd_S5757C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,194)];
    init_test(&cd_S5757C1, buf);
    S5757C1 &lv = *(new (buf) S5757C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,772), "sizeof(S5757C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5757C1)");
    check_base_class_offset(lv, (S5757C2*), 0, "S5757C1");
    check_field_offset(lv, s5757c1f0, ABISELECT(184,128), "S5757C1.s5757c1f0");
    check_field_offset(lv, s5757c1f1, ABISELECT(240,156), "S5757C1.s5757c1f1");
    check_field_offset(lv, s5757c1f2, ABISELECT(1040,740), "S5757C1.s5757c1f2");
    test_class_info(&lv, &cd_S5757C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5757C1(Test_S5757C1, "S5757C1", ABISELECT(1104,772));

#else // __cplusplus

extern Class_Descriptor cd_S5757C2;
static Base_Class bases_S5757C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5757C1 = {  "S5757C1", // class name
  bases_S5757C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(1104,772), // 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  S7075C2  {
  virtual void  v6(); // _ZN7S7075C22v6Ev
  ~S7075C2(); // tgen
  S7075C2(); // tgen
};
//SIG(-1 S7075C2) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7075C2C1Ev();
extern void _ZN7S7075C2D1Ev();
Name_Map name_map_S7075C2[] = {
  NSPAIR(_ZN7S7075C2C1Ev),
  NSPAIR(_ZN7S7075C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7075C2[];
extern void _ZN7S7075C22v6Ev();
static  VTBL_ENTRY vtc_S7075C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7075C2[0]),
  (VTBL_ENTRY)&_ZN7S7075C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S7075C2[];
extern  VTBL_ENTRY _ZTV7S7075C2[];
Class_Descriptor cd_S7075C2 = {  "S7075C2", // class name
  0,0,//no base classes
  &(vtc_S7075C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7075C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7075C2),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  S7075C8  {
  ::S5757C13_nt s7075c8f0;
  unsigned int s7075c8f1:1;
  virtual  ~S7075C8(); // _ZN7S7075C8D1Ev
  virtual void  v11(); // _ZN7S7075C83v11Ev
  virtual void  v12(); // _ZN7S7075C83v12Ev
  virtual void  v13(); // _ZN7S7075C83v13Ev
  virtual void  v14(); // _ZN7S7075C83v14Ev
  virtual void  v15(); // _ZN7S7075C83v15Ev
  virtual void  v16(); // _ZN7S7075C83v16Ev
  virtual void  v17(); // _ZN7S7075C83v17Ev
  S7075C8(); // tgen
};
//SIG(-1 S7075C8) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S7075C8 ::~S7075C8(){ note_dtor("S7075C8", this);}
void  S7075C8 ::v11(){vfunc_called(this, "_ZN7S7075C83v11Ev");}
void  S7075C8 ::v12(){vfunc_called(this, "_ZN7S7075C83v12Ev");}
void  S7075C8 ::v13(){vfunc_called(this, "_ZN7S7075C83v13Ev");}
void  S7075C8 ::v14(){vfunc_called(this, "_ZN7S7075C83v14Ev");}
void  S7075C8 ::v15(){vfunc_called(this, "_ZN7S7075C83v15Ev");}
void  S7075C8 ::v16(){vfunc_called(this, "_ZN7S7075C83v16Ev");}
void  S7075C8 ::v17(){vfunc_called(this, "_ZN7S7075C83v17Ev");}
S7075C8 ::S7075C8(){ note_ctor("S7075C8", this);} // tgen

static void Test_S7075C8()
{
  extern Class_Descriptor cd_S7075C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7075C8, buf);
    S7075C8 *dp, &lv = *(dp=new (buf) S7075C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7075C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C8)");
    check_field_offset(lv, s7075c8f0, ABISELECT(8,4), "S7075C8.s7075c8f0");
    set_bf_and_test(lv, s7075c8f1, ABISELECT(32,16), 0, 1, 1, "S7075C8");
    test_class_info(&lv, &cd_S7075C8);
    dp->~S7075C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C8(Test_S7075C8, "S7075C8", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7075C8C1Ev();
extern void _ZN7S7075C8D1Ev();
Name_Map name_map_S7075C8[] = {
  NSPAIR(_ZN7S7075C8C1Ev),
  NSPAIR(_ZN7S7075C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7075C8[];
extern void _ZN7S7075C8D1Ev();
extern void _ZN7S7075C8D0Ev();
extern void _ZN7S7075C83v11Ev();
extern void _ZN7S7075C83v12Ev();
extern void _ZN7S7075C83v13Ev();
extern void _ZN7S7075C83v14Ev();
extern void _ZN7S7075C83v15Ev();
extern void _ZN7S7075C83v16Ev();
extern void _ZN7S7075C83v17Ev();
static  VTBL_ENTRY vtc_S7075C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7075C8[0]),
  (VTBL_ENTRY)&_ZN7S7075C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7075C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v17Ev,
};
extern VTBL_ENTRY _ZTI7S7075C8[];
extern  VTBL_ENTRY _ZTV7S7075C8[];
Class_Descriptor cd_S7075C8 = {  "S7075C8", // class name
  0,0,//no base classes
  &(vtc_S7075C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7075C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7075C8),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  S7075C7  : S7075C8 {
  ::S5757C17_nt s7075c7f0;
  ::S5757C17_nt s7075c7f1;
  ::S19894C6_nt s7075c7f2;
  ::S19894C6_nt s7075c7f3;
  ::S19894C6_nt s7075c7f4;
  ::S19894C6_nt s7075c7f5;
  ::S19894C6_nt s7075c7f6;
  ::S5757C20_nt s7075c7f7;
  virtual void  v18(); // _ZN7S7075C73v18Ev
  virtual void  v19(); // _ZN7S7075C73v19Ev
  virtual void  v20(); // _ZN7S7075C73v20Ev
  ~S7075C7(); // tgen
  S7075C7(); // tgen
};
//SIG(-1 S7075C7) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S7075C7 ::v18(){vfunc_called(this, "_ZN7S7075C73v18Ev");}
void  S7075C7 ::v19(){vfunc_called(this, "_ZN7S7075C73v19Ev");}
void  S7075C7 ::v20(){vfunc_called(this, "_ZN7S7075C73v20Ev");}
S7075C7 ::~S7075C7(){ note_dtor("S7075C7", this);} // tgen
S7075C7 ::S7075C7(){ note_ctor("S7075C7", this);} // tgen

static void Test_S7075C7()
{
  extern Class_Descriptor cd_S7075C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S7075C7, buf);
    S7075C7 *dp, &lv = *(dp=new (buf) S7075C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S7075C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C7)");
    check_base_class_offset(lv, (S7075C8*), 0, "S7075C7");
    check_field_offset(lv, s7075c7f0, ABISELECT(40,20), "S7075C7.s7075c7f0");
    check_field_offset(lv, s7075c7f1, ABISELECT(304,216), "S7075C7.s7075c7f1");
    check_field_offset(lv, s7075c7f2, ABISELECT(568,412), "S7075C7.s7075c7f2");
    check_field_offset(lv, s7075c7f3, ABISELECT(576,416), "S7075C7.s7075c7f3");
    check_field_offset(lv, s7075c7f4, ABISELECT(584,420), "S7075C7.s7075c7f4");
    check_field_offset(lv, s7075c7f5, ABISELECT(592,424), "S7075C7.s7075c7f5");
    check_field_offset(lv, s7075c7f6, ABISELECT(600,428), "S7075C7.s7075c7f6");
    check_field_offset(lv, s7075c7f7, ABISELECT(608,432), "S7075C7.s7075c7f7");
    test_class_info(&lv, &cd_S7075C7);
    dp->~S7075C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C7(Test_S7075C7, "S7075C7", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN7S7075C7C1Ev();
extern void _ZN7S7075C7D1Ev();
Name_Map name_map_S7075C7[] = {
  NSPAIR(_ZN7S7075C7C1Ev),
  NSPAIR(_ZN7S7075C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7075C8;
extern VTBL_ENTRY _ZTI7S7075C8[];
extern  VTBL_ENTRY _ZTV7S7075C8[];
static Base_Class bases_S7075C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7075C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7075C7[];
extern void _ZN7S7075C7D1Ev();
extern void _ZN7S7075C7D0Ev();
extern void _ZN7S7075C83v11Ev();
extern void _ZN7S7075C83v12Ev();
extern void _ZN7S7075C83v13Ev();
extern void _ZN7S7075C83v14Ev();
extern void _ZN7S7075C83v15Ev();
extern void _ZN7S7075C83v16Ev();
extern void _ZN7S7075C83v17Ev();
extern void _ZN7S7075C73v18Ev();
extern void _ZN7S7075C73v19Ev();
extern void _ZN7S7075C73v20Ev();
static  VTBL_ENTRY vtc_S7075C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7075C7[0]),
  (VTBL_ENTRY)&_ZN7S7075C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7075C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v20Ev,
};
extern VTBL_ENTRY _ZTI7S7075C7[];
extern  VTBL_ENTRY _ZTV7S7075C7[];
Class_Descriptor cd_S7075C7 = {  "S7075C7", // class name
  bases_S7075C7, 1,
  &(vtc_S7075C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI7S7075C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7075C7),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7075C15  {
  ::S5757C23_nt s7075c15f0;
  ::S5757C23_nt s7075c15f1;
  ::S5757C23_nt s7075c15f2;
};
//SIG(-1 S7075C15) C1{ FC2{ m Fp Fc[3] Fi} FC2 FC2}



static void Test_S7075C15()
{
  {
    init_simple_test("S7075C15");
    S7075C15 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S7075C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C15)");
    check_field_offset(lv, s7075c15f0, 0, "S7075C15.s7075c15f0");
    check_field_offset(lv, s7075c15f1, ABISELECT(16,12), "S7075C15.s7075c15f1");
    check_field_offset(lv, s7075c15f2, ABISELECT(32,24), "S7075C15.s7075c15f2");
  }
}
static Arrange_To_Call_Me vS7075C15(Test_S7075C15, "S7075C15", ABISELECT(48,36));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7075C6  : S7075C7 {
  ::S7075C15 s7075c6f0;
  void *s7075c6f1;
  int s7075c6f2;
  virtual void  v7(); // _ZN7S7075C62v7Ev
  virtual void  v8(); // _ZN7S7075C62v8Ev
  virtual void  v9(); // _ZN7S7075C62v9Ev
  virtual void  v10(); // _ZN7S7075C63v10Ev
  ~S7075C6(); // tgen
  S7075C6(); // tgen
};
//SIG(-1 S7075C6) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[3]} Fi:1} v12 v13 v14 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 v3 v4 FC10{ FC11{ m Fp Fc[3] Fi} FC11 FC11} Fp Fi}


void  S7075C6 ::v7(){vfunc_called(this, "_ZN7S7075C62v7Ev");}
void  S7075C6 ::v8(){vfunc_called(this, "_ZN7S7075C62v8Ev");}
void  S7075C6 ::v9(){vfunc_called(this, "_ZN7S7075C62v9Ev");}
void  S7075C6 ::v10(){vfunc_called(this, "_ZN7S7075C63v10Ev");}
S7075C6 ::~S7075C6(){ note_dtor("S7075C6", this);} // tgen
S7075C6 ::S7075C6(){ note_ctor("S7075C6", this);} // tgen

static void Test_S7075C6()
{
  extern Class_Descriptor cd_S7075C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(87,124)];
    init_test(&cd_S7075C6, buf);
    S7075C6 *dp, &lv = *(dp=new (buf) S7075C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,492), "sizeof(S7075C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C6)");
    check_base_class_offset(lv, (S7075C8*)(S7075C7*), 0, "S7075C6");
    check_base_class_offset(lv, (S7075C7*), 0, "S7075C6");
    check_field_offset(lv, s7075c6f0, ABISELECT(624,448), "S7075C6.s7075c6f0");
    check_field_offset(lv, s7075c6f1, ABISELECT(672,484), "S7075C6.s7075c6f1");
    check_field_offset(lv, s7075c6f2, ABISELECT(680,488), "S7075C6.s7075c6f2");
    test_class_info(&lv, &cd_S7075C6);
    dp->~S7075C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C6(Test_S7075C6, "S7075C6", ABISELECT(688,492));

#else // __cplusplus

extern void _ZN7S7075C6C1Ev();
extern void _ZN7S7075C6D1Ev();
Name_Map name_map_S7075C6[] = {
  NSPAIR(_ZN7S7075C6C1Ev),
  NSPAIR(_ZN7S7075C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7075C8;
extern VTBL_ENTRY _ZTI7S7075C8[];
extern  VTBL_ENTRY _ZTV7S7075C8[];
extern Class_Descriptor cd_S7075C7;
extern VTBL_ENTRY _ZTI7S7075C7[];
extern  VTBL_ENTRY _ZTV7S7075C7[];
static Base_Class bases_S7075C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7075C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7075C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7075C6[];
extern void _ZN7S7075C6D1Ev();
extern void _ZN7S7075C6D0Ev();
extern void _ZN7S7075C83v11Ev();
extern void _ZN7S7075C83v12Ev();
extern void _ZN7S7075C83v13Ev();
extern void _ZN7S7075C83v14Ev();
extern void _ZN7S7075C83v15Ev();
extern void _ZN7S7075C83v16Ev();
extern void _ZN7S7075C83v17Ev();
extern void _ZN7S7075C73v18Ev();
extern void _ZN7S7075C73v19Ev();
extern void _ZN7S7075C73v20Ev();
extern void _ZN7S7075C62v7Ev();
extern void _ZN7S7075C62v8Ev();
extern void _ZN7S7075C62v9Ev();
extern void _ZN7S7075C63v10Ev();
static  VTBL_ENTRY vtc_S7075C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7075C6[0]),
  (VTBL_ENTRY)&_ZN7S7075C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7075C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7075C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7075C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7075C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7075C63v10Ev,
};
extern VTBL_ENTRY _ZTI7S7075C6[];
extern  VTBL_ENTRY _ZTV7S7075C6[];
Class_Descriptor cd_S7075C6 = {  "S7075C6", // class name
  bases_S7075C6, 2,
  &(vtc_S7075C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(688,492), // object size
  NSPAIRA(_ZTI7S7075C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7075C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7075C19  {
  ::S19894C34 s7075c19f0;
  ::S3223C13_nt s7075c19f1;
  ::S3223C4_nt s7075c19f2;
  ::S3223C13_nt s7075c19f3;
  ::S3223C13_nt s7075c19f4;
  virtual  ~S7075C19(); // _ZN8S7075C19D1Ev
  virtual void  v25(); // _ZN8S7075C193v25Ev
  virtual void  v26(); // _ZN8S7075C193v26Ev
  virtual void  v27(); // _ZN8S7075C193v27Ev
  virtual void  v28(); // _ZN8S7075C193v28Ev
  virtual void  v29(); // _ZN8S7075C193v29Ev
  virtual void  v30(); // _ZN8S7075C193v30Ev
  S7075C19(); // tgen
};
//SIG(-1 S7075C19) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m} FC3{ m Fi[3]} FC4{ m Fi[2]} FC3 FC3}


 S7075C19 ::~S7075C19(){ note_dtor("S7075C19", this);}
void  S7075C19 ::v25(){vfunc_called(this, "_ZN8S7075C193v25Ev");}
void  S7075C19 ::v26(){vfunc_called(this, "_ZN8S7075C193v26Ev");}
void  S7075C19 ::v27(){vfunc_called(this, "_ZN8S7075C193v27Ev");}
void  S7075C19 ::v28(){vfunc_called(this, "_ZN8S7075C193v28Ev");}
void  S7075C19 ::v29(){vfunc_called(this, "_ZN8S7075C193v29Ev");}
void  S7075C19 ::v30(){vfunc_called(this, "_ZN8S7075C193v30Ev");}
S7075C19 ::S7075C19(){ note_ctor("S7075C19", this);} // tgen

static void Test_S7075C19()
{
  extern Class_Descriptor cd_S7075C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S7075C19, buf);
    S7075C19 *dp, &lv = *(dp=new (buf) S7075C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S7075C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C19)");
    check_field_offset(lv, s7075c19f0, ABISELECT(8,4), "S7075C19.s7075c19f0");
    check_field_offset(lv, s7075c19f1, ABISELECT(12,8), "S7075C19.s7075c19f1");
    check_field_offset(lv, s7075c19f2, ABISELECT(24,20), "S7075C19.s7075c19f2");
    check_field_offset(lv, s7075c19f3, ABISELECT(32,28), "S7075C19.s7075c19f3");
    check_field_offset(lv, s7075c19f4, ABISELECT(44,40), "S7075C19.s7075c19f4");
    test_class_info(&lv, &cd_S7075C19);
    dp->~S7075C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C19(Test_S7075C19, "S7075C19", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN8S7075C19C1Ev();
extern void _ZN8S7075C19D1Ev();
Name_Map name_map_S7075C19[] = {
  NSPAIR(_ZN8S7075C19C1Ev),
  NSPAIR(_ZN8S7075C19D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7075C19[];
extern void _ZN8S7075C19D1Ev();
extern void _ZN8S7075C19D0Ev();
extern void _ZN8S7075C193v25Ev();
extern void _ZN8S7075C193v26Ev();
extern void _ZN8S7075C193v27Ev();
extern void _ZN8S7075C193v28Ev();
extern void _ZN8S7075C193v29Ev();
extern void _ZN8S7075C193v30Ev();
static  VTBL_ENTRY vtc_S7075C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7075C19[0]),
  (VTBL_ENTRY)&_ZN8S7075C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7075C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v25Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v26Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v27Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v28Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v29Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v30Ev,
};
extern VTBL_ENTRY _ZTI8S7075C19[];
extern  VTBL_ENTRY _ZTV8S7075C19[];
Class_Descriptor cd_S7075C19 = {  "S7075C19", // class name
  0,0,//no base classes
  &(vtc_S7075C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI8S7075C19),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7075C19),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  S7075C18  : S7075C19 {
  virtual  ~S7075C18(); // _ZN8S7075C18D1Ev
  virtual void  v31(); // _ZN8S7075C183v31Ev
  S7075C18(); // tgen
};
//SIG(-1 S7075C18) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 FC3{ m} FC4{ m Fi[3]} FC5{ m Fi[2]} FC4 FC4} vd v1}


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

static void Test_S7075C18()
{
  extern Class_Descriptor cd_S7075C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S7075C18, buf);
    S7075C18 *dp, &lv = *(dp=new (buf) S7075C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S7075C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C18)");
    check_base_class_offset(lv, (S7075C19*), 0, "S7075C18");
    test_class_info(&lv, &cd_S7075C18);
    dp->~S7075C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C18(Test_S7075C18, "S7075C18", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN8S7075C18C1Ev();
extern void _ZN8S7075C18D1Ev();
Name_Map name_map_S7075C18[] = {
  NSPAIR(_ZN8S7075C18C1Ev),
  NSPAIR(_ZN8S7075C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7075C19;
extern VTBL_ENTRY _ZTI8S7075C19[];
extern  VTBL_ENTRY _ZTV8S7075C19[];
static Base_Class bases_S7075C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7075C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7075C18[];
extern void _ZN8S7075C18D1Ev();
extern void _ZN8S7075C18D0Ev();
extern void _ZN8S7075C193v25Ev();
extern void _ZN8S7075C193v26Ev();
extern void _ZN8S7075C193v27Ev();
extern void _ZN8S7075C193v28Ev();
extern void _ZN8S7075C193v29Ev();
extern void _ZN8S7075C193v30Ev();
extern void _ZN8S7075C183v31Ev();
static  VTBL_ENTRY vtc_S7075C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7075C18[0]),
  (VTBL_ENTRY)&_ZN8S7075C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7075C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v25Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v26Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v27Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v28Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v29Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v30Ev,
  (VTBL_ENTRY)&_ZN8S7075C183v31Ev,
};
extern VTBL_ENTRY _ZTI8S7075C18[];
extern  VTBL_ENTRY _ZTV8S7075C18[];
Class_Descriptor cd_S7075C18 = {  "S7075C18", // class name
  bases_S7075C18, 1,
  &(vtc_S7075C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI8S7075C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7075C18),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  S7075C17  : S7075C18 , S7075C6 {
  virtual void  v21(); // _ZN8S7075C173v21Ev
  virtual void  v22(); // _ZN8S7075C173v22Ev
  virtual void  v23(); // _ZN8S7075C173v23Ev
  virtual void  v24(); // _ZN8S7075C173v24Ev
  ~S7075C17(); // tgen
  S7075C17(); // tgen
};
//SIG(-1 S7075C17) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 FC4{ m} FC5{ m Fi[3]} FC6{ m Fi[2]} FC5 FC5} vd v11} BC7{ BC8{ BC9{ vd v12 v13 v14 v15 v16 v17 v18 FC10{ m Fp[3]} Fi:1} v19 v20 v21 FC11{ m FC12{ Fp Fi[2]}[16] Fi} FC11 FC13{ m Fp} FC13 FC13 FC13 FC13 FC14{ m FC15{ Fc[3] Fi} Fi[2]}} v22 v23 v24 v25 FC16{ FC17{ m Fp Fc[3] Fi} FC17 FC17} Fp Fi} v1 v2 v3 v4}


void  S7075C17 ::v21(){vfunc_called(this, "_ZN8S7075C173v21Ev");}
void  S7075C17 ::v22(){vfunc_called(this, "_ZN8S7075C173v22Ev");}
void  S7075C17 ::v23(){vfunc_called(this, "_ZN8S7075C173v23Ev");}
void  S7075C17 ::v24(){vfunc_called(this, "_ZN8S7075C173v24Ev");}
S7075C17 ::~S7075C17(){ note_dtor("S7075C17", this);} // tgen
S7075C17 ::S7075C17(){ note_ctor("S7075C17", this);} // tgen

static void Test_S7075C17()
{
  extern Class_Descriptor cd_S7075C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(94,137)];
    init_test(&cd_S7075C17, buf);
    S7075C17 *dp, &lv = *(dp=new (buf) S7075C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(744,544), "sizeof(S7075C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C17)");
    check_base_class_offset(lv, (S7075C19*)(S7075C18*), 0, "S7075C17");
    check_base_class_offset(lv, (S7075C18*), 0, "S7075C17");
    check_base_class_offset(lv, (S7075C8*)(S7075C7*)(S7075C6*), ABISELECT(56,52), "S7075C17");
    check_base_class_offset(lv, (S7075C7*)(S7075C6*), ABISELECT(56,52), "S7075C17");
    check_base_class_offset(lv, (S7075C6*), ABISELECT(56,52), "S7075C17");
    test_class_info(&lv, &cd_S7075C17);
    dp->~S7075C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C17(Test_S7075C17, "S7075C17", ABISELECT(744,544));

#else // __cplusplus

extern void _ZN8S7075C17C1Ev();
extern void _ZN8S7075C17D1Ev();
Name_Map name_map_S7075C17[] = {
  NSPAIR(_ZN8S7075C17C1Ev),
  NSPAIR(_ZN8S7075C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7075C19;
extern VTBL_ENTRY _ZTI8S7075C19[];
extern  VTBL_ENTRY _ZTV8S7075C19[];
extern Class_Descriptor cd_S7075C18;
extern VTBL_ENTRY _ZTI8S7075C18[];
extern  VTBL_ENTRY _ZTV8S7075C18[];
extern Class_Descriptor cd_S7075C8;
extern VTBL_ENTRY _ZTI7S7075C8[];
extern  VTBL_ENTRY _ZTV7S7075C8[];
extern Class_Descriptor cd_S7075C7;
extern VTBL_ENTRY _ZTI7S7075C7[];
extern  VTBL_ENTRY _ZTV7S7075C7[];
extern Class_Descriptor cd_S7075C6;
extern VTBL_ENTRY _ZTI7S7075C6[];
extern  VTBL_ENTRY _ZTV7S7075C6[];
static Base_Class bases_S7075C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7075C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7075C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7075C8,    ABISELECT(56,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7075C7,    ABISELECT(56,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
    4, //immediately_derived
  0, 0},
  {&cd_S7075C6,    ABISELECT(56,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7075C17[];
extern void _ZN8S7075C17D1Ev();
extern void _ZN8S7075C17D0Ev();
extern void _ZN8S7075C193v25Ev();
extern void _ZN8S7075C193v26Ev();
extern void _ZN8S7075C193v27Ev();
extern void _ZN8S7075C193v28Ev();
extern void _ZN8S7075C193v29Ev();
extern void _ZN8S7075C193v30Ev();
extern void _ZN8S7075C183v31Ev();
extern void _ZN8S7075C173v21Ev();
extern void _ZN8S7075C173v22Ev();
extern void _ZN8S7075C173v23Ev();
extern void _ZN8S7075C173v24Ev();
extern void ABISELECT(_ZThn56_N8S7075C17D1Ev,_ZThn52_N8S7075C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S7075C17D0Ev,_ZThn52_N8S7075C17D0Ev)();
extern void _ZN7S7075C83v11Ev();
extern void _ZN7S7075C83v12Ev();
extern void _ZN7S7075C83v13Ev();
extern void _ZN7S7075C83v14Ev();
extern void _ZN7S7075C83v15Ev();
extern void _ZN7S7075C83v16Ev();
extern void _ZN7S7075C83v17Ev();
extern void _ZN7S7075C73v18Ev();
extern void _ZN7S7075C73v19Ev();
extern void _ZN7S7075C73v20Ev();
extern void _ZN7S7075C62v7Ev();
extern void _ZN7S7075C62v8Ev();
extern void _ZN7S7075C62v9Ev();
extern void _ZN7S7075C63v10Ev();
static  VTBL_ENTRY vtc_S7075C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7075C17[0]),
  (VTBL_ENTRY)&_ZN8S7075C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7075C17D0Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v25Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v26Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v27Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v28Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v29Ev,
  (VTBL_ENTRY)&_ZN8S7075C193v30Ev,
  (VTBL_ENTRY)&_ZN8S7075C183v31Ev,
  (VTBL_ENTRY)&_ZN8S7075C173v21Ev,
  (VTBL_ENTRY)&_ZN8S7075C173v22Ev,
  (VTBL_ENTRY)&_ZN8S7075C173v23Ev,
  (VTBL_ENTRY)&_ZN8S7075C173v24Ev,
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI8S7075C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7075C17D1Ev,_ZThn52_N8S7075C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7075C17D0Ev,_ZThn52_N8S7075C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7075C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7075C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7075C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7075C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7075C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7075C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7075C63v10Ev,
};
extern VTBL_ENTRY _ZTI8S7075C17[];
extern  VTBL_ENTRY _ZTV8S7075C17[];
Class_Descriptor cd_S7075C17 = {  "S7075C17", // class name
  bases_S7075C17, 5,
  &(vtc_S7075C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(744,544), // object size
  NSPAIRA(_ZTI8S7075C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7075C17),33, //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  S7075C1  : S7075C2 {
  int s7075c1f0[3];
  char s7075c1f1;
  void *s7075c1f2;
  int s7075c1f3[14];
  ::S3223C4_nt s7075c1f4;
  ::S3223C4_nt s7075c1f5;
  int s7075c1f6[2];
  void *s7075c1f7;
  int s7075c1f8[2];
  void *s7075c1f9[4];
  ::S3445C28 s7075c1f10;
  ::S7075C6 s7075c1f11;
  ::S7075C17 s7075c1f12;
  void *s7075c1f13[7];
  virtual  ~S7075C1(); // _ZN7S7075C1D1Ev
  virtual void  v1(); // _ZN7S7075C12v1Ev
  virtual void  v2(); // _ZN7S7075C12v2Ev
  virtual void  v3(); // _ZN7S7075C12v3Ev
  virtual void  v4(); // _ZN7S7075C12v4Ev
  virtual void  v5(); // _ZN7S7075C12v5Ev
  S7075C1(); // tgen
};
//SIG(1 S7075C1) C1{ BC2{ v6} vd v1 v2 v3 v4 v5 Fi[3] Fc Fp Fi[14] FC3{ m Fi[2]} FC3 Fi[2] Fp Fi[2] Fp[4] FC4{ BC5{ m Fp Fi[2]}} FC6{ BC7{ BC8{ vd v11 v12 v13 v14 v15 v16 v17 FC9{ m Fp[3]} Fi:1} v18 v19 v20 FC10{ m FC11{ Fp Fi[2]}[16] Fi} FC10 FC12{ m Fp} FC12 FC12 FC12 FC12 FC13{ m FC14{ Fc[3] Fi} Fi[2]}} v7 v8 v9 v10 FC15{ FC16{ m Fp Fc[3] Fi} FC16 FC16} Fp Fi} FC17{ BC18{ BC19{ vd v25 v26 v27 v28 v29 v30 FC20{ m} FC21{ m Fi[3]} FC3 FC21 FC21} vd v31} BC6 v21 v22 v23 v24} Fp[7]}


 S7075C1 ::~S7075C1(){ note_dtor("S7075C1", this);}
void  S7075C1 ::v1(){vfunc_called(this, "_ZN7S7075C12v1Ev");}
void  S7075C1 ::v2(){vfunc_called(this, "_ZN7S7075C12v2Ev");}
void  S7075C1 ::v3(){vfunc_called(this, "_ZN7S7075C12v3Ev");}
void  S7075C1 ::v4(){vfunc_called(this, "_ZN7S7075C12v4Ev");}
void  S7075C1 ::v5(){vfunc_called(this, "_ZN7S7075C12v5Ev");}
S7075C1 ::S7075C1(){ note_ctor("S7075C1", this);} // tgen

static void Test_S7075C1()
{
  extern Class_Descriptor cd_S7075C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(209,303)];
    init_test(&cd_S7075C1, buf);
    S7075C1 *dp, &lv = *(dp=new (buf) S7075C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1664,1208), "sizeof(S7075C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7075C1)");
    check_base_class_offset(lv, (S7075C2*), 0, "S7075C1");
    check_field_offset(lv, s7075c1f0, ABISELECT(8,4), "S7075C1.s7075c1f0");
    check_field_offset(lv, s7075c1f1, ABISELECT(20,16), "S7075C1.s7075c1f1");
    check_field_offset(lv, s7075c1f2, ABISELECT(24,20), "S7075C1.s7075c1f2");
    check_field_offset(lv, s7075c1f3, ABISELECT(32,24), "S7075C1.s7075c1f3");
    check_field_offset(lv, s7075c1f4, ABISELECT(88,80), "S7075C1.s7075c1f4");
    check_field_offset(lv, s7075c1f5, ABISELECT(96,88), "S7075C1.s7075c1f5");
    check_field_offset(lv, s7075c1f6, ABISELECT(104,96), "S7075C1.s7075c1f6");
    check_field_offset(lv, s7075c1f7, ABISELECT(112,104), "S7075C1.s7075c1f7");
    check_field_offset(lv, s7075c1f8, ABISELECT(120,108), "S7075C1.s7075c1f8");
    check_field_offset(lv, s7075c1f9, ABISELECT(128,116), "S7075C1.s7075c1f9");
    check_field_offset(lv, s7075c1f10, ABISELECT(160,132), "S7075C1.s7075c1f10");
    check_field_offset(lv, s7075c1f11, ABISELECT(176,144), "S7075C1.s7075c1f11");
    check_field_offset(lv, s7075c1f12, ABISELECT(864,636), "S7075C1.s7075c1f12");
    check_field_offset(lv, s7075c1f13, ABISELECT(1608,1180), "S7075C1.s7075c1f13");
    test_class_info(&lv, &cd_S7075C1);
    dp->~S7075C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7075C1(Test_S7075C1, "S7075C1", ABISELECT(1664,1208));

#else // __cplusplus

extern void _ZN7S7075C1C1Ev();
extern void _ZN7S7075C1D1Ev();
Name_Map name_map_S7075C1[] = {
  NSPAIR(_ZN7S7075C1C1Ev),
  NSPAIR(_ZN7S7075C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7075C2;
extern VTBL_ENTRY _ZTI7S7075C2[];
extern  VTBL_ENTRY _ZTV7S7075C2[];
static Base_Class bases_S7075C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7075C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7075C1[];
extern void _ZN7S7075C22v6Ev();
extern void _ZN7S7075C1D1Ev();
extern void _ZN7S7075C1D0Ev();
extern void _ZN7S7075C12v1Ev();
extern void _ZN7S7075C12v2Ev();
extern void _ZN7S7075C12v3Ev();
extern void _ZN7S7075C12v4Ev();
extern void _ZN7S7075C12v5Ev();
static  VTBL_ENTRY vtc_S7075C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7075C1[0]),
  (VTBL_ENTRY)&_ZN7S7075C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7075C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7075C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7075C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7075C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7075C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7075C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7075C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7075C1[];
extern  VTBL_ENTRY _ZTV7S7075C1[];
Class_Descriptor cd_S7075C1 = {  "S7075C1", // class name
  bases_S7075C1, 1,
  &(vtc_S7075C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1664,1208), // object size
  NSPAIRA(_ZTI7S7075C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7075C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C4_nt  {
  ::S3619C18_nt s2328c4f0;
  int s2328c4f1[2];
  char s2328c4f2;
  virtual  ~S2328C4_nt(); // _ZN10S2328C4_ntD1Ev
  virtual void  v5(); // _ZN10S2328C4_nt2v5Ev
  virtual void  v6(); // _ZN10S2328C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2328C4_nt2v7Ev
  S2328C4_nt(); // tgen
};
//SIG(-1 S2328C4_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2328C4_nt ::~S2328C4_nt(){ note_dtor("S2328C4_nt", this);}
void  S2328C4_nt ::v5(){vfunc_called(this, "_ZN10S2328C4_nt2v5Ev");}
void  S2328C4_nt ::v6(){vfunc_called(this, "_ZN10S2328C4_nt2v6Ev");}
void  S2328C4_nt ::v7(){vfunc_called(this, "_ZN10S2328C4_nt2v7Ev");}
S2328C4_nt ::S2328C4_nt(){ note_ctor("S2328C4_nt", this);} // tgen

//skip512 S2328C4_nt

#else // __cplusplus

extern void _ZN10S2328C4_ntC1Ev();
extern void _ZN10S2328C4_ntD1Ev();
Name_Map name_map_S2328C4_nt[] = {
  NSPAIR(_ZN10S2328C4_ntC1Ev),
  NSPAIR(_ZN10S2328C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2328C4_nt[];
extern void _ZN10S2328C4_ntD1Ev();
extern void _ZN10S2328C4_ntD0Ev();
extern void _ZN10S2328C4_nt2v5Ev();
extern void _ZN10S2328C4_nt2v6Ev();
extern void _ZN10S2328C4_nt2v7Ev();
static  VTBL_ENTRY vtc_S2328C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2328C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2328C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S2328C4_nt[];
VTBL_ENTRY *P__ZTI10S2328C4_nt = _ZTI10S2328C4_nt; 
extern  VTBL_ENTRY _ZTV10S2328C4_nt[];
Class_Descriptor cd_S2328C4_nt = {  "S2328C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2328C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S2328C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2328C4_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  S2328C7_nt  {
  virtual  ~S2328C7_nt(); // _ZN10S2328C7_ntD1Ev
  virtual void  v8(); // _ZN10S2328C7_nt2v8Ev
  virtual void  v9(); // _ZN10S2328C7_nt2v9Ev
  virtual void  v10(); // _ZN10S2328C7_nt3v10Ev
  S2328C7_nt(); // tgen
};
//SIG(-1 S2328C7_nt) C1{ vd v1 v2 v3}


 S2328C7_nt ::~S2328C7_nt(){ note_dtor("S2328C7_nt", this);}
void  S2328C7_nt ::v8(){vfunc_called(this, "_ZN10S2328C7_nt2v8Ev");}
void  S2328C7_nt ::v9(){vfunc_called(this, "_ZN10S2328C7_nt2v9Ev");}
void  S2328C7_nt ::v10(){vfunc_called(this, "_ZN10S2328C7_nt3v10Ev");}
S2328C7_nt ::S2328C7_nt(){ note_ctor("S2328C7_nt", this);} // tgen

//skip512 S2328C7_nt

#else // __cplusplus

extern void _ZN10S2328C7_ntC1Ev();
extern void _ZN10S2328C7_ntD1Ev();
Name_Map name_map_S2328C7_nt[] = {
  NSPAIR(_ZN10S2328C7_ntC1Ev),
  NSPAIR(_ZN10S2328C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2328C7_nt[];
extern void _ZN10S2328C7_ntD1Ev();
extern void _ZN10S2328C7_ntD0Ev();
extern void _ZN10S2328C7_nt2v8Ev();
extern void _ZN10S2328C7_nt2v9Ev();
extern void _ZN10S2328C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2328C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2328C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S2328C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2328C7_nt[];
VTBL_ENTRY *P__ZTI10S2328C7_nt = _ZTI10S2328C7_nt; 
extern  VTBL_ENTRY _ZTV10S2328C7_nt[];
Class_Descriptor cd_S2328C7_nt = {  "S2328C7_nt", // class name
  0,0,//no base classes
  &(vtc_S2328C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2328C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2328C7_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  S2328C3_nt  : S2328C4_nt , S2328C7_nt {
  void *s2328c3f0;
  char s2328c3f1;
  int s2328c3f2;
  virtual  ~S2328C3_nt(); // _ZN10S2328C3_ntD1Ev
  virtual void  v11(); // _ZN10S2328C3_nt3v11Ev
  virtual void  v12(); // _ZN10S2328C3_nt3v12Ev
  virtual void  v13(); // _ZN10S2328C3_nt3v13Ev
  virtual void  v14(); // _ZN10S2328C3_nt3v14Ev
  virtual void  v15(); // _ZN10S2328C3_nt3v15Ev
  virtual void  v16(); // _ZN10S2328C3_nt3v16Ev
  virtual void  v17(); // _ZN10S2328C3_nt3v17Ev
  virtual void  v18(); // _ZN10S2328C3_nt3v18Ev
  virtual void  v19(); // _ZN10S2328C3_nt3v19Ev
  virtual void  v20(); // _ZN10S2328C3_nt3v20Ev
  S2328C3_nt(); // tgen
};
//SIG(-1 S2328C3_nt) C1{ BC2{ vd v11 v12 v13 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v14 v15 v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fc Fi}


 S2328C3_nt ::~S2328C3_nt(){ note_dtor("S2328C3_nt", this);}
void  S2328C3_nt ::v11(){vfunc_called(this, "_ZN10S2328C3_nt3v11Ev");}
void  S2328C3_nt ::v12(){vfunc_called(this, "_ZN10S2328C3_nt3v12Ev");}
void  S2328C3_nt ::v13(){vfunc_called(this, "_ZN10S2328C3_nt3v13Ev");}
void  S2328C3_nt ::v14(){vfunc_called(this, "_ZN10S2328C3_nt3v14Ev");}
void  S2328C3_nt ::v15(){vfunc_called(this, "_ZN10S2328C3_nt3v15Ev");}
void  S2328C3_nt ::v16(){vfunc_called(this, "_ZN10S2328C3_nt3v16Ev");}
void  S2328C3_nt ::v17(){vfunc_called(this, "_ZN10S2328C3_nt3v17Ev");}
void  S2328C3_nt ::v18(){vfunc_called(this, "_ZN10S2328C3_nt3v18Ev");}
void  S2328C3_nt ::v19(){vfunc_called(this, "_ZN10S2328C3_nt3v19Ev");}
void  S2328C3_nt ::v20(){vfunc_called(this, "_ZN10S2328C3_nt3v20Ev");}
S2328C3_nt ::S2328C3_nt(){ note_ctor("S2328C3_nt", this);} // tgen

//skip512 S2328C3_nt

#else // __cplusplus

extern void _ZN10S2328C3_ntC1Ev();
extern void _ZN10S2328C3_ntD1Ev();
Name_Map name_map_S2328C3_nt[] = {
  NSPAIR(_ZN10S2328C3_ntC1Ev),
  NSPAIR(_ZN10S2328C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2328C4_nt;
extern VTBL_ENTRY _ZTI10S2328C4_nt[];
extern  VTBL_ENTRY _ZTV10S2328C4_nt[];
extern Class_Descriptor cd_S2328C7_nt;
extern VTBL_ENTRY _ZTI10S2328C7_nt[];
extern  VTBL_ENTRY _ZTV10S2328C7_nt[];
static Base_Class bases_S2328C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2328C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2328C7_nt,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2328C3_nt[];
extern void _ZN10S2328C3_ntD1Ev();
extern void _ZN10S2328C3_ntD0Ev();
extern void _ZN10S2328C4_nt2v5Ev();
extern void _ZN10S2328C4_nt2v6Ev();
extern void _ZN10S2328C4_nt2v7Ev();
extern void _ZN10S2328C3_nt3v11Ev();
extern void _ZN10S2328C3_nt3v12Ev();
extern void _ZN10S2328C3_nt3v13Ev();
extern void _ZN10S2328C3_nt3v14Ev();
extern void _ZN10S2328C3_nt3v15Ev();
extern void _ZN10S2328C3_nt3v16Ev();
extern void _ZN10S2328C3_nt3v17Ev();
extern void _ZN10S2328C3_nt3v18Ev();
extern void _ZN10S2328C3_nt3v19Ev();
extern void _ZN10S2328C3_nt3v20Ev();
extern void ABISELECT(_ZThn40_N10S2328C3_ntD1Ev,_ZThn28_N10S2328C3_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2328C3_ntD0Ev,_ZThn28_N10S2328C3_ntD0Ev)();
extern void _ZN10S2328C7_nt2v8Ev();
extern void _ZN10S2328C7_nt2v9Ev();
extern void _ZN10S2328C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2328C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2328C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2328C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v20Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2328C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2328C3_ntD1Ev,_ZThn28_N10S2328C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2328C3_ntD0Ev,_ZThn28_N10S2328C3_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2328C3_nt[];
VTBL_ENTRY *P__ZTI10S2328C3_nt = _ZTI10S2328C3_nt; 
extern  VTBL_ENTRY _ZTV10S2328C3_nt[];
Class_Descriptor cd_S2328C3_nt = {  "S2328C3_nt", // class name
  bases_S2328C3_nt, 2,
  &(vtc_S2328C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI10S2328C3_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2328C3_nt),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C10  {
  virtual  ~S2328C10(); // _ZN8S2328C10D1Ev
  virtual void  v21(); // _ZN8S2328C103v21Ev
  virtual void  v22(); // _ZN8S2328C103v22Ev
  virtual void  v23(); // _ZN8S2328C103v23Ev
  S2328C10(); // tgen
};
//SIG(-1 S2328C10) C1{ vd v1 v2 v3}


 S2328C10 ::~S2328C10(){ note_dtor("S2328C10", this);}
void  S2328C10 ::v21(){vfunc_called(this, "_ZN8S2328C103v21Ev");}
void  S2328C10 ::v22(){vfunc_called(this, "_ZN8S2328C103v22Ev");}
void  S2328C10 ::v23(){vfunc_called(this, "_ZN8S2328C103v23Ev");}
S2328C10 ::S2328C10(){ note_ctor("S2328C10", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S2328C10C1Ev();
extern void _ZN8S2328C10D1Ev();
Name_Map name_map_S2328C10[] = {
  NSPAIR(_ZN8S2328C10C1Ev),
  NSPAIR(_ZN8S2328C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S2328C10[];
extern void _ZN8S2328C10D1Ev();
extern void _ZN8S2328C10D0Ev();
extern void _ZN8S2328C103v21Ev();
extern void _ZN8S2328C103v22Ev();
extern void _ZN8S2328C103v23Ev();
static  VTBL_ENTRY vtc_S2328C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2328C10[0]),
  (VTBL_ENTRY)&_ZN8S2328C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2328C10D0Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v23Ev,
};
extern VTBL_ENTRY _ZTI8S2328C10[];
extern  VTBL_ENTRY _ZTV8S2328C10[];
Class_Descriptor cd_S2328C10 = {  "S2328C10", // class name
  0,0,//no base classes
  &(vtc_S2328C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2328C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S2328C10),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  S2328C9_nt  : S2328C10 {
  ::S3620C26_nt s2328c9f0;
  ::S3618C13_nt s2328c9f1;
  char s2328c9f2;
  virtual  ~S2328C9_nt(); // _ZN10S2328C9_ntD1Ev
  virtual void  v24(); // _ZN10S2328C9_nt3v24Ev
  virtual void  v25(); // _ZN10S2328C9_nt3v25Ev
  virtual void  v26(); // _ZN10S2328C9_nt3v26Ev
  S2328C9_nt(); // tgen
};
//SIG(-1 S2328C9_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ Fl[4]}} Fc}


 S2328C9_nt ::~S2328C9_nt(){ note_dtor("S2328C9_nt", this);}
void  S2328C9_nt ::v24(){vfunc_called(this, "_ZN10S2328C9_nt3v24Ev");}
void  S2328C9_nt ::v25(){vfunc_called(this, "_ZN10S2328C9_nt3v25Ev");}
void  S2328C9_nt ::v26(){vfunc_called(this, "_ZN10S2328C9_nt3v26Ev");}
S2328C9_nt ::S2328C9_nt(){ note_ctor("S2328C9_nt", this);} // tgen

//skip512 S2328C9_nt

#else // __cplusplus

extern void _ZN10S2328C9_ntC1Ev();
extern void _ZN10S2328C9_ntD1Ev();
Name_Map name_map_S2328C9_nt[] = {
  NSPAIR(_ZN10S2328C9_ntC1Ev),
  NSPAIR(_ZN10S2328C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2328C10;
extern VTBL_ENTRY _ZTI8S2328C10[];
extern  VTBL_ENTRY _ZTV8S2328C10[];
static Base_Class bases_S2328C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2328C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2328C9_nt[];
extern void _ZN10S2328C9_ntD1Ev();
extern void _ZN10S2328C9_ntD0Ev();
extern void _ZN8S2328C103v21Ev();
extern void _ZN8S2328C103v22Ev();
extern void _ZN8S2328C103v23Ev();
extern void _ZN10S2328C9_nt3v24Ev();
extern void _ZN10S2328C9_nt3v25Ev();
extern void _ZN10S2328C9_nt3v26Ev();
static  VTBL_ENTRY vtc_S2328C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2328C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2328C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S2328C9_nt[];
VTBL_ENTRY *P__ZTI10S2328C9_nt = _ZTI10S2328C9_nt; 
extern  VTBL_ENTRY _ZTV10S2328C9_nt[];
Class_Descriptor cd_S2328C9_nt = {  "S2328C9_nt", // class name
  bases_S2328C9_nt, 1,
  &(vtc_S2328C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI10S2328C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2328C9_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C8_nt  : S2328C9_nt {
  virtual  ~S2328C8_nt(); // _ZN10S2328C8_ntD1Ev
  virtual void  v27(); // _ZN10S2328C8_nt3v27Ev
  virtual void  v28(); // _ZN10S2328C8_nt3v28Ev
  virtual void  v29(); // _ZN10S2328C8_nt3v29Ev
  virtual void  v30(); // _ZN10S2328C8_nt3v30Ev
  S2328C8_nt(); // tgen
};
//SIG(-1 S2328C8_nt) C1{ BC2{ BC3{ vd v5 v6 v7} vd v8 v9 v10 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc} vd v1 v2 v3 v4}


 S2328C8_nt ::~S2328C8_nt(){ note_dtor("S2328C8_nt", this);}
void  S2328C8_nt ::v27(){vfunc_called(this, "_ZN10S2328C8_nt3v27Ev");}
void  S2328C8_nt ::v28(){vfunc_called(this, "_ZN10S2328C8_nt3v28Ev");}
void  S2328C8_nt ::v29(){vfunc_called(this, "_ZN10S2328C8_nt3v29Ev");}
void  S2328C8_nt ::v30(){vfunc_called(this, "_ZN10S2328C8_nt3v30Ev");}
S2328C8_nt ::S2328C8_nt(){ note_ctor("S2328C8_nt", this);} // tgen

//skip512 S2328C8_nt

#else // __cplusplus

extern void _ZN10S2328C8_ntC1Ev();
extern void _ZN10S2328C8_ntD1Ev();
Name_Map name_map_S2328C8_nt[] = {
  NSPAIR(_ZN10S2328C8_ntC1Ev),
  NSPAIR(_ZN10S2328C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2328C10;
extern VTBL_ENTRY _ZTI8S2328C10[];
extern  VTBL_ENTRY _ZTV8S2328C10[];
extern Class_Descriptor cd_S2328C9_nt;
extern VTBL_ENTRY _ZTI10S2328C9_nt[];
extern  VTBL_ENTRY _ZTV10S2328C9_nt[];
static Base_Class bases_S2328C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2328C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2328C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S2328C8_nt[];
extern void _ZN10S2328C8_ntD1Ev();
extern void _ZN10S2328C8_ntD0Ev();
extern void _ZN8S2328C103v21Ev();
extern void _ZN8S2328C103v22Ev();
extern void _ZN8S2328C103v23Ev();
extern void _ZN10S2328C9_nt3v24Ev();
extern void _ZN10S2328C9_nt3v25Ev();
extern void _ZN10S2328C9_nt3v26Ev();
extern void _ZN10S2328C8_nt3v27Ev();
extern void _ZN10S2328C8_nt3v28Ev();
extern void _ZN10S2328C8_nt3v29Ev();
extern void _ZN10S2328C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2328C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2328C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2328C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2328C8_nt[];
VTBL_ENTRY *P__ZTI10S2328C8_nt = _ZTI10S2328C8_nt; 
extern  VTBL_ENTRY _ZTV10S2328C8_nt[];
Class_Descriptor cd_S2328C8_nt = {  "S2328C8_nt", // class name
  bases_S2328C8_nt, 2,
  &(vtc_S2328C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI10S2328C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2328C8_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S2328C15_nt

#else // __cplusplus

extern Class_Descriptor cd_S3619C4_nt;
static Base_Class bases_S2328C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2328C2_nt  : S2328C3_nt , S2328C8_nt {
  int s2328c2f0[3];
  char s2328c2f1;
  ::S2328C15_nt s2328c2f2;
  virtual  ~S2328C2_nt(); // _ZN10S2328C2_ntD1Ev
  virtual void  v31(); // _ZN10S2328C2_nt3v31Ev
  virtual void  v32(); // _ZN10S2328C2_nt3v32Ev
  virtual void  v33(); // _ZN10S2328C2_nt3v33Ev
  virtual void  v34(); // _ZN10S2328C2_nt3v34Ev
  virtual void  v35(); // _ZN10S2328C2_nt3v35Ev
  virtual void  v36(); // _ZN10S2328C2_nt3v36Ev
  S2328C2_nt(); // tgen
};
//SIG(-1 S2328C2_nt) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} BC6{ vd v10 v11 v12} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fc Fi} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ Fl[4]}} Fc} vd v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 Fi[3] Fc FC14{ BC15{ m Fp Fi FC16{ m} FC16}}}


 S2328C2_nt ::~S2328C2_nt(){ note_dtor("S2328C2_nt", this);}
void  S2328C2_nt ::v31(){vfunc_called(this, "_ZN10S2328C2_nt3v31Ev");}
void  S2328C2_nt ::v32(){vfunc_called(this, "_ZN10S2328C2_nt3v32Ev");}
void  S2328C2_nt ::v33(){vfunc_called(this, "_ZN10S2328C2_nt3v33Ev");}
void  S2328C2_nt ::v34(){vfunc_called(this, "_ZN10S2328C2_nt3v34Ev");}
void  S2328C2_nt ::v35(){vfunc_called(this, "_ZN10S2328C2_nt3v35Ev");}
void  S2328C2_nt ::v36(){vfunc_called(this, "_ZN10S2328C2_nt3v36Ev");}
S2328C2_nt ::S2328C2_nt(){ note_ctor("S2328C2_nt", this);} // tgen

//skip512 S2328C2_nt

#else // __cplusplus

extern void _ZN10S2328C2_ntC1Ev();
extern void _ZN10S2328C2_ntD1Ev();
Name_Map name_map_S2328C2_nt[] = {
  NSPAIR(_ZN10S2328C2_ntC1Ev),
  NSPAIR(_ZN10S2328C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2328C4_nt;
extern VTBL_ENTRY _ZTI10S2328C4_nt[];
extern  VTBL_ENTRY _ZTV10S2328C4_nt[];
extern Class_Descriptor cd_S2328C7_nt;
extern VTBL_ENTRY _ZTI10S2328C7_nt[];
extern  VTBL_ENTRY _ZTV10S2328C7_nt[];
extern Class_Descriptor cd_S2328C3_nt;
extern VTBL_ENTRY _ZTI10S2328C3_nt[];
extern  VTBL_ENTRY _ZTV10S2328C3_nt[];
extern Class_Descriptor cd_S2328C10;
extern VTBL_ENTRY _ZTI8S2328C10[];
extern  VTBL_ENTRY _ZTV8S2328C10[];
extern Class_Descriptor cd_S2328C9_nt;
extern VTBL_ENTRY _ZTI10S2328C9_nt[];
extern  VTBL_ENTRY _ZTV10S2328C9_nt[];
extern Class_Descriptor cd_S2328C8_nt;
extern VTBL_ENTRY _ZTI10S2328C8_nt[];
extern  VTBL_ENTRY _ZTV10S2328C8_nt[];
static Base_Class bases_S2328C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2328C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2328C7_nt,    ABISELECT(40,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2328C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2328C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2328C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2328C8_nt,    ABISELECT(64,44), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2328C2_nt[];
extern void _ZN10S2328C2_ntD1Ev();
extern void _ZN10S2328C2_ntD0Ev();
extern void _ZN10S2328C4_nt2v5Ev();
extern void _ZN10S2328C4_nt2v6Ev();
extern void _ZN10S2328C4_nt2v7Ev();
extern void _ZN10S2328C3_nt3v11Ev();
extern void _ZN10S2328C3_nt3v12Ev();
extern void _ZN10S2328C3_nt3v13Ev();
extern void _ZN10S2328C3_nt3v14Ev();
extern void _ZN10S2328C3_nt3v15Ev();
extern void _ZN10S2328C3_nt3v16Ev();
extern void _ZN10S2328C3_nt3v17Ev();
extern void _ZN10S2328C3_nt3v18Ev();
extern void _ZN10S2328C3_nt3v19Ev();
extern void _ZN10S2328C3_nt3v20Ev();
extern void _ZN10S2328C2_nt3v31Ev();
extern void _ZN10S2328C2_nt3v32Ev();
extern void _ZN10S2328C2_nt3v33Ev();
extern void _ZN10S2328C2_nt3v34Ev();
extern void _ZN10S2328C2_nt3v35Ev();
extern void _ZN10S2328C2_nt3v36Ev();
extern void ABISELECT(_ZThn40_N10S2328C2_ntD1Ev,_ZThn28_N10S2328C2_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2328C2_ntD0Ev,_ZThn28_N10S2328C2_ntD0Ev)();
extern void _ZN10S2328C7_nt2v8Ev();
extern void _ZN10S2328C7_nt2v9Ev();
extern void _ZN10S2328C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N10S2328C2_ntD1Ev,_ZThn44_N10S2328C2_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S2328C2_ntD0Ev,_ZThn44_N10S2328C2_ntD0Ev)();
extern void _ZN8S2328C103v21Ev();
extern void _ZN8S2328C103v22Ev();
extern void _ZN8S2328C103v23Ev();
extern void _ZN10S2328C9_nt3v24Ev();
extern void _ZN10S2328C9_nt3v25Ev();
extern void _ZN10S2328C9_nt3v26Ev();
extern void _ZN10S2328C8_nt3v27Ev();
extern void _ZN10S2328C8_nt3v28Ev();
extern void _ZN10S2328C8_nt3v29Ev();
extern void _ZN10S2328C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2328C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2328C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2328C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v36Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2328C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2328C2_ntD1Ev,_ZThn28_N10S2328C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2328C2_ntD0Ev,_ZThn28_N10S2328C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI10S2328C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2328C2_ntD1Ev,_ZThn44_N10S2328C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2328C2_ntD0Ev,_ZThn44_N10S2328C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN8S2328C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2328C2_nt[];
VTBL_ENTRY *P__ZTI10S2328C2_nt = _ZTI10S2328C2_nt; 
extern  VTBL_ENTRY _ZTV10S2328C2_nt[];
Class_Descriptor cd_S2328C2_nt = {  "S2328C2_nt", // class name
  bases_S2328C2_nt, 6,
  &(vtc_S2328C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI10S2328C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2328C2_nt),44, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C19_nt  {
  void *s2328c19f0;
  virtual  ~S2328C19_nt(); // _ZN11S2328C19_ntD1Ev
  virtual void  v37(); // _ZN11S2328C19_nt3v37Ev
  virtual void  v38(); // _ZN11S2328C19_nt3v38Ev
  virtual void  v39(); // _ZN11S2328C19_nt3v39Ev
  virtual void  v40(); // _ZN11S2328C19_nt3v40Ev
  S2328C19_nt(); // tgen
};
//SIG(-1 S2328C19_nt) C1{ vd v1 v2 v3 v4 Fp}


 S2328C19_nt ::~S2328C19_nt(){ note_dtor("S2328C19_nt", this);}
void  S2328C19_nt ::v37(){vfunc_called(this, "_ZN11S2328C19_nt3v37Ev");}
void  S2328C19_nt ::v38(){vfunc_called(this, "_ZN11S2328C19_nt3v38Ev");}
void  S2328C19_nt ::v39(){vfunc_called(this, "_ZN11S2328C19_nt3v39Ev");}
void  S2328C19_nt ::v40(){vfunc_called(this, "_ZN11S2328C19_nt3v40Ev");}
S2328C19_nt ::S2328C19_nt(){ note_ctor("S2328C19_nt", this);} // tgen

//skip512 S2328C19_nt

#else // __cplusplus

extern void _ZN11S2328C19_ntC1Ev();
extern void _ZN11S2328C19_ntD1Ev();
Name_Map name_map_S2328C19_nt[] = {
  NSPAIR(_ZN11S2328C19_ntC1Ev),
  NSPAIR(_ZN11S2328C19_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2328C19_nt[];
extern void _ZN11S2328C19_ntD1Ev();
extern void _ZN11S2328C19_ntD0Ev();
extern void _ZN11S2328C19_nt3v37Ev();
extern void _ZN11S2328C19_nt3v38Ev();
extern void _ZN11S2328C19_nt3v39Ev();
extern void _ZN11S2328C19_nt3v40Ev();
static  VTBL_ENTRY vtc_S2328C19_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2328C19_nt[0]),
  (VTBL_ENTRY)&_ZN11S2328C19_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2328C19_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2328C19_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S2328C19_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S2328C19_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S2328C19_nt3v40Ev,
};
extern VTBL_ENTRY _ZTI11S2328C19_nt[];
VTBL_ENTRY *P__ZTI11S2328C19_nt = _ZTI11S2328C19_nt; 
extern  VTBL_ENTRY _ZTV11S2328C19_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C23_nt  {
  void *s2328c23f0;
  int s2328c23f1;
  ::S19894C34 s2328c23f2;
  ::S19894C17_nt s2328c23f3;
  void  mf2328c23(); // _ZN11S2328C23_nt9mf2328c23Ev
};
//SIG(-1 S2328C23_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S2328C23_nt ::mf2328c23(){}

//skip512 S2328C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C22_nt  {
  ::S2328C23_nt s2328c22f0;
  void  mf2328c22(); // _ZN11S2328C22_nt9mf2328c22Ev
};
//SIG(-1 S2328C22_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}}}


void  S2328C22_nt ::mf2328c22(){}

//skip512 S2328C22_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C21_nt  {
  ::S2328C22_nt s2328c21f0;
  void *s2328c21f1[3];
  char s2328c21f2;
  virtual  ~S2328C21_nt(); // _ZN11S2328C21_ntD1Ev
  virtual void  v42(); // _ZN11S2328C21_nt3v42Ev
  S2328C21_nt(); // tgen
};
//SIG(-1 S2328C21_nt) C1{ vd v1 FC2{ m FC3{ m Fp Fi FC4{ m} FC5{ m}}} Fp[3] Fc}


 S2328C21_nt ::~S2328C21_nt(){ note_dtor("S2328C21_nt", this);}
void  S2328C21_nt ::v42(){vfunc_called(this, "_ZN11S2328C21_nt3v42Ev");}
S2328C21_nt ::S2328C21_nt(){ note_ctor("S2328C21_nt", this);} // tgen

//skip512 S2328C21_nt

#else // __cplusplus

extern void _ZN11S2328C21_ntC1Ev();
extern void _ZN11S2328C21_ntD1Ev();
Name_Map name_map_S2328C21_nt[] = {
  NSPAIR(_ZN11S2328C21_ntC1Ev),
  NSPAIR(_ZN11S2328C21_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2328C21_nt[];
extern void _ZN11S2328C21_ntD1Ev();
extern void _ZN11S2328C21_ntD0Ev();
extern void _ZN11S2328C21_nt3v42Ev();
static  VTBL_ENTRY vtc_S2328C21_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2328C21_nt[0]),
  (VTBL_ENTRY)&_ZN11S2328C21_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2328C21_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2328C21_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S2328C21_nt[];
VTBL_ENTRY *P__ZTI11S2328C21_nt = _ZTI11S2328C21_nt; 
extern  VTBL_ENTRY _ZTV11S2328C21_nt[];
Class_Descriptor cd_S2328C21_nt = {  "S2328C21_nt", // class name
  0,0,//no base classes
  &(vtc_S2328C21_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI11S2328C21_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S2328C21_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C20_nt  : S2328C21_nt {
  void *s2328c20f0;
  virtual void  v41(); // _ZN11S2328C20_nt3v41Ev
  ~S2328C20_nt(); // tgen
  S2328C20_nt(); // tgen
};
//SIG(-1 S2328C20_nt) C1{ BC2{ vd v2 FC3{ m FC4{ m Fp Fi FC5{ m} FC6{ m}}} Fp[3] Fc} v1 Fp}


void  S2328C20_nt ::v41(){vfunc_called(this, "_ZN11S2328C20_nt3v41Ev");}
S2328C20_nt ::~S2328C20_nt(){ note_dtor("S2328C20_nt", this);} // tgen
S2328C20_nt ::S2328C20_nt(){ note_ctor("S2328C20_nt", this);} // tgen

//skip512 S2328C20_nt

#else // __cplusplus

extern void _ZN11S2328C20_ntC1Ev();
extern void _ZN11S2328C20_ntD1Ev();
Name_Map name_map_S2328C20_nt[] = {
  NSPAIR(_ZN11S2328C20_ntC1Ev),
  NSPAIR(_ZN11S2328C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2328C21_nt;
extern VTBL_ENTRY _ZTI11S2328C21_nt[];
extern  VTBL_ENTRY _ZTV11S2328C21_nt[];
static Base_Class bases_S2328C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2328C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S2328C20_nt[];
extern void _ZN11S2328C20_ntD1Ev();
extern void _ZN11S2328C20_ntD0Ev();
extern void _ZN11S2328C21_nt3v42Ev();
extern void _ZN11S2328C20_nt3v41Ev();
static  VTBL_ENTRY vtc_S2328C20_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2328C20_nt[0]),
  (VTBL_ENTRY)&_ZN11S2328C20_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2328C20_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2328C21_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S2328C20_nt3v41Ev,
};
extern VTBL_ENTRY _ZTI11S2328C20_nt[];
VTBL_ENTRY *P__ZTI11S2328C20_nt = _ZTI11S2328C20_nt; 
extern  VTBL_ENTRY _ZTV11S2328C20_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2328C1  : S2328C2_nt {
  ::S2328C19_nt s2328c1f0;
  ::S2328C20_nt s2328c1f1;
  int s2328c1f2[2];
  virtual  ~S2328C1(); // _ZN7S2328C1D1Ev
  virtual void  v1(); // _ZN7S2328C12v1Ev
  virtual void  v2(); // _ZN7S2328C12v2Ev
  virtual void  v3(); // _ZN7S2328C12v3Ev
  virtual void  v4(); // _ZN7S2328C12v4Ev
  S2328C1(); // tgen
};
//SIG(1 S2328C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} BC7{ vd v8 v9 v10} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp Fc Fi} BC8{ BC9{ BC10{ vd v21 v22 v23} vd v24 v25 v26 FC11{ m Fp Fi[2] FC12{ m}} FC13{ m FC14{ Fl[4]}} Fc} vd v27 v28 v29 v30} vd v31 v32 v33 v34 v35 v36 Fi[3] Fc FC15{ BC16{ m Fp Fi FC17{ m} FC17}}} vd v1 v2 v3 v4 FC18{ vd v37 v38 v39 v40 Fp} FC19{ BC20{ vd v42 FC21{ m FC22{ m Fp Fi FC23{ m} FC24{ m}}} Fp[3] Fc} v41 Fp} Fi[2]}


 S2328C1 ::~S2328C1(){ note_dtor("S2328C1", this);}
void  S2328C1 ::v1(){vfunc_called(this, "_ZN7S2328C12v1Ev");}
void  S2328C1 ::v2(){vfunc_called(this, "_ZN7S2328C12v2Ev");}
void  S2328C1 ::v3(){vfunc_called(this, "_ZN7S2328C12v3Ev");}
void  S2328C1 ::v4(){vfunc_called(this, "_ZN7S2328C12v4Ev");}
S2328C1 ::S2328C1(){ note_ctor("S2328C1", this);} // tgen

static void Test_S2328C1()
{
  extern Class_Descriptor cd_S2328C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,42)];
    init_test(&cd_S2328C1, buf);
    S2328C1 *dp, &lv = *(dp=new (buf) S2328C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,164), "sizeof(S2328C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2328C1)");
    check_base_class_offset(lv, (S2328C4_nt*)(S2328C3_nt*)(S2328C2_nt*), 0, "S2328C1");
    check_base_class_offset(lv, (S2328C7_nt*)(S2328C3_nt*)(S2328C2_nt*), ABISELECT(40,28), "S2328C1");
    check_base_class_offset(lv, (S2328C3_nt*)(S2328C2_nt*), 0, "S2328C1");
    check_base_class_offset(lv, (S2328C10*)(S2328C9_nt*)(S2328C8_nt*)(S2328C2_nt*), ABISELECT(64,44), "S2328C1");
    check_base_class_offset(lv, (S2328C9_nt*)(S2328C8_nt*)(S2328C2_nt*), ABISELECT(64,44), "S2328C1");
    check_base_class_offset(lv, (S2328C8_nt*)(S2328C2_nt*), ABISELECT(64,44), "S2328C1");
    check_base_class_offset(lv, (S2328C2_nt*), 0, "S2328C1");
    check_field_offset(lv, s2328c1f0, ABISELECT(168,112), "S2328C1.s2328c1f0");
    check_field_offset(lv, s2328c1f1, ABISELECT(184,120), "S2328C1.s2328c1f1");
    check_field_offset(lv, s2328c1f2, ABISELECT(248,156), "S2328C1.s2328c1f2");
    test_class_info(&lv, &cd_S2328C1);
    dp->~S2328C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2328C1(Test_S2328C1, "S2328C1", ABISELECT(256,164));

#else // __cplusplus

extern void _ZN7S2328C1C1Ev();
extern void _ZN7S2328C1D1Ev();
Name_Map name_map_S2328C1[] = {
  NSPAIR(_ZN7S2328C1C1Ev),
  NSPAIR(_ZN7S2328C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2328C4_nt;
extern VTBL_ENTRY _ZTI10S2328C4_nt[];
extern  VTBL_ENTRY _ZTV10S2328C4_nt[];
extern Class_Descriptor cd_S2328C7_nt;
extern VTBL_ENTRY _ZTI10S2328C7_nt[];
extern  VTBL_ENTRY _ZTV10S2328C7_nt[];
extern Class_Descriptor cd_S2328C3_nt;
extern VTBL_ENTRY _ZTI10S2328C3_nt[];
extern  VTBL_ENTRY _ZTV10S2328C3_nt[];
extern Class_Descriptor cd_S2328C10;
extern VTBL_ENTRY _ZTI8S2328C10[];
extern  VTBL_ENTRY _ZTV8S2328C10[];
extern Class_Descriptor cd_S2328C9_nt;
extern VTBL_ENTRY _ZTI10S2328C9_nt[];
extern  VTBL_ENTRY _ZTV10S2328C9_nt[];
extern Class_Descriptor cd_S2328C8_nt;
extern VTBL_ENTRY _ZTI10S2328C8_nt[];
extern  VTBL_ENTRY _ZTV10S2328C8_nt[];
extern Class_Descriptor cd_S2328C2_nt;
extern VTBL_ENTRY _ZTI10S2328C2_nt[];
extern  VTBL_ENTRY _ZTV10S2328C2_nt[];
static Base_Class bases_S2328C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2328C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2328C7_nt,    ABISELECT(40,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2328C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2328C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2328C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2328C8_nt,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2328C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2328C1[];
extern void _ZN7S2328C1D1Ev();
extern void _ZN7S2328C1D0Ev();
extern void _ZN10S2328C4_nt2v5Ev();
extern void _ZN10S2328C4_nt2v6Ev();
extern void _ZN10S2328C4_nt2v7Ev();
extern void _ZN10S2328C3_nt3v11Ev();
extern void _ZN10S2328C3_nt3v12Ev();
extern void _ZN10S2328C3_nt3v13Ev();
extern void _ZN10S2328C3_nt3v14Ev();
extern void _ZN10S2328C3_nt3v15Ev();
extern void _ZN10S2328C3_nt3v16Ev();
extern void _ZN10S2328C3_nt3v17Ev();
extern void _ZN10S2328C3_nt3v18Ev();
extern void _ZN10S2328C3_nt3v19Ev();
extern void _ZN10S2328C3_nt3v20Ev();
extern void _ZN10S2328C2_nt3v31Ev();
extern void _ZN10S2328C2_nt3v32Ev();
extern void _ZN10S2328C2_nt3v33Ev();
extern void _ZN10S2328C2_nt3v34Ev();
extern void _ZN10S2328C2_nt3v35Ev();
extern void _ZN10S2328C2_nt3v36Ev();
extern void _ZN7S2328C12v1Ev();
extern void _ZN7S2328C12v2Ev();
extern void _ZN7S2328C12v3Ev();
extern void _ZN7S2328C12v4Ev();
extern void ABISELECT(_ZThn40_N7S2328C1D1Ev,_ZThn28_N7S2328C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S2328C1D0Ev,_ZThn28_N7S2328C1D0Ev)();
extern void _ZN10S2328C7_nt2v8Ev();
extern void _ZN10S2328C7_nt2v9Ev();
extern void _ZN10S2328C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N7S2328C1D1Ev,_ZThn44_N7S2328C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2328C1D0Ev,_ZThn44_N7S2328C1D0Ev)();
extern void _ZN8S2328C103v21Ev();
extern void _ZN8S2328C103v22Ev();
extern void _ZN8S2328C103v23Ev();
extern void _ZN10S2328C9_nt3v24Ev();
extern void _ZN10S2328C9_nt3v25Ev();
extern void _ZN10S2328C9_nt3v26Ev();
extern void _ZN10S2328C8_nt3v27Ev();
extern void _ZN10S2328C8_nt3v28Ev();
extern void _ZN10S2328C8_nt3v29Ev();
extern void _ZN10S2328C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2328C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2328C1[0]),
  (VTBL_ENTRY)&_ZN7S2328C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2328C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2328C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2328C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2328C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN7S2328C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2328C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2328C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2328C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S2328C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2328C1D1Ev,_ZThn28_N7S2328C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2328C1D0Ev,_ZThn28_N7S2328C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2328C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S2328C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2328C1D1Ev,_ZThn44_N7S2328C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2328C1D0Ev,_ZThn44_N7S2328C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2328C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2328C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2328C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2328C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI7S2328C1[];
extern  VTBL_ENTRY _ZTV7S2328C1[];
Class_Descriptor cd_S2328C1 = {  "S2328C1", // class name
  bases_S2328C1, 7,
  &(vtc_S2328C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,164), // object size
  NSPAIRA(_ZTI7S2328C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2328C1),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9740C5_nt  {
  int s9740c5f0;
  char s9740c5f1[3];
  virtual  ~S9740C5_nt(); // _ZN10S9740C5_ntD1Ev
  virtual void  v8(); // _ZN10S9740C5_nt2v8Ev
  S9740C5_nt(); // tgen
};
//SIG(-1 S9740C5_nt) C1{ vd v1 Fi Fc[3]}


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

//skip512 S9740C5_nt

#else // __cplusplus

extern void _ZN10S9740C5_ntC1Ev();
extern void _ZN10S9740C5_ntD1Ev();
Name_Map name_map_S9740C5_nt[] = {
  NSPAIR(_ZN10S9740C5_ntC1Ev),
  NSPAIR(_ZN10S9740C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9740C5_nt[];
extern void _ZN10S9740C5_ntD1Ev();
extern void _ZN10S9740C5_ntD0Ev();
extern void _ZN10S9740C5_nt2v8Ev();
static  VTBL_ENTRY vtc_S9740C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9740C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S9740C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9740C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9740C5_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S9740C5_nt[];
VTBL_ENTRY *P__ZTI10S9740C5_nt = _ZTI10S9740C5_nt; 
extern  VTBL_ENTRY _ZTV10S9740C5_nt[];
Class_Descriptor cd_S9740C5_nt = {  "S9740C5_nt", // class name
  0,0,//no base classes
  &(vtc_S9740C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S9740C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9740C5_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  S9740C11  {
  ::S2328C23_nt s9740c11f0;
  ::S3619C13_nt s9740c11f1;
  void  mf9740c11(); // _ZN8S9740C119mf9740c11Ev
};
//SIG(-1 S9740C11) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FC6{ FL[4]}}}


void  S9740C11 ::mf9740c11(){}

static void Test_S9740C11()
{
  {
    init_simple_test("S9740C11");
    S9740C11 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S9740C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C11)");
    check_field_offset(lv, s9740c11f0, 0, "S9740C11.s9740c11f0");
    check_field_offset(lv, s9740c11f1, ABISELECT(16,12), "S9740C11.s9740c11f1");
  }
}
static Arrange_To_Call_Me vS9740C11(Test_S9740C11, "S9740C11", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9740C15  {
  ::S2328C23_nt s9740c15f0;
  ::S3223C8_nt s9740c15f1;
  ::S3619C13_nt s9740c15f2;
  void  mf9740c15(); // _ZN8S9740C159mf9740c15Ev
};
//SIG(-1 S9740C15) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m Fi} FC6{ m FC7{ FL[4]}}}


void  S9740C15 ::mf9740c15(){}

static void Test_S9740C15()
{
  {
    init_simple_test("S9740C15");
    S9740C15 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S9740C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C15)");
    check_field_offset(lv, s9740c15f0, 0, "S9740C15.s9740c15f0");
    check_field_offset(lv, s9740c15f1, ABISELECT(16,12), "S9740C15.s9740c15f1");
    check_field_offset(lv, s9740c15f2, ABISELECT(24,16), "S9740C15.s9740c15f2");
  }
}
static Arrange_To_Call_Me vS9740C15(Test_S9740C15, "S9740C15", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9740C4  : S9740C5_nt {
  ::S3619C4_nt s9740c4f0;
  ::S3619C13_nt s9740c4f1;
  ::S9740C11 s9740c4f2;
  ::S9740C15 s9740c4f3;
  virtual  ~S9740C4(); // _ZN7S9740C4D1Ev
  virtual void  v7(); // _ZN7S9740C42v7Ev
  S9740C4(); // tgen
};
//SIG(-1 S9740C4) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 FC3{ m Fp Fi FC4{ m} FC4} FC5{ m FC6{ FL[4]}} FC7{ m FC8{ m Fp Fi FC9{ m} FC10{ m}} FC5} FC11{ m FC8 FC12{ m Fi} FC5}}


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

static void Test_S9740C4()
{
  extern Class_Descriptor cd_S9740C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9740C4, buf);
    S9740C4 *dp, &lv = *(dp=new (buf) S9740C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9740C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C4)");
    check_base_class_offset(lv, (S9740C5_nt*), 0, "S9740C4");
    check_field_offset(lv, s9740c4f0, ABISELECT(16,12), "S9740C4.s9740c4f0");
    check_field_offset(lv, s9740c4f1, ABISELECT(32,24), "S9740C4.s9740c4f1");
    check_field_offset(lv, s9740c4f2, ABISELECT(64,56), "S9740C4.s9740c4f2");
    check_field_offset(lv, s9740c4f3, ABISELECT(112,100), "S9740C4.s9740c4f3");
    test_class_info(&lv, &cd_S9740C4);
    dp->~S9740C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9740C4(Test_S9740C4, "S9740C4", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9740C4C1Ev();
extern void _ZN7S9740C4D1Ev();
Name_Map name_map_S9740C4[] = {
  NSPAIR(_ZN7S9740C4C1Ev),
  NSPAIR(_ZN7S9740C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9740C5_nt;
extern VTBL_ENTRY _ZTI10S9740C5_nt[];
extern  VTBL_ENTRY _ZTV10S9740C5_nt[];
static Base_Class bases_S9740C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9740C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9740C4[];
extern void _ZN7S9740C4D1Ev();
extern void _ZN7S9740C4D0Ev();
extern void _ZN10S9740C5_nt2v8Ev();
extern void _ZN7S9740C42v7Ev();
static  VTBL_ENTRY vtc_S9740C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9740C4[0]),
  (VTBL_ENTRY)&_ZN7S9740C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9740C4D0Ev,
  (VTBL_ENTRY)&_ZN10S9740C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S9740C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S9740C4[];
extern  VTBL_ENTRY _ZTV7S9740C4[];
Class_Descriptor cd_S9740C4 = {  "S9740C4", // class name
  bases_S9740C4, 1,
  &(vtc_S9740C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9740C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9740C4),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  S9740C17  {
  ::S19894C6_nt s9740c17f0;
  ::S2328C15_nt s9740c17f1;
  ::S3619C13_nt s9740c17f2;
  char s9740c17f3;
  ::S3619C18_nt s9740c17f4;
  void  mf9740c17(); // _ZN8S9740C179mf9740c17Ev
};
//SIG(-1 S9740C17) C1{ m FC2{ m Fp} FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC6{ m FC7{ FL[4]}} Fc FC8{ m Fp Fi FC9{ m}}}


void  S9740C17 ::mf9740c17(){}

static void Test_S9740C17()
{
  {
    init_simple_test("S9740C17");
    S9740C17 lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S9740C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C17)");
    check_field_offset(lv, s9740c17f0, 0, "S9740C17.s9740c17f0");
    check_field_offset(lv, s9740c17f1, ABISELECT(8,4), "S9740C17.s9740c17f1");
    check_field_offset(lv, s9740c17f2, ABISELECT(24,16), "S9740C17.s9740c17f2");
    check_field_offset(lv, s9740c17f3, ABISELECT(56,48), "S9740C17.s9740c17f3");
    check_field_offset(lv, s9740c17f4, ABISELECT(64,52), "S9740C17.s9740c17f4");
  }
}
static Arrange_To_Call_Me vS9740C17(Test_S9740C17, "S9740C17", ABISELECT(80,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9740C25  {
  void *s9740c25f0;
  int s9740c25f1;
  ::S19894C34 s9740c25f2;
  ::S19894C17_nt s9740c25f3;
  void  mf9740c25(); // _ZN8S9740C259mf9740c25Ev
};
//SIG(-1 S9740C25) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S9740C25 ::mf9740c25(){}

static void Test_S9740C25()
{
  {
    init_simple_test("S9740C25");
    S9740C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9740C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C25)");
    check_field_offset(lv, s9740c25f0, 0, "S9740C25.s9740c25f0");
    check_field_offset(lv, s9740c25f1, ABISELECT(8,4), "S9740C25.s9740c25f1");
    check_field_offset(lv, s9740c25f2, ABISELECT(12,8), "S9740C25.s9740c25f2");
    check_field_offset(lv, s9740c25f3, ABISELECT(13,9), "S9740C25.s9740c25f3");
  }
}
static Arrange_To_Call_Me vS9740C25(Test_S9740C25, "S9740C25", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S9740C25 = {  "S9740C25", // 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  S9740C24  : S9740C5_nt {
  ::S9740C25 s9740c24f0;
  ::S5757C19_nt s9740c24f1;
  ::S3619C13_nt s9740c24f2;
  ::S3223C8_nt s9740c24f3;
  int s9740c24f4[2];
  void *s9740c24f5;
  virtual  ~S9740C24(); // _ZN8S9740C24D1Ev
  virtual void  v9(); // _ZN8S9740C242v9Ev
  S9740C24(); // tgen
};
//SIG(-1 S9740C24) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m Fp} FC7{ m FC8{ FL[4]}} FC9{ m Fi} Fi[2] Fp}


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

static void Test_S9740C24()
{
  extern Class_Descriptor cd_S9740C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,20)];
    init_test(&cd_S9740C24, buf);
    S9740C24 *dp, &lv = *(dp=new (buf) S9740C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S9740C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C24)");
    check_base_class_offset(lv, (S9740C5_nt*), 0, "S9740C24");
    check_field_offset(lv, s9740c24f0, ABISELECT(16,12), "S9740C24.s9740c24f0");
    check_field_offset(lv, s9740c24f1, ABISELECT(32,24), "S9740C24.s9740c24f1");
    check_field_offset(lv, s9740c24f2, ABISELECT(40,28), "S9740C24.s9740c24f2");
    check_field_offset(lv, s9740c24f3, ABISELECT(72,60), "S9740C24.s9740c24f3");
    check_field_offset(lv, s9740c24f4, ABISELECT(76,64), "S9740C24.s9740c24f4");
    check_field_offset(lv, s9740c24f5, ABISELECT(88,72), "S9740C24.s9740c24f5");
    test_class_info(&lv, &cd_S9740C24);
    dp->~S9740C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9740C24(Test_S9740C24, "S9740C24", ABISELECT(96,76));

#else // __cplusplus

extern void _ZN8S9740C24C1Ev();
extern void _ZN8S9740C24D1Ev();
Name_Map name_map_S9740C24[] = {
  NSPAIR(_ZN8S9740C24C1Ev),
  NSPAIR(_ZN8S9740C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9740C5_nt;
extern VTBL_ENTRY _ZTI10S9740C5_nt[];
extern  VTBL_ENTRY _ZTV10S9740C5_nt[];
static Base_Class bases_S9740C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9740C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9740C24[];
extern void _ZN8S9740C24D1Ev();
extern void _ZN8S9740C24D0Ev();
extern void _ZN10S9740C5_nt2v8Ev();
extern void _ZN8S9740C242v9Ev();
static  VTBL_ENTRY vtc_S9740C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9740C24[0]),
  (VTBL_ENTRY)&_ZN8S9740C24D1Ev,
  (VTBL_ENTRY)&_ZN8S9740C24D0Ev,
  (VTBL_ENTRY)&_ZN10S9740C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S9740C242v9Ev,
};
extern VTBL_ENTRY _ZTI8S9740C24[];
extern  VTBL_ENTRY _ZTV8S9740C24[];
Class_Descriptor cd_S9740C24 = {  "S9740C24", // class name
  bases_S9740C24, 1,
  &(vtc_S9740C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,76), // object size
  NSPAIRA(_ZTI8S9740C24),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9740C24),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  S9740C29  : S9740C5_nt {
  int s9740c29f0;
  virtual  ~S9740C29(); // _ZN8S9740C29D1Ev
  virtual void  v10(); // _ZN8S9740C293v10Ev
  S9740C29(); // tgen
};
//SIG(-1 S9740C29) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 Fi}


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

static void Test_S9740C29()
{
  extern Class_Descriptor cd_S9740C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9740C29, buf);
    S9740C29 *dp, &lv = *(dp=new (buf) S9740C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9740C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C29)");
    check_base_class_offset(lv, (S9740C5_nt*), 0, "S9740C29");
    check_field_offset(lv, s9740c29f0, ABISELECT(16,12), "S9740C29.s9740c29f0");
    test_class_info(&lv, &cd_S9740C29);
    dp->~S9740C29();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9740C29(Test_S9740C29, "S9740C29", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S9740C29C1Ev();
extern void _ZN8S9740C29D1Ev();
Name_Map name_map_S9740C29[] = {
  NSPAIR(_ZN8S9740C29C1Ev),
  NSPAIR(_ZN8S9740C29D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9740C5_nt;
extern VTBL_ENTRY _ZTI10S9740C5_nt[];
extern  VTBL_ENTRY _ZTV10S9740C5_nt[];
static Base_Class bases_S9740C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9740C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9740C29[];
extern void _ZN8S9740C29D1Ev();
extern void _ZN8S9740C29D0Ev();
extern void _ZN10S9740C5_nt2v8Ev();
extern void _ZN8S9740C293v10Ev();
static  VTBL_ENTRY vtc_S9740C29[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9740C29[0]),
  (VTBL_ENTRY)&_ZN8S9740C29D1Ev,
  (VTBL_ENTRY)&_ZN8S9740C29D0Ev,
  (VTBL_ENTRY)&_ZN10S9740C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S9740C293v10Ev,
};
extern VTBL_ENTRY _ZTI8S9740C29[];
extern  VTBL_ENTRY _ZTV8S9740C29[];
Class_Descriptor cd_S9740C29 = {  "S9740C29", // class name
  bases_S9740C29, 1,
  &(vtc_S9740C29[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S9740C29),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9740C29),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  S9740C2  {
  void *s9740c2f0;
  ::S19894C6_nt s9740c2f1;
  ::S9740C4 s9740c2f2;
  ::S9740C17 s9740c2f3;
  void *s9740c2f4;
  ::S9740C24 s9740c2f5;
  void *s9740c2f6[6];
  ::S9740C29 s9740c2f7;
  void *s9740c2f8[2];
  int s9740c2f9;
  char s9740c2f10[49152];
  ::S9740C25 s9740c2f11;
  int s9740c2f12;
  virtual  ~S9740C2(); // _ZN7S9740C2D1Ev
  virtual void  v4(); // _ZN7S9740C22v4Ev
  virtual void  v5(); // _ZN7S9740C22v5Ev
  virtual void  v6(); // _ZN7S9740C22v6Ev
  S9740C2(); // tgen
};
//SIG(-1 S9740C2) C1{ vd v1 v2 v3 Fp FC2{ m Fp} FC3{ BC4{ vd v5 Fi Fc[3]} vd v4 FC5{ m Fp Fi FC6{ m} FC6} FC7{ m FC8{ FL[4]}} FC9{ m FC10{ m Fp Fi FC11{ m} FC12{ m}} FC7} FC13{ m FC10 FC14{ m Fi} FC7}} FC15{ m FC2 FC16{ BC5} FC7 Fc FC17{ m Fp Fi FC18{ m}}} Fp FC19{ BC4 vd v6 FC20{ m Fp Fi FC11 FC12} FC21{ m Fp} FC7 FC14 Fi[2] Fp} Fp[6] FC22{ BC4 vd v7 Fi} Fp[2] Fi Fc[49152] FC20 Fi}


 S9740C2 ::~S9740C2(){ note_dtor("S9740C2", this);}
void  S9740C2 ::v4(){vfunc_called(this, "_ZN7S9740C22v4Ev");}
void  S9740C2 ::v5(){vfunc_called(this, "_ZN7S9740C22v5Ev");}
void  S9740C2 ::v6(){vfunc_called(this, "_ZN7S9740C22v6Ev");}
S9740C2 ::S9740C2(){ note_ctor("S9740C2", this);} // tgen

static void Test_S9740C2()
{
  extern Class_Descriptor cd_S9740C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6207,12382)];
    init_test(&cd_S9740C2, buf);
    S9740C2 *dp, &lv = *(dp=new (buf) S9740C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49648,49524), "sizeof(S9740C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C2)");
    check_field_offset(lv, s9740c2f0, ABISELECT(8,4), "S9740C2.s9740c2f0");
    check_field_offset(lv, s9740c2f1, ABISELECT(16,8), "S9740C2.s9740c2f1");
    check_field_offset(lv, s9740c2f2, ABISELECT(24,12), "S9740C2.s9740c2f2");
    check_field_offset(lv, s9740c2f3, ABISELECT(192,160), "S9740C2.s9740c2f3");
    check_field_offset(lv, s9740c2f4, ABISELECT(272,224), "S9740C2.s9740c2f4");
    check_field_offset(lv, s9740c2f5, ABISELECT(280,228), "S9740C2.s9740c2f5");
    check_field_offset(lv, s9740c2f6, ABISELECT(376,304), "S9740C2.s9740c2f6");
    check_field_offset(lv, s9740c2f7, ABISELECT(424,328), "S9740C2.s9740c2f7");
    check_field_offset(lv, s9740c2f8, ABISELECT(448,344), "S9740C2.s9740c2f8");
    check_field_offset(lv, s9740c2f9, ABISELECT(464,352), "S9740C2.s9740c2f9");
    check_field_offset(lv, s9740c2f10, ABISELECT(468,356), "S9740C2.s9740c2f10");
    check_field_offset(lv, s9740c2f11, ABISELECT(49624,49508), "S9740C2.s9740c2f11");
    check_field_offset(lv, s9740c2f12, ABISELECT(49640,49520), "S9740C2.s9740c2f12");
    test_class_info(&lv, &cd_S9740C2);
    dp->~S9740C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9740C2(Test_S9740C2, "S9740C2", ABISELECT(49648,49524));

#else // __cplusplus

extern void _ZN7S9740C2C1Ev();
extern void _ZN7S9740C2D1Ev();
Name_Map name_map_S9740C2[] = {
  NSPAIR(_ZN7S9740C2C1Ev),
  NSPAIR(_ZN7S9740C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9740C2[];
extern void _ZN7S9740C2D1Ev();
extern void _ZN7S9740C2D0Ev();
extern void _ZN7S9740C22v4Ev();
extern void _ZN7S9740C22v5Ev();
extern void _ZN7S9740C22v6Ev();
static  VTBL_ENTRY vtc_S9740C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9740C2[0]),
  (VTBL_ENTRY)&_ZN7S9740C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9740C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9740C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9740C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9740C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9740C2[];
extern  VTBL_ENTRY _ZTV7S9740C2[];
Class_Descriptor cd_S9740C2 = {  "S9740C2", // class name
  0,0,//no base classes
  &(vtc_S9740C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(49648,49524), // object size
  NSPAIRA(_ZTI7S9740C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9740C2),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  S9740C1  : S9740C2 {
  virtual  ~S9740C1(); // _ZN7S9740C1D1Ev
  virtual void  v1(); // _ZN7S9740C12v1Ev
  virtual void  v2(); // _ZN7S9740C12v2Ev
  virtual void  v3(); // _ZN7S9740C12v3Ev
  S9740C1(); // tgen
};
//SIG(1 S9740C1) C1{ BC2{ vd v4 v5 v6 Fp FC3{ m Fp} FC4{ BC5{ vd v8 Fi Fc[3]} vd v7 FC6{ m Fp Fi FC7{ m} FC7} FC8{ m FC9{ FL[4]}} FC10{ m FC11{ m Fp Fi FC12{ m} FC13{ m}} FC8} FC14{ m FC11 FC15{ m Fi} FC8}} FC16{ m FC3 FC17{ BC6} FC8 Fc FC18{ m Fp Fi FC19{ m}}} Fp FC20{ BC5 vd v9 FC21{ m Fp Fi FC12 FC13} FC22{ m Fp} FC8 FC15 Fi[2] Fp} Fp[6] FC23{ BC5 vd v10 Fi} Fp[2] Fi Fc[49152] FC21 Fi} vd v1 v2 v3}


 S9740C1 ::~S9740C1(){ note_dtor("S9740C1", this);}
void  S9740C1 ::v1(){vfunc_called(this, "_ZN7S9740C12v1Ev");}
void  S9740C1 ::v2(){vfunc_called(this, "_ZN7S9740C12v2Ev");}
void  S9740C1 ::v3(){vfunc_called(this, "_ZN7S9740C12v3Ev");}
S9740C1 ::S9740C1(){ note_ctor("S9740C1", this);} // tgen

static void Test_S9740C1()
{
  extern Class_Descriptor cd_S9740C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6207,12382)];
    init_test(&cd_S9740C1, buf);
    S9740C1 *dp, &lv = *(dp=new (buf) S9740C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49648,49524), "sizeof(S9740C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9740C1)");
    check_base_class_offset(lv, (S9740C2*), 0, "S9740C1");
    test_class_info(&lv, &cd_S9740C1);
    dp->~S9740C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9740C1(Test_S9740C1, "S9740C1", ABISELECT(49648,49524));

#else // __cplusplus

extern void _ZN7S9740C1C1Ev();
extern void _ZN7S9740C1D1Ev();
Name_Map name_map_S9740C1[] = {
  NSPAIR(_ZN7S9740C1C1Ev),
  NSPAIR(_ZN7S9740C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9740C2;
extern VTBL_ENTRY _ZTI7S9740C2[];
extern  VTBL_ENTRY _ZTV7S9740C2[];
static Base_Class bases_S9740C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9740C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9740C1[];
extern void _ZN7S9740C1D1Ev();
extern void _ZN7S9740C1D0Ev();
extern void _ZN7S9740C22v4Ev();
extern void _ZN7S9740C22v5Ev();
extern void _ZN7S9740C22v6Ev();
extern void _ZN7S9740C12v1Ev();
extern void _ZN7S9740C12v2Ev();
extern void _ZN7S9740C12v3Ev();
static  VTBL_ENTRY vtc_S9740C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9740C1[0]),
  (VTBL_ENTRY)&_ZN7S9740C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9740C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9740C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9740C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9740C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9740C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9740C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9740C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9740C1[];
extern  VTBL_ENTRY _ZTV7S9740C1[];
Class_Descriptor cd_S9740C1 = {  "S9740C1", // class name
  bases_S9740C1, 1,
  &(vtc_S9740C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(49648,49524), // object size
  NSPAIRA(_ZTI7S9740C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9740C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9739C5  {
  int s9739c5f0;
  char s9739c5f1[3];
  virtual  ~S9739C5(); // _ZN7S9739C5D1Ev
  virtual void  v8(); // _ZN7S9739C52v8Ev
  S9739C5(); // tgen
};
//SIG(-1 S9739C5) C1{ vd v1 Fi Fc[3]}


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

static void Test_S9739C5()
{
  extern Class_Descriptor cd_S9739C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S9739C5, buf);
    S9739C5 *dp, &lv = *(dp=new (buf) S9739C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9739C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C5)");
    check_field_offset(lv, s9739c5f0, ABISELECT(8,4), "S9739C5.s9739c5f0");
    check_field_offset(lv, s9739c5f1, ABISELECT(12,8), "S9739C5.s9739c5f1");
    test_class_info(&lv, &cd_S9739C5);
    dp->~S9739C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9739C5(Test_S9739C5, "S9739C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S9739C5C1Ev();
extern void _ZN7S9739C5D1Ev();
Name_Map name_map_S9739C5[] = {
  NSPAIR(_ZN7S9739C5C1Ev),
  NSPAIR(_ZN7S9739C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9739C5[];
extern void _ZN7S9739C5D1Ev();
extern void _ZN7S9739C5D0Ev();
extern void _ZN7S9739C52v8Ev();
static  VTBL_ENTRY vtc_S9739C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9739C5[0]),
  (VTBL_ENTRY)&_ZN7S9739C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9739C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9739C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S9739C5[];
extern  VTBL_ENTRY _ZTV7S9739C5[];
Class_Descriptor cd_S9739C5 = {  "S9739C5", // class name
  0,0,//no base classes
  &(vtc_S9739C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S9739C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9739C5),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  S9739C11  {
  ::S3619C4_nt s9739c11f0;
  ::S3618C13_nt s9739c11f1;
  void  mf9739c11(); // _ZN8S9739C119mf9739c11Ev
};
//SIG(-1 S9739C11) C1{ m FC2{ m Fp Fi FC3{ m} FC3} FC4{ m FC5{ Fl[4]}}}


void  S9739C11 ::mf9739c11(){}

static void Test_S9739C11()
{
  {
    init_simple_test("S9739C11");
    S9739C11 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S9739C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C11)");
    check_field_offset(lv, s9739c11f0, 0, "S9739C11.s9739c11f0");
    check_field_offset(lv, s9739c11f1, ABISELECT(16,12), "S9739C11.s9739c11f1");
  }
}
static Arrange_To_Call_Me vS9739C11(Test_S9739C11, "S9739C11", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9739C15  {
  ::S3619C4_nt s9739c15f0;
  ::S3223C8_nt s9739c15f1;
  ::S3618C13_nt s9739c15f2;
  void  mf9739c15(); // _ZN8S9739C159mf9739c15Ev
};
//SIG(-1 S9739C15) C1{ m FC2{ m Fp Fi FC3{ m} FC3} FC4{ m Fi} FC5{ m FC6{ Fl[4]}}}


void  S9739C15 ::mf9739c15(){}

static void Test_S9739C15()
{
  {
    init_simple_test("S9739C15");
    S9739C15 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S9739C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C15)");
    check_field_offset(lv, s9739c15f0, 0, "S9739C15.s9739c15f0");
    check_field_offset(lv, s9739c15f1, ABISELECT(16,12), "S9739C15.s9739c15f1");
    check_field_offset(lv, s9739c15f2, ABISELECT(24,16), "S9739C15.s9739c15f2");
  }
}
static Arrange_To_Call_Me vS9739C15(Test_S9739C15, "S9739C15", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9739C4  : S9739C5 {
  ::S9740C25 s9739c4f0;
  ::S3618C13_nt s9739c4f1;
  ::S9739C11 s9739c4f2;
  ::S9739C15 s9739c4f3;
  virtual  ~S9739C4(); // _ZN7S9739C4D1Ev
  virtual void  v7(); // _ZN7S9739C42v7Ev
  S9739C4(); // tgen
};
//SIG(-1 S9739C4) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m FC7{ Fl[4]}} FC8{ m FC9{ m Fp Fi FC10{ m} FC10} FC6} FC11{ m FC9 FC12{ m Fi} FC6}}


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

static void Test_S9739C4()
{
  extern Class_Descriptor cd_S9739C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,26)];
    init_test(&cd_S9739C4, buf);
    S9739C4 *dp, &lv = *(dp=new (buf) S9739C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,100), "sizeof(S9739C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C4)");
    check_base_class_offset(lv, (S9739C5*), 0, "S9739C4");
    check_field_offset(lv, s9739c4f0, ABISELECT(16,12), "S9739C4.s9739c4f0");
    check_field_offset(lv, s9739c4f1, ABISELECT(32,24), "S9739C4.s9739c4f1");
    check_field_offset(lv, s9739c4f2, ABISELECT(64,40), "S9739C4.s9739c4f2");
    check_field_offset(lv, s9739c4f3, ABISELECT(112,68), "S9739C4.s9739c4f3");
    test_class_info(&lv, &cd_S9739C4);
    dp->~S9739C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9739C4(Test_S9739C4, "S9739C4", ABISELECT(168,100));

#else // __cplusplus

extern void _ZN7S9739C4C1Ev();
extern void _ZN7S9739C4D1Ev();
Name_Map name_map_S9739C4[] = {
  NSPAIR(_ZN7S9739C4C1Ev),
  NSPAIR(_ZN7S9739C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9739C5;
extern VTBL_ENTRY _ZTI7S9739C5[];
extern  VTBL_ENTRY _ZTV7S9739C5[];
static Base_Class bases_S9739C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9739C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9739C4[];
extern void _ZN7S9739C4D1Ev();
extern void _ZN7S9739C4D0Ev();
extern void _ZN7S9739C52v8Ev();
extern void _ZN7S9739C42v7Ev();
static  VTBL_ENTRY vtc_S9739C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9739C4[0]),
  (VTBL_ENTRY)&_ZN7S9739C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9739C4D0Ev,
  (VTBL_ENTRY)&_ZN7S9739C52v8Ev,
  (VTBL_ENTRY)&_ZN7S9739C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S9739C4[];
extern  VTBL_ENTRY _ZTV7S9739C4[];
Class_Descriptor cd_S9739C4 = {  "S9739C4", // class name
  bases_S9739C4, 1,
  &(vtc_S9739C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,100), // object size
  NSPAIRA(_ZTI7S9739C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9739C4),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  S9739C17  {
  ::S19894C6_nt s9739c17f0;
  ::S2328C15_nt s9739c17f1;
  ::S3618C13_nt s9739c17f2;
  char s9739c17f3;
  ::S3619C18_nt s9739c17f4;
  void  mf9739c17(); // _ZN8S9739C179mf9739c17Ev
};
//SIG(-1 S9739C17) C1{ m FC2{ m Fp} FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC6{ m FC7{ Fl[4]}} Fc FC8{ m Fp Fi FC9{ m}}}


void  S9739C17 ::mf9739c17(){}

static void Test_S9739C17()
{
  {
    init_simple_test("S9739C17");
    S9739C17 lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S9739C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C17)");
    check_field_offset(lv, s9739c17f0, 0, "S9739C17.s9739c17f0");
    check_field_offset(lv, s9739c17f1, ABISELECT(8,4), "S9739C17.s9739c17f1");
    check_field_offset(lv, s9739c17f2, ABISELECT(24,16), "S9739C17.s9739c17f2");
    check_field_offset(lv, s9739c17f3, ABISELECT(56,32), "S9739C17.s9739c17f3");
    check_field_offset(lv, s9739c17f4, ABISELECT(64,36), "S9739C17.s9739c17f4");
  }
}
static Arrange_To_Call_Me vS9739C17(Test_S9739C17, "S9739C17", ABISELECT(80,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9739C24  : S9739C5 {
  ::S2328C23_nt s9739c24f0;
  ::S5757C19_nt s9739c24f1;
  ::S3618C13_nt s9739c24f2;
  ::S3223C8_nt s9739c24f3;
  int s9739c24f4[2];
  void *s9739c24f5;
  virtual  ~S9739C24(); // _ZN8S9739C24D1Ev
  virtual void  v9(); // _ZN8S9739C242v9Ev
  S9739C24(); // tgen
};
//SIG(-1 S9739C24) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m Fp} FC7{ m FC8{ Fl[4]}} FC9{ m Fi} Fi[2] Fp}


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

static void Test_S9739C24()
{
  extern Class_Descriptor cd_S9739C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S9739C24, buf);
    S9739C24 *dp, &lv = *(dp=new (buf) S9739C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S9739C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C24)");
    check_base_class_offset(lv, (S9739C5*), 0, "S9739C24");
    check_field_offset(lv, s9739c24f0, ABISELECT(16,12), "S9739C24.s9739c24f0");
    check_field_offset(lv, s9739c24f1, ABISELECT(32,24), "S9739C24.s9739c24f1");
    check_field_offset(lv, s9739c24f2, ABISELECT(40,28), "S9739C24.s9739c24f2");
    check_field_offset(lv, s9739c24f3, ABISELECT(72,44), "S9739C24.s9739c24f3");
    check_field_offset(lv, s9739c24f4, ABISELECT(76,48), "S9739C24.s9739c24f4");
    check_field_offset(lv, s9739c24f5, ABISELECT(88,56), "S9739C24.s9739c24f5");
    test_class_info(&lv, &cd_S9739C24);
    dp->~S9739C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9739C24(Test_S9739C24, "S9739C24", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN8S9739C24C1Ev();
extern void _ZN8S9739C24D1Ev();
Name_Map name_map_S9739C24[] = {
  NSPAIR(_ZN8S9739C24C1Ev),
  NSPAIR(_ZN8S9739C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9739C5;
extern VTBL_ENTRY _ZTI7S9739C5[];
extern  VTBL_ENTRY _ZTV7S9739C5[];
static Base_Class bases_S9739C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9739C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9739C24[];
extern void _ZN8S9739C24D1Ev();
extern void _ZN8S9739C24D0Ev();
extern void _ZN7S9739C52v8Ev();
extern void _ZN8S9739C242v9Ev();
static  VTBL_ENTRY vtc_S9739C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9739C24[0]),
  (VTBL_ENTRY)&_ZN8S9739C24D1Ev,
  (VTBL_ENTRY)&_ZN8S9739C24D0Ev,
  (VTBL_ENTRY)&_ZN7S9739C52v8Ev,
  (VTBL_ENTRY)&_ZN8S9739C242v9Ev,
};
extern VTBL_ENTRY _ZTI8S9739C24[];
extern  VTBL_ENTRY _ZTV8S9739C24[];
Class_Descriptor cd_S9739C24 = {  "S9739C24", // class name
  bases_S9739C24, 1,
  &(vtc_S9739C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S9739C24),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9739C24),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  S9739C30  {
  void *s9739c30f0;
  int s9739c30f1;
  ::S19894C34 s9739c30f2;
  ::S19894C17_nt s9739c30f3;
  void  mf9739c30(); // _ZN8S9739C309mf9739c30Ev
};
//SIG(-1 S9739C30) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S9739C30 ::mf9739c30(){}

static void Test_S9739C30()
{
  {
    init_simple_test("S9739C30");
    S9739C30 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9739C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C30)");
    check_field_offset(lv, s9739c30f0, 0, "S9739C30.s9739c30f0");
    check_field_offset(lv, s9739c30f1, ABISELECT(8,4), "S9739C30.s9739c30f1");
    check_field_offset(lv, s9739c30f2, ABISELECT(12,8), "S9739C30.s9739c30f2");
    check_field_offset(lv, s9739c30f3, ABISELECT(13,9), "S9739C30.s9739c30f3");
  }
}
static Arrange_To_Call_Me vS9739C30(Test_S9739C30, "S9739C30", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9739C2  {
  void *s9739c2f0;
  ::S19894C6_nt s9739c2f1;
  ::S9739C4 s9739c2f2;
  ::S9739C17 s9739c2f3;
  void *s9739c2f4;
  ::S9739C24 s9739c2f5;
  void *s9739c2f6[6];
  ::S9740C29 s9739c2f7;
  void *s9739c2f8[2];
  int s9739c2f9;
  char s9739c2f10[49152];
  ::S9739C30 s9739c2f11;
  int s9739c2f12;
  virtual  ~S9739C2(); // _ZN7S9739C2D1Ev
  virtual void  v4(); // _ZN7S9739C22v4Ev
  virtual void  v5(); // _ZN7S9739C22v5Ev
  virtual void  v6(); // _ZN7S9739C22v6Ev
  S9739C2(); // tgen
};
//SIG(-1 S9739C2) C1{ vd v1 v2 v3 Fp FC2{ m Fp} FC3{ BC4{ vd v5 Fi Fc[3]} vd v4 FC5{ m Fp Fi FC6{ m} FC7{ m}} FC8{ m FC9{ Fl[4]}} FC10{ m FC11{ m Fp Fi FC12{ m} FC12} FC8} FC13{ m FC11 FC14{ m Fi} FC8}} FC15{ m FC2 FC16{ BC11} FC8 Fc FC17{ m Fp Fi FC18{ m}}} Fp FC19{ BC4 vd v6 FC20{ m Fp Fi FC6 FC7} FC21{ m Fp} FC8 FC14 Fi[2] Fp} Fp[6] FC22{ BC23{ vd v8 Fi Fc[3]} vd v7 Fi} Fp[2] Fi Fc[49152] FC24{ m Fp Fi FC6 FC7} Fi}


 S9739C2 ::~S9739C2(){ note_dtor("S9739C2", this);}
void  S9739C2 ::v4(){vfunc_called(this, "_ZN7S9739C22v4Ev");}
void  S9739C2 ::v5(){vfunc_called(this, "_ZN7S9739C22v5Ev");}
void  S9739C2 ::v6(){vfunc_called(this, "_ZN7S9739C22v6Ev");}
S9739C2 ::S9739C2(){ note_ctor("S9739C2", this);} // tgen

static void Test_S9739C2()
{
  extern Class_Descriptor cd_S9739C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6207,12362)];
    init_test(&cd_S9739C2, buf);
    S9739C2 *dp, &lv = *(dp=new (buf) S9739C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49648,49444), "sizeof(S9739C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C2)");
    check_field_offset(lv, s9739c2f0, ABISELECT(8,4), "S9739C2.s9739c2f0");
    check_field_offset(lv, s9739c2f1, ABISELECT(16,8), "S9739C2.s9739c2f1");
    check_field_offset(lv, s9739c2f2, ABISELECT(24,12), "S9739C2.s9739c2f2");
    check_field_offset(lv, s9739c2f3, ABISELECT(192,112), "S9739C2.s9739c2f3");
    check_field_offset(lv, s9739c2f4, ABISELECT(272,160), "S9739C2.s9739c2f4");
    check_field_offset(lv, s9739c2f5, ABISELECT(280,164), "S9739C2.s9739c2f5");
    check_field_offset(lv, s9739c2f6, ABISELECT(376,224), "S9739C2.s9739c2f6");
    check_field_offset(lv, s9739c2f7, ABISELECT(424,248), "S9739C2.s9739c2f7");
    check_field_offset(lv, s9739c2f8, ABISELECT(448,264), "S9739C2.s9739c2f8");
    check_field_offset(lv, s9739c2f9, ABISELECT(464,272), "S9739C2.s9739c2f9");
    check_field_offset(lv, s9739c2f10, ABISELECT(468,276), "S9739C2.s9739c2f10");
    check_field_offset(lv, s9739c2f11, ABISELECT(49624,49428), "S9739C2.s9739c2f11");
    check_field_offset(lv, s9739c2f12, ABISELECT(49640,49440), "S9739C2.s9739c2f12");
    test_class_info(&lv, &cd_S9739C2);
    dp->~S9739C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9739C2(Test_S9739C2, "S9739C2", ABISELECT(49648,49444));

#else // __cplusplus

extern void _ZN7S9739C2C1Ev();
extern void _ZN7S9739C2D1Ev();
Name_Map name_map_S9739C2[] = {
  NSPAIR(_ZN7S9739C2C1Ev),
  NSPAIR(_ZN7S9739C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9739C2[];
extern void _ZN7S9739C2D1Ev();
extern void _ZN7S9739C2D0Ev();
extern void _ZN7S9739C22v4Ev();
extern void _ZN7S9739C22v5Ev();
extern void _ZN7S9739C22v6Ev();
static  VTBL_ENTRY vtc_S9739C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9739C2[0]),
  (VTBL_ENTRY)&_ZN7S9739C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9739C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9739C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9739C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9739C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9739C2[];
extern  VTBL_ENTRY _ZTV7S9739C2[];
Class_Descriptor cd_S9739C2 = {  "S9739C2", // class name
  0,0,//no base classes
  &(vtc_S9739C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(49648,49444), // object size
  NSPAIRA(_ZTI7S9739C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9739C2),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  S9739C1  : S9739C2 {
  virtual  ~S9739C1(); // _ZN7S9739C1D1Ev
  virtual void  v1(); // _ZN7S9739C12v1Ev
  virtual void  v2(); // _ZN7S9739C12v2Ev
  virtual void  v3(); // _ZN7S9739C12v3Ev
  S9739C1(); // tgen
};
//SIG(1 S9739C1) C1{ BC2{ vd v4 v5 v6 Fp FC3{ m Fp} FC4{ BC5{ vd v8 Fi Fc[3]} vd v7 FC6{ m Fp Fi FC7{ m} FC8{ m}} FC9{ m FC10{ Fl[4]}} FC11{ m FC12{ m Fp Fi FC13{ m} FC13} FC9} FC14{ m FC12 FC15{ m Fi} FC9}} FC16{ m FC3 FC17{ BC12} FC9 Fc FC18{ m Fp Fi FC19{ m}}} Fp FC20{ BC5 vd v9 FC21{ m Fp Fi FC7 FC8} FC22{ m Fp} FC9 FC15 Fi[2] Fp} Fp[6] FC23{ BC24{ vd v11 Fi Fc[3]} vd v10 Fi} Fp[2] Fi Fc[49152] FC25{ m Fp Fi FC7 FC8} Fi} vd v1 v2 v3}


 S9739C1 ::~S9739C1(){ note_dtor("S9739C1", this);}
void  S9739C1 ::v1(){vfunc_called(this, "_ZN7S9739C12v1Ev");}
void  S9739C1 ::v2(){vfunc_called(this, "_ZN7S9739C12v2Ev");}
void  S9739C1 ::v3(){vfunc_called(this, "_ZN7S9739C12v3Ev");}
S9739C1 ::S9739C1(){ note_ctor("S9739C1", this);} // tgen

static void Test_S9739C1()
{
  extern Class_Descriptor cd_S9739C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6207,12362)];
    init_test(&cd_S9739C1, buf);
    S9739C1 *dp, &lv = *(dp=new (buf) S9739C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49648,49444), "sizeof(S9739C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9739C1)");
    check_base_class_offset(lv, (S9739C2*), 0, "S9739C1");
    test_class_info(&lv, &cd_S9739C1);
    dp->~S9739C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9739C1(Test_S9739C1, "S9739C1", ABISELECT(49648,49444));

#else // __cplusplus

extern void _ZN7S9739C1C1Ev();
extern void _ZN7S9739C1D1Ev();
Name_Map name_map_S9739C1[] = {
  NSPAIR(_ZN7S9739C1C1Ev),
  NSPAIR(_ZN7S9739C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9739C2;
extern VTBL_ENTRY _ZTI7S9739C2[];
extern  VTBL_ENTRY _ZTV7S9739C2[];
static Base_Class bases_S9739C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9739C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9739C1[];
extern void _ZN7S9739C1D1Ev();
extern void _ZN7S9739C1D0Ev();
extern void _ZN7S9739C22v4Ev();
extern void _ZN7S9739C22v5Ev();
extern void _ZN7S9739C22v6Ev();
extern void _ZN7S9739C12v1Ev();
extern void _ZN7S9739C12v2Ev();
extern void _ZN7S9739C12v3Ev();
static  VTBL_ENTRY vtc_S9739C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9739C1[0]),
  (VTBL_ENTRY)&_ZN7S9739C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9739C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9739C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9739C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9739C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9739C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9739C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9739C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9739C1[];
extern  VTBL_ENTRY _ZTV7S9739C1[];
Class_Descriptor cd_S9739C1 = {  "S9739C1", // class name
  bases_S9739C1, 1,
  &(vtc_S9739C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(49648,49444), // object size
  NSPAIRA(_ZTI7S9739C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9739C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9741C5  {
  int s9741c5f0;
  char s9741c5f1[3];
  virtual  ~S9741C5(); // _ZN7S9741C5D1Ev
  virtual void  v8(); // _ZN7S9741C52v8Ev
  S9741C5(); // tgen
};
//SIG(-1 S9741C5) C1{ vd v1 Fi Fc[3]}


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

static void Test_S9741C5()
{
  extern Class_Descriptor cd_S9741C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S9741C5, buf);
    S9741C5 *dp, &lv = *(dp=new (buf) S9741C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9741C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C5)");
    check_field_offset(lv, s9741c5f0, ABISELECT(8,4), "S9741C5.s9741c5f0");
    check_field_offset(lv, s9741c5f1, ABISELECT(12,8), "S9741C5.s9741c5f1");
    test_class_info(&lv, &cd_S9741C5);
    dp->~S9741C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9741C5(Test_S9741C5, "S9741C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S9741C5C1Ev();
extern void _ZN7S9741C5D1Ev();
Name_Map name_map_S9741C5[] = {
  NSPAIR(_ZN7S9741C5C1Ev),
  NSPAIR(_ZN7S9741C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9741C5[];
extern void _ZN7S9741C5D1Ev();
extern void _ZN7S9741C5D0Ev();
extern void _ZN7S9741C52v8Ev();
static  VTBL_ENTRY vtc_S9741C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9741C5[0]),
  (VTBL_ENTRY)&_ZN7S9741C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9741C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9741C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S9741C5[];
extern  VTBL_ENTRY _ZTV7S9741C5[];
Class_Descriptor cd_S9741C5 = {  "S9741C5", // class name
  0,0,//no base classes
  &(vtc_S9741C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S9741C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9741C5),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  S9741C10  {
  ::S9739C30 s9741c10f0;
  ::S3620C13_nt s9741c10f1;
  void  mf9741c10(); // _ZN8S9741C109mf9741c10Ev
};
//SIG(-1 S9741C10) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FL[4]}}


void  S9741C10 ::mf9741c10(){}

static void Test_S9741C10()
{
  {
    init_simple_test("S9741C10");
    S9741C10 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S9741C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C10)");
    check_field_offset(lv, s9741c10f0, 0, "S9741C10.s9741c10f0");
    check_field_offset(lv, s9741c10f1, ABISELECT(16,12), "S9741C10.s9741c10f1");
  }
}
static Arrange_To_Call_Me vS9741C10(Test_S9741C10, "S9741C10", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9741C14  {
  ::S9739C30 s9741c14f0;
  ::S3223C8_nt s9741c14f1;
  ::S3620C13_nt s9741c14f2;
  void  mf9741c14(); // _ZN8S9741C149mf9741c14Ev
};
//SIG(-1 S9741C14) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m Fi} FC6{ m FL[4]}}


void  S9741C14 ::mf9741c14(){}

static void Test_S9741C14()
{
  {
    init_simple_test("S9741C14");
    S9741C14 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S9741C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C14)");
    check_field_offset(lv, s9741c14f0, 0, "S9741C14.s9741c14f0");
    check_field_offset(lv, s9741c14f1, ABISELECT(16,12), "S9741C14.s9741c14f1");
    check_field_offset(lv, s9741c14f2, ABISELECT(24,16), "S9741C14.s9741c14f2");
  }
}
static Arrange_To_Call_Me vS9741C14(Test_S9741C14, "S9741C14", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9741C4  : S9741C5 {
  ::S9740C25 s9741c4f0;
  ::S3620C13_nt s9741c4f1;
  ::S9741C10 s9741c4f2;
  ::S9741C14 s9741c4f3;
  virtual  ~S9741C4(); // _ZN7S9741C4D1Ev
  virtual void  v7(); // _ZN7S9741C42v7Ev
  S9741C4(); // tgen
};
//SIG(-1 S9741C4) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m FL[4]} FC7{ m FC8{ m Fp Fi FC4 FC5} FC6} FC9{ m FC8 FC10{ m Fi} FC6}}


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

static void Test_S9741C4()
{
  extern Class_Descriptor cd_S9741C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9741C4, buf);
    S9741C4 *dp, &lv = *(dp=new (buf) S9741C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9741C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C4)");
    check_base_class_offset(lv, (S9741C5*), 0, "S9741C4");
    check_field_offset(lv, s9741c4f0, ABISELECT(16,12), "S9741C4.s9741c4f0");
    check_field_offset(lv, s9741c4f1, ABISELECT(32,24), "S9741C4.s9741c4f1");
    check_field_offset(lv, s9741c4f2, ABISELECT(64,56), "S9741C4.s9741c4f2");
    check_field_offset(lv, s9741c4f3, ABISELECT(112,100), "S9741C4.s9741c4f3");
    test_class_info(&lv, &cd_S9741C4);
    dp->~S9741C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9741C4(Test_S9741C4, "S9741C4", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9741C4C1Ev();
extern void _ZN7S9741C4D1Ev();
Name_Map name_map_S9741C4[] = {
  NSPAIR(_ZN7S9741C4C1Ev),
  NSPAIR(_ZN7S9741C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9741C5;
extern VTBL_ENTRY _ZTI7S9741C5[];
extern  VTBL_ENTRY _ZTV7S9741C5[];
static Base_Class bases_S9741C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9741C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9741C4[];
extern void _ZN7S9741C4D1Ev();
extern void _ZN7S9741C4D0Ev();
extern void _ZN7S9741C52v8Ev();
extern void _ZN7S9741C42v7Ev();
static  VTBL_ENTRY vtc_S9741C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9741C4[0]),
  (VTBL_ENTRY)&_ZN7S9741C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9741C4D0Ev,
  (VTBL_ENTRY)&_ZN7S9741C52v8Ev,
  (VTBL_ENTRY)&_ZN7S9741C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S9741C4[];
extern  VTBL_ENTRY _ZTV7S9741C4[];
Class_Descriptor cd_S9741C4 = {  "S9741C4", // class name
  bases_S9741C4, 1,
  &(vtc_S9741C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9741C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9741C4),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  S9741C16  {
  ::S19894C6_nt s9741c16f0;
  ::S2328C15_nt s9741c16f1;
  ::S3620C13_nt s9741c16f2;
  char s9741c16f3;
  ::S3619C18_nt s9741c16f4;
  void  mf9741c16(); // _ZN8S9741C169mf9741c16Ev
};
//SIG(-1 S9741C16) C1{ m FC2{ m Fp} FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC6{ m FL[4]} Fc FC7{ m Fp Fi FC8{ m}}}


void  S9741C16 ::mf9741c16(){}

static void Test_S9741C16()
{
  {
    init_simple_test("S9741C16");
    S9741C16 lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S9741C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C16)");
    check_field_offset(lv, s9741c16f0, 0, "S9741C16.s9741c16f0");
    check_field_offset(lv, s9741c16f1, ABISELECT(8,4), "S9741C16.s9741c16f1");
    check_field_offset(lv, s9741c16f2, ABISELECT(24,16), "S9741C16.s9741c16f2");
    check_field_offset(lv, s9741c16f3, ABISELECT(56,48), "S9741C16.s9741c16f3");
    check_field_offset(lv, s9741c16f4, ABISELECT(64,52), "S9741C16.s9741c16f4");
  }
}
static Arrange_To_Call_Me vS9741C16(Test_S9741C16, "S9741C16", ABISELECT(80,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9741C23  : S9741C5 {
  ::S3619C4_nt s9741c23f0;
  ::S5757C19_nt s9741c23f1;
  ::S3620C13_nt s9741c23f2;
  ::S3223C8_nt s9741c23f3;
  int s9741c23f4[2];
  void *s9741c23f5;
  virtual  ~S9741C23(); // _ZN8S9741C23D1Ev
  virtual void  v9(); // _ZN8S9741C232v9Ev
  S9741C23(); // tgen
};
//SIG(-1 S9741C23) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 FC3{ m Fp Fi FC4{ m} FC4} FC5{ m Fp} FC6{ m FL[4]} FC7{ m Fi} Fi[2] Fp}


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

static void Test_S9741C23()
{
  extern Class_Descriptor cd_S9741C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,20)];
    init_test(&cd_S9741C23, buf);
    S9741C23 *dp, &lv = *(dp=new (buf) S9741C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S9741C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C23)");
    check_base_class_offset(lv, (S9741C5*), 0, "S9741C23");
    check_field_offset(lv, s9741c23f0, ABISELECT(16,12), "S9741C23.s9741c23f0");
    check_field_offset(lv, s9741c23f1, ABISELECT(32,24), "S9741C23.s9741c23f1");
    check_field_offset(lv, s9741c23f2, ABISELECT(40,28), "S9741C23.s9741c23f2");
    check_field_offset(lv, s9741c23f3, ABISELECT(72,60), "S9741C23.s9741c23f3");
    check_field_offset(lv, s9741c23f4, ABISELECT(76,64), "S9741C23.s9741c23f4");
    check_field_offset(lv, s9741c23f5, ABISELECT(88,72), "S9741C23.s9741c23f5");
    test_class_info(&lv, &cd_S9741C23);
    dp->~S9741C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9741C23(Test_S9741C23, "S9741C23", ABISELECT(96,76));

#else // __cplusplus

extern void _ZN8S9741C23C1Ev();
extern void _ZN8S9741C23D1Ev();
Name_Map name_map_S9741C23[] = {
  NSPAIR(_ZN8S9741C23C1Ev),
  NSPAIR(_ZN8S9741C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9741C5;
extern VTBL_ENTRY _ZTI7S9741C5[];
extern  VTBL_ENTRY _ZTV7S9741C5[];
static Base_Class bases_S9741C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9741C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9741C23[];
extern void _ZN8S9741C23D1Ev();
extern void _ZN8S9741C23D0Ev();
extern void _ZN7S9741C52v8Ev();
extern void _ZN8S9741C232v9Ev();
static  VTBL_ENTRY vtc_S9741C23[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9741C23[0]),
  (VTBL_ENTRY)&_ZN8S9741C23D1Ev,
  (VTBL_ENTRY)&_ZN8S9741C23D0Ev,
  (VTBL_ENTRY)&_ZN7S9741C52v8Ev,
  (VTBL_ENTRY)&_ZN8S9741C232v9Ev,
};
extern VTBL_ENTRY _ZTI8S9741C23[];
extern  VTBL_ENTRY _ZTV8S9741C23[];
Class_Descriptor cd_S9741C23 = {  "S9741C23", // class name
  bases_S9741C23, 1,
  &(vtc_S9741C23[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,76), // object size
  NSPAIRA(_ZTI8S9741C23),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9741C23),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  S9741C2  {
  void *s9741c2f0;
  ::S19894C6_nt s9741c2f1;
  ::S9741C4 s9741c2f2;
  ::S9741C16 s9741c2f3;
  void *s9741c2f4;
  ::S9741C23 s9741c2f5;
  void *s9741c2f6[6];
  ::S9740C29 s9741c2f7;
  void *s9741c2f8[2];
  int s9741c2f9;
  char s9741c2f10[49152];
  ::S2328C23_nt s9741c2f11;
  int s9741c2f12;
  virtual  ~S9741C2(); // _ZN7S9741C2D1Ev
  virtual void  v4(); // _ZN7S9741C22v4Ev
  virtual void  v5(); // _ZN7S9741C22v5Ev
  virtual void  v6(); // _ZN7S9741C22v6Ev
  S9741C2(); // tgen
};
//SIG(-1 S9741C2) C1{ vd v1 v2 v3 Fp FC2{ m Fp} FC3{ BC4{ vd v5 Fi Fc[3]} vd v4 FC5{ m Fp Fi FC6{ m} FC7{ m}} FC8{ m FL[4]} FC9{ m FC10{ m Fp Fi FC6 FC7} FC8} FC11{ m FC10 FC12{ m Fi} FC8}} FC13{ m FC2 FC14{ BC15{ m Fp Fi FC16{ m} FC16}} FC8 Fc FC17{ m Fp Fi FC18{ m}}} Fp FC19{ BC4 vd v6 FC15 FC20{ m Fp} FC8 FC12 Fi[2] Fp} Fp[6] FC21{ BC22{ vd v8 Fi Fc[3]} vd v7 Fi} Fp[2] Fi Fc[49152] FC23{ m Fp Fi FC6 FC7} Fi}


 S9741C2 ::~S9741C2(){ note_dtor("S9741C2", this);}
void  S9741C2 ::v4(){vfunc_called(this, "_ZN7S9741C22v4Ev");}
void  S9741C2 ::v5(){vfunc_called(this, "_ZN7S9741C22v5Ev");}
void  S9741C2 ::v6(){vfunc_called(this, "_ZN7S9741C22v6Ev");}
S9741C2 ::S9741C2(){ note_ctor("S9741C2", this);} // tgen

static void Test_S9741C2()
{
  extern Class_Descriptor cd_S9741C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6207,12382)];
    init_test(&cd_S9741C2, buf);
    S9741C2 *dp, &lv = *(dp=new (buf) S9741C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49648,49524), "sizeof(S9741C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C2)");
    check_field_offset(lv, s9741c2f0, ABISELECT(8,4), "S9741C2.s9741c2f0");
    check_field_offset(lv, s9741c2f1, ABISELECT(16,8), "S9741C2.s9741c2f1");
    check_field_offset(lv, s9741c2f2, ABISELECT(24,12), "S9741C2.s9741c2f2");
    check_field_offset(lv, s9741c2f3, ABISELECT(192,160), "S9741C2.s9741c2f3");
    check_field_offset(lv, s9741c2f4, ABISELECT(272,224), "S9741C2.s9741c2f4");
    check_field_offset(lv, s9741c2f5, ABISELECT(280,228), "S9741C2.s9741c2f5");
    check_field_offset(lv, s9741c2f6, ABISELECT(376,304), "S9741C2.s9741c2f6");
    check_field_offset(lv, s9741c2f7, ABISELECT(424,328), "S9741C2.s9741c2f7");
    check_field_offset(lv, s9741c2f8, ABISELECT(448,344), "S9741C2.s9741c2f8");
    check_field_offset(lv, s9741c2f9, ABISELECT(464,352), "S9741C2.s9741c2f9");
    check_field_offset(lv, s9741c2f10, ABISELECT(468,356), "S9741C2.s9741c2f10");
    check_field_offset(lv, s9741c2f11, ABISELECT(49624,49508), "S9741C2.s9741c2f11");
    check_field_offset(lv, s9741c2f12, ABISELECT(49640,49520), "S9741C2.s9741c2f12");
    test_class_info(&lv, &cd_S9741C2);
    dp->~S9741C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9741C2(Test_S9741C2, "S9741C2", ABISELECT(49648,49524));

#else // __cplusplus

extern void _ZN7S9741C2C1Ev();
extern void _ZN7S9741C2D1Ev();
Name_Map name_map_S9741C2[] = {
  NSPAIR(_ZN7S9741C2C1Ev),
  NSPAIR(_ZN7S9741C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9741C2[];
extern void _ZN7S9741C2D1Ev();
extern void _ZN7S9741C2D0Ev();
extern void _ZN7S9741C22v4Ev();
extern void _ZN7S9741C22v5Ev();
extern void _ZN7S9741C22v6Ev();
static  VTBL_ENTRY vtc_S9741C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9741C2[0]),
  (VTBL_ENTRY)&_ZN7S9741C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9741C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9741C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9741C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9741C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9741C2[];
extern  VTBL_ENTRY _ZTV7S9741C2[];
Class_Descriptor cd_S9741C2 = {  "S9741C2", // class name
  0,0,//no base classes
  &(vtc_S9741C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(49648,49524), // object size
  NSPAIRA(_ZTI7S9741C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9741C2),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  S9741C1  : S9741C2 {
  virtual  ~S9741C1(); // _ZN7S9741C1D1Ev
  virtual void  v1(); // _ZN7S9741C12v1Ev
  virtual void  v2(); // _ZN7S9741C12v2Ev
  virtual void  v3(); // _ZN7S9741C12v3Ev
  S9741C1(); // tgen
};
//SIG(1 S9741C1) C1{ BC2{ vd v4 v5 v6 Fp FC3{ m Fp} FC4{ BC5{ vd v8 Fi Fc[3]} vd v7 FC6{ m Fp Fi FC7{ m} FC8{ m}} FC9{ m FL[4]} FC10{ m FC11{ m Fp Fi FC7 FC8} FC9} FC12{ m FC11 FC13{ m Fi} FC9}} FC14{ m FC3 FC15{ BC16{ m Fp Fi FC17{ m} FC17}} FC9 Fc FC18{ m Fp Fi FC19{ m}}} Fp FC20{ BC5 vd v9 FC16 FC21{ m Fp} FC9 FC13 Fi[2] Fp} Fp[6] FC22{ BC23{ vd v11 Fi Fc[3]} vd v10 Fi} Fp[2] Fi Fc[49152] FC24{ m Fp Fi FC7 FC8} Fi} vd v1 v2 v3}


 S9741C1 ::~S9741C1(){ note_dtor("S9741C1", this);}
void  S9741C1 ::v1(){vfunc_called(this, "_ZN7S9741C12v1Ev");}
void  S9741C1 ::v2(){vfunc_called(this, "_ZN7S9741C12v2Ev");}
void  S9741C1 ::v3(){vfunc_called(this, "_ZN7S9741C12v3Ev");}
S9741C1 ::S9741C1(){ note_ctor("S9741C1", this);} // tgen

static void Test_S9741C1()
{
  extern Class_Descriptor cd_S9741C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6207,12382)];
    init_test(&cd_S9741C1, buf);
    S9741C1 *dp, &lv = *(dp=new (buf) S9741C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49648,49524), "sizeof(S9741C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9741C1)");
    check_base_class_offset(lv, (S9741C2*), 0, "S9741C1");
    test_class_info(&lv, &cd_S9741C1);
    dp->~S9741C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9741C1(Test_S9741C1, "S9741C1", ABISELECT(49648,49524));

#else // __cplusplus

extern void _ZN7S9741C1C1Ev();
extern void _ZN7S9741C1D1Ev();
Name_Map name_map_S9741C1[] = {
  NSPAIR(_ZN7S9741C1C1Ev),
  NSPAIR(_ZN7S9741C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9741C2;
extern VTBL_ENTRY _ZTI7S9741C2[];
extern  VTBL_ENTRY _ZTV7S9741C2[];
static Base_Class bases_S9741C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9741C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9741C1[];
extern void _ZN7S9741C1D1Ev();
extern void _ZN7S9741C1D0Ev();
extern void _ZN7S9741C22v4Ev();
extern void _ZN7S9741C22v5Ev();
extern void _ZN7S9741C22v6Ev();
extern void _ZN7S9741C12v1Ev();
extern void _ZN7S9741C12v2Ev();
extern void _ZN7S9741C12v3Ev();
static  VTBL_ENTRY vtc_S9741C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9741C1[0]),
  (VTBL_ENTRY)&_ZN7S9741C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9741C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9741C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9741C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9741C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9741C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9741C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9741C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9741C1[];
extern  VTBL_ENTRY _ZTV7S9741C1[];
Class_Descriptor cd_S9741C1 = {  "S9741C1", // class name
  bases_S9741C1, 1,
  &(vtc_S9741C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(49648,49524), // object size
  NSPAIRA(_ZTI7S9741C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9741C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S21216C9C1Ev();
extern void _ZN8S21216C9D1Ev();
Name_Map name_map_S21216C9[] = {
  NSPAIR(_ZN8S21216C9C1Ev),
  NSPAIR(_ZN8S21216C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21216C9[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C9[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
Class_Descriptor cd_S21216C9 = {  "S21216C9", // class name
  0,0,//no base classes
  &(vtc_S21216C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21216C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21216C9),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  S21216C7  : virtual S19894C34 , virtual S21216C9 {
  ::S21216C9 s21216c7f0;
  ~S21216C7(); // tgen
  S21216C7(); // tgen
};
//SIG(-1 S21216C7) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S21216C7()
{
  extern Class_Descriptor cd_S21216C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21216C7, buf);
    S21216C7 *dp, &lv = *(dp=new (buf) S21216C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21216C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C7)");
    check_base_class_offset(lv, (S19894C34*), 0, "S21216C7");
    check_base_class_offset(lv, (S21216C9*), 0, "S21216C7");
    check_field_offset(lv, s21216c7f0, ABISELECT(8,4), "S21216C7.s21216c7f0");
    test_class_info(&lv, &cd_S21216C7);
    dp->~S21216C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C7(Test_S21216C7, "S21216C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21216C7C1Ev();
extern void _ZN8S21216C7D1Ev();
Name_Map name_map_S21216C7[] = {
  NSPAIR(_ZN8S21216C7C1Ev),
  NSPAIR(_ZN8S21216C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
static Base_Class bases_S21216C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C9,    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 _ZTI8S21216C7[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S21216C7[];
static  VTT_ENTRY vtt_S21216C7[] = {
  {&(_ZTV8S21216C7[5]),  5,6},
  {&(_ZTV8S21216C7[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
Class_Descriptor cd_S21216C7 = {  "S21216C7", // class name
  bases_S21216C7, 2,
  &(vtc_S21216C7[0]), // expected_vtbl_contents
  &(vtt_S21216C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21216C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21216C7),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21216C7),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  S21216C6  : S21216C7 , S19894C34 , S21216C9 {
  virtual  ~S21216C6(); // _ZN8S21216C6D2Ev
  S21216C6(); // tgen
};
//SIG(-1 S21216C6) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S21216C6()
{
  extern Class_Descriptor cd_S21216C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21216C6, buf);
    S21216C6 *dp, &lv = *(dp=new (buf) S21216C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21216C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C6)");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(24,12), "S21216C6");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*), 0, "S21216C6");
    check_base_class_offset(lv, (S21216C7*), 0, "S21216C6");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S21216C6");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*), ABISELECT(16,8), "S21216C6");
    test_class_info(&lv, &cd_S21216C6);
    dp->~S21216C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C6(Test_S21216C6, "S21216C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21216C6C1Ev();
extern void _ZN8S21216C6D2Ev();
Name_Map name_map_S21216C6[] = {
  NSPAIR(_ZN8S21216C6C1Ev),
  NSPAIR(_ZN8S21216C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
static Base_Class bases_S21216C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    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
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C9,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21216C6[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C6[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S21216C6[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__8S21216C6[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C6[] = {
  {&(_ZTV8S21216C6[5]),  5,11},
  {&(_tg__ZTV8S21216C7__8S21216C6[5]),  5,6},
  {&(_tg__ZTV8S21216C7__8S21216C6[5]),  5,6},
  {&(_ZTV8S21216C6[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
Class_Descriptor cd_S21216C6 = {  "S21216C6", // class name
  bases_S21216C6, 5,
  &(vtc_S21216C6[0]), // expected_vtbl_contents
  &(vtt_S21216C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21216C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21216C6),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21216C6),4, //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  S21216C12  : S21216C9 , S19894C6_nt , virtual S21216C7 {
  virtual void  v2(); // _ZN9S21216C122v2Ev
  ~S21216C12(); // tgen
  S21216C12(); // tgen
};
//SIG(-1 S21216C12) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S21216C12()
{
  extern Class_Descriptor cd_S21216C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21216C12, buf);
    S21216C12 *dp, &lv = *(dp=new (buf) S21216C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21216C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C12)");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*), 0, "S21216C12");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S21216C12");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C12");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(16,8), "S21216C12");
    check_base_class_offset(lv, (S21216C7*), ABISELECT(16,8), "S21216C12");
    test_class_info(&lv, &cd_S21216C12);
    dp->~S21216C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C12(Test_S21216C12, "S21216C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S21216C12C1Ev();
extern void _ZN9S21216C12D1Ev();
Name_Map name_map_S21216C12[] = {
  NSPAIR(_ZN9S21216C12C1Ev),
  NSPAIR(_ZN9S21216C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
static Base_Class bases_S21216C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI9S21216C12[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C12[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C12[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C12[] = {
  {&(_ZTV9S21216C12[5]),  5,13},
  {&(_ZTV9S21216C12[12]),  12,13},
  {&(_ZTV9S21216C12[12]),  12,13},
  {&(_tg__ZTV8S21216C7__9S21216C12[5]),  5,6},
  {&(_tg__ZTV8S21216C7__9S21216C12[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
Class_Descriptor cd_S21216C12 = {  "S21216C12", // class name
  bases_S21216C12, 5,
  &(vtc_S21216C12[0]), // expected_vtbl_contents
  &(vtt_S21216C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S21216C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21216C12),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C12),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C11  : virtual S21216C7 , virtual S21216C12 {
  ~S21216C11(); // tgen
  S21216C11(); // tgen
};
//SIG(-1 S21216C11) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S21216C11()
{
  extern Class_Descriptor cd_S21216C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S21216C11, buf);
    S21216C11 *dp, &lv = *(dp=new (buf) S21216C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S21216C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C11)");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C11");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*), 0, "S21216C11");
    check_base_class_offset(lv, (S21216C7*), ABISELECT(8,4), "S21216C11");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(8,4), "S21216C11");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(24,12), "S21216C11");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(32,16), "S21216C11");
    check_base_class_offset(lv, (S21216C12*), ABISELECT(24,12), "S21216C11");
    test_class_info(&lv, &cd_S21216C11);
    dp->~S21216C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C11(Test_S21216C11, "S21216C11", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S21216C11C1Ev();
extern void _ZN9S21216C11D1Ev();
Name_Map name_map_S21216C11[] = {
  NSPAIR(_ZN9S21216C11C1Ev),
  NSPAIR(_ZN9S21216C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
static Base_Class bases_S21216C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21216C9,    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
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C9,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C11[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY vtc_S21216C11[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern VTBL_ENTRY _ZTV9S21216C11[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__9S21216C11[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C11[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C11[] = {
  {&(_ZTV9S21216C11[7]),  7,23},
  {&(_ZTV9S21216C11[13]),  13,23},
  {&(_ZTV9S21216C11[7]),  7,23},
  {&(_ZTV9S21216C11[21]),  21,23},
  {&(_tg__ZTV8S21216C7__9S21216C11[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__9S21216C11[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C11[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
Class_Descriptor cd_S21216C11 = {  "S21216C11", // class name
  bases_S21216C11, 6,
  &(vtc_S21216C11[0]), // expected_vtbl_contents
  &(vtt_S21216C11[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S21216C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21216C11),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C15  : virtual S19894C34 , virtual S19894C6_nt {
  ~S21216C15(); // tgen
  S21216C15(); // tgen
};
//SIG(-1 S21216C15) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S21216C15()
{
  extern Class_Descriptor cd_S21216C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21216C15, buf);
    S21216C15 *dp, &lv = *(dp=new (buf) S21216C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21216C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C15)");
    check_base_class_offset(lv, (S19894C34*), 0, "S21216C15");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S21216C15");
    test_class_info(&lv, &cd_S21216C15);
    dp->~S21216C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C15(Test_S21216C15, "S21216C15", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S21216C15C1Ev();
extern void _ZN9S21216C15D1Ev();
Name_Map name_map_S21216C15[] = {
  NSPAIR(_ZN9S21216C15C1Ev),
  NSPAIR(_ZN9S21216C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S21216C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21216C15[];
static  VTBL_ENTRY vtc_S21216C15[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern VTBL_ENTRY _ZTV9S21216C15[];
static  VTT_ENTRY vtt_S21216C15[] = {
  {&(_ZTV9S21216C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
Class_Descriptor cd_S21216C15 = {  "S21216C15", // class name
  bases_S21216C15, 2,
  &(vtc_S21216C15[0]), // expected_vtbl_contents
  &(vtt_S21216C15[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S21216C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21216C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C15),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  S21216C10  : virtual S21216C11 , S21216C7 , S19894C34 , S19894C17_nt , S21216C15 {
  virtual  ~S21216C10(); // _ZN9S21216C10D2Ev
  S21216C10(); // tgen
};
//SIG(-1 S21216C10) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S21216C10()
{
  extern Class_Descriptor cd_S21216C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S21216C10, buf);
    S21216C10 *dp, &lv = *(dp=new (buf) S21216C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S21216C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C10)");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(48,24), "S21216C10");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(48,24), "S21216C10");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*), ABISELECT(48,24), "S21216C10");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(24,12), "S21216C10");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(24,12), "S21216C10");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(32,16), "S21216C10");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(32,16), "S21216C10");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(48,24), "S21216C10");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(56,28), "S21216C10");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(48,24), "S21216C10");
    check_base_class_offset(lv, (S21216C11*), ABISELECT(24,12), "S21216C10");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*), 0, "S21216C10");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S21216C10");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S21216C10");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*), ABISELECT(64,32), "S21216C10");
    check_base_class_offset(lv, (S21216C15*), ABISELECT(16,8), "S21216C10");
    test_class_info(&lv, &cd_S21216C10);
    dp->~S21216C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C10(Test_S21216C10, "S21216C10", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S21216C10C1Ev();
extern void _ZN9S21216C10D2Ev();
Name_Map name_map_S21216C10[] = {
  NSPAIR(_ZN9S21216C10C1Ev),
  NSPAIR(_ZN9S21216C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
static Base_Class bases_S21216C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21216C9,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21216C15,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI9S21216C10[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY vtc_S21216C10[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern VTBL_ENTRY _ZTV9S21216C10[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C10[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A__9S21216C10[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C10[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C10[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__9S21216C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__9S21216C10[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__9S21216C10[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C10[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C10[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C10[] = {
  {&(_ZTV9S21216C10[9]),  9,39},
  {&(_tg__ZTV8S21216C7__A__9S21216C10[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A__9S21216C10[3]),  3,4},
  {&(_tg__ZTV9S21216C15__9S21216C10[4]),  4,4},
  {&(_ZTV9S21216C10[23]),  23,39},
  {&(_ZTV9S21216C10[29]),  29,39},
  {&(_ZTV9S21216C10[23]),  23,39},
  {&(_ZTV9S21216C10[37]),  37,39},
  {&(_ZTV9S21216C10[16]),  16,39},
  {&(_tg__ZTV9S21216C11__9S21216C10[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__9S21216C10[5]),  5,6},
  {&(_tg__ZTV9S21216C11__9S21216C10[7]),  7,8},
  {&(_tg__ZTV9S21216C12__9S21216C11__9S21216C10[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C10[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__9S21216C10[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C10[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C10[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
Class_Descriptor cd_S21216C10 = {  "S21216C10", // class name
  bases_S21216C10, 12,
  &(vtc_S21216C10[0]), // expected_vtbl_contents
  &(vtt_S21216C10[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S21216C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21216C10),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C10),18, //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  S21216C17  : S19894C6_nt , S21216C9 , virtual S21216C12 , S21216C7 , S21216C6 {
  virtual  ~S21216C17(); // _ZN9S21216C17D2Ev
  S21216C17(); // tgen
};
//SIG(-1 S21216C17) C1{ BC2{ m Fp} BC3{ v1} VBC4{ BC3 BC2 VBC5{ VBC6{ m} VBC3 FC3} v2} BC5 BC7{ BC5 BC6 BC3 vd} vd}


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

static void Test_S21216C17()
{
  extern Class_Descriptor cd_S21216C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S21216C17, buf);
    S21216C17 *dp, &lv = *(dp=new (buf) S21216C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S21216C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C17)");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S21216C17");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*), 0, "S21216C17");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(56,28), "S21216C17");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(64,32), "S21216C17");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C17");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C17");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), 0, "S21216C17");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(72,36), "S21216C17");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(72,36), "S21216C17");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(72,36), "S21216C17");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(72,36), "S21216C17");
    check_base_class_offset(lv, (S21216C12*), ABISELECT(56,28), "S21216C17");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*), ABISELECT(16,8), "S21216C17");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(32,16), "S21216C17");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(32,16), "S21216C17");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(48,24), "S21216C17");
    check_base_class_offset(lv, (S21216C6*), ABISELECT(32,16), "S21216C17");
    test_class_info(&lv, &cd_S21216C17);
    dp->~S21216C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C17(Test_S21216C17, "S21216C17", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN9S21216C17C1Ev();
extern void _ZN9S21216C17D2Ev();
Name_Map name_map_S21216C17[] = {
  NSPAIR(_ZN9S21216C17C1Ev),
  NSPAIR(_ZN9S21216C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
static Base_Class bases_S21216C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21216C9,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(72,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21216C12,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(48,24), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI9S21216C17[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C17[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C17[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A__9S21216C17[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__A2__9S21216C17[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C6__A2__9S21216C17[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C6__9S21216C17[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C17[] = {
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17[] = {
  0,
  ABISELECT(-72,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C17[] = {
  {&(_ZTV9S21216C17[6]),  6,41},
  {&(_tg__ZTV8S21216C7__A__9S21216C17[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A__9S21216C17[3]),  3,4},
  {&(_tg__ZTV8S21216C6__9S21216C17[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__A2__9S21216C17[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C6__A2__9S21216C17[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C6__9S21216C17[3]),  3,4},
  {&(_ZTV9S21216C17[33]),  33,41},
  {&(_ZTV9S21216C17[40]),  40,41},
  {&(_ZTV9S21216C17[40]),  40,41},
  {&(_ZTV9S21216C17[14]),  14,41},
  {&(_ZTV9S21216C17[20]),  20,41},
  {&(_tg__ZTV9S21216C12__9S21216C17[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C17[5]),  5,6},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C17[5]),  5,6},
  {&(_tg__ZTV8S21216C7__9S21216C17[5]),  5,6},
  {&(_tg__ZTV8S21216C7__9S21216C17[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
Class_Descriptor cd_S21216C17 = {  "S21216C17", // class name
  bases_S21216C17, 13,
  &(vtc_S21216C17[0]), // expected_vtbl_contents
  &(vtt_S21216C17[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI9S21216C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21216C17),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C17),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  S21216C5  : virtual S21216C6 , S21216C10 , S3619C26 , virtual S21216C17 , S3619C16 {
  ::S19894C3 s21216c5f0;
  long s21216c5f1;
  virtual  ~S21216C5(); // _ZN8S21216C5D2Ev
  S21216C5(); // tgen
};
//SIG(-1 S21216C5) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} BC6{ VBC7{ VBC3 VBC8{ BC5 BC9{ m Fp} VBC3 v2}} BC3 BC4 BC10{ m} BC11{ VBC4 VBC9} vd} BC12{ m} VBC13{ BC9 BC5 VBC8 BC3 BC2 vd} BC14{ m} vd FC15{ VBC16{ BC17{ v3} BC9 VBC18{ VBC12 VBC17 FC17} v4}} Fl}


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

static void Test_S21216C5()
{
  extern Class_Descriptor cd_S21216C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[26];
    init_test(&cd_S21216C5, buf);
    S21216C5 *dp, &lv = *(dp=new (buf) S21216C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,100), "sizeof(S21216C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C5)");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(96,48), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(96,48), "S21216C5");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*), ABISELECT(96,48), "S21216C5");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*), ABISELECT(96,48), "S21216C5");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C17*), ABISELECT(96,48), "S21216C5");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(96,48), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(72,36), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(72,36), "S21216C5");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*), ABISELECT(72,36), "S21216C5");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C17*), ABISELECT(72,36), "S21216C5");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(72,36), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(72,36), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(72,36), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(88,44), "S21216C5");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*), ABISELECT(72,36), "S21216C5");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(104,52), "S21216C5");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(104,52), "S21216C5");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(120,60), "S21216C5");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(128,64), "S21216C5");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(120,60), "S21216C5");
    check_base_class_offset(lv, (S21216C12*)(S21216C17*), ABISELECT(120,60), "S21216C5");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*), ABISELECT(96,48), "S21216C5");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*), 0, "S21216C5");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*), 0, "S21216C5");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*), 0, "S21216C5");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*), ABISELECT(136,68), "S21216C5");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*), ABISELECT(16,8), "S21216C5");
    check_base_class_offset(lv, (S21216C10*), 0, "S21216C5");
    check_base_class_offset(lv, (S3619C26*), 0, "S21216C5");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C17*), ABISELECT(152,76), "S21216C5");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C17*), ABISELECT(144,72), "S21216C5");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C17*), ABISELECT(160,80), "S21216C5");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(176,88), "S21216C5");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C17*), ABISELECT(176,88), "S21216C5");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C17*), ABISELECT(192,96), "S21216C5");
    check_base_class_offset(lv, (S21216C6*)(S21216C17*), ABISELECT(176,88), "S21216C5");
    check_base_class_offset(lv, (S21216C17*), ABISELECT(144,72), "S21216C5");
    check_base_class_offset(lv, (S3619C16*), 0, "S21216C5");
    check_field_offset(lv, s21216c5f0, ABISELECT(24,12), "S21216C5.s21216c5f0");
    check_field_offset(lv, s21216c5f1, ABISELECT(64,32), "S21216C5.s21216c5f1");
    test_class_info(&lv, &cd_S21216C5);
    dp->~S21216C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C5(Test_S21216C5, "S21216C5", ABISELECT(200,100));

#else // __cplusplus

extern void _ZN8S21216C5C1Ev();
extern void _ZN8S21216C5D2Ev();
Name_Map name_map_S21216C5[] = {
  NSPAIR(_ZN8S21216C5C1Ev),
  NSPAIR(_ZN8S21216C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C17;
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
static Base_Class bases_S21216C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(88,44), //bcp->offset
    27, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(72,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C7,    ABISELECT(104,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(120,60), //bcp->offset
    44, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(96,48), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21216C7,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21216C15,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C10,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C9,    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
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(160,80), //bcp->offset
    64, //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
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(176,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
    24, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(192,96), //bcp->offset
    78, //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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(176,88), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C17,    ABISELECT(144,72), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21216C5[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn72_N8S21216C5D1Ev,_ZThn36_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn72_N8S21216C5D0Ev,_ZThn36_N8S21216C5D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn144_N8S21216C5D1Ev,_ZThn72_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn144_N8S21216C5D0Ev,_ZThn72_N8S21216C5D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C5[] = {
  ABISELECT(144,72),
  ABISELECT(72,36),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
  ABISELECT(120,60),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  ABISELECT(-72,-36),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-144,-72),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S21216C5[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C10__8S21216C5[] = {
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C10__A2__8S21216C5[] = {
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C10__A2__8S21216C5[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C5[] = {
  ABISELECT(120,60),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C10__8S21216C5[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C10__8S21216C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C10__8S21216C5[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C10__8S21216C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C10__8S21216C5[] = {
  ABISELECT(120,60),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C5[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__8S21216C5[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C5[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__8S21216C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__8S21216C5[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__8S21216C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__8S21216C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C5[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__8S21216C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__8S21216C5[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C5[] = {
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C5[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C17__A3__8S21216C5[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C5[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C17__A4__8S21216C5[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__8S21216C5[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C17__A1__8S21216C5[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17__8S21216C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17__8S21216C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A2__9S21216C17__8S21216C5[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17__8S21216C5[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17__8S21216C5[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
};
static  VTT_ENTRY vtt_S21216C5[] = {
  {&(_ZTV8S21216C5[11]),  11,81},
  {&(_tg__ZTV9S21216C10__8S21216C5[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C10__A2__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C10__A2__8S21216C5[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C5[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C10__8S21216C5[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C10__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C10__8S21216C5[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C10__8S21216C5[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C10__8S21216C5[4]),  4,4},
  {&(_ZTV8S21216C5[24]),  24,81},
  {&(_ZTV8S21216C5[24]),  24,81},
  {&(_ZTV8S21216C5[29]),  29,81},
  {&(_ZTV8S21216C5[37]),  37,81},
  {&(_ZTV8S21216C5[43]),  43,81},
  {&(_ZTV8S21216C5[51]),  51,81},
  {&(_ZTV8S21216C5[18]),  18,81},
  {&(_ZTV8S21216C5[61]),  61,81},
  {&(_ZTV8S21216C5[69]),  69,81},
  {&(_ZTV8S21216C5[75]),  75,81},
  {&(_ZTV8S21216C5[80]),  80,81},
  {&(_tg__ZTV8S21216C6__8S21216C5[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C78S21216C6__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C6__8S21216C5[5]),  5,8},
  {&(_tg__ZTV9S21216C11__8S21216C5[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__8S21216C5[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__8S21216C5[7]),  7,9},
  {&(_tg__ZTV8S21216C7__A1__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__8S21216C5[3]),  3,4},
  {&(_tg__ZTV9S21216C12__8S21216C5[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__8S21216C5[3]),  3,4},
  {&(_tg__ZTV9S21216C17__8S21216C5[6]),  6,9},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C17__A3__8S21216C5[3]),  3,4},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C5[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C17__A4__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__8S21216C5[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C17__A1__8S21216C5[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C17__8S21216C5[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C17__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A2__9S21216C17__8S21216C5[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A__9S21216C17__8S21216C5[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C17__8S21216C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21216C5D0Ev,_ZThn72_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21216C5D1Ev,_ZThn72_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21216C5D0Ev,_ZThn36_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21216C5D1Ev,_ZThn36_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C5 = {  "S21216C5", // class name
  bases_S21216C5, 27,
  &(vtc_S21216C5[0]), // expected_vtbl_contents
  &(vtt_S21216C5[0]), // expected_vtt_contents
  ABISELECT(200,100), // object size
  NSPAIRA(_ZTI8S21216C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21216C5),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21216C5),46, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C3  : virtual S3223C8_nt , S21216C5 {
  ~S21216C3(); // tgen
  S21216C3(); // tgen
};
//SIG(-1 S21216C3) C1{ VBC2{ m Fi} BC3{ VBC4{ BC5{ VBC6{ m} VBC7{ v1} FC7} BC6 BC7 vd} BC8{ VBC9{ VBC5 VBC10{ BC7 BC11{ m Fp} VBC5 v2}} BC5 BC6 BC12{ m} BC13{ VBC6 VBC11} vd} BC14{ m} VBC15{ BC11 BC7 VBC10 BC5 BC4 vd} BC16{ m} vd FC17{ VBC18{ BC19{ v3} BC11 VBC20{ VBC14 VBC19 FC19} v4}} Fl}}


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

static void Test_S21216C3()
{
  extern Class_Descriptor cd_S21216C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[27];
    init_test(&cd_S21216C3, buf);
    S21216C3 *dp, &lv = *(dp=new (buf) S21216C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S21216C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C3)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(72,36), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(104,52), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(104,52), "S21216C3");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*)(S21216C5*), ABISELECT(104,52), "S21216C3");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*)(S21216C5*), ABISELECT(104,52), "S21216C3");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C17*), ABISELECT(104,52), "S21216C3");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(104,52), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(80,40), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(80,40), "S21216C3");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*)(S21216C5*), ABISELECT(80,40), "S21216C3");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C17*), ABISELECT(80,40), "S21216C3");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(80,40), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(80,40), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(80,40), "S21216C3");
    /*is_ambiguous_... S21216C3::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(96,48), "S21216C3");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*)(S21216C5*), ABISELECT(80,40), "S21216C3");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(112,56), "S21216C3");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(112,56), "S21216C3");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(128,64), "S21216C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(136,68), "S21216C3");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(128,64), "S21216C3");
    check_base_class_offset(lv, (S21216C12*)(S21216C17*), ABISELECT(128,64), "S21216C3");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*)(S21216C5*), ABISELECT(104,52), "S21216C3");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*)(S21216C5*), 0, "S21216C3");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*)(S21216C5*), 0, "S21216C3");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*)(S21216C5*), 0, "S21216C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*)(S21216C5*), ABISELECT(144,72), "S21216C3");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*)(S21216C5*), ABISELECT(16,8), "S21216C3");
    check_base_class_offset(lv, (S21216C10*)(S21216C5*), 0, "S21216C3");
    check_base_class_offset(lv, (S3619C26*)(S21216C5*), 0, "S21216C3");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C17*), ABISELECT(160,80), "S21216C3");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C17*), ABISELECT(152,76), "S21216C3");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C17*), ABISELECT(168,84), "S21216C3");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(184,92), "S21216C3");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C17*), ABISELECT(184,92), "S21216C3");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C17*), ABISELECT(200,100), "S21216C3");
    check_base_class_offset(lv, (S21216C6*)(S21216C17*), ABISELECT(184,92), "S21216C3");
    check_base_class_offset(lv, (S21216C17*)(S21216C5*), ABISELECT(152,76), "S21216C3");
    check_base_class_offset(lv, (S3619C16*)(S21216C5*), 0, "S21216C3");
    check_base_class_offset(lv, (S21216C5*), 0, "S21216C3");
    test_class_info(&lv, &cd_S21216C3);
    dp->~S21216C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C3(Test_S21216C3, "S21216C3", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN8S21216C3C1Ev();
extern void _ZN8S21216C3D1Ev();
Name_Map name_map_S21216C3[] = {
  NSPAIR(_ZN8S21216C3C1Ev),
  NSPAIR(_ZN8S21216C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C17;
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C5;
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
static Base_Class bases_S21216C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19894C34,    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
    6, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(96,48), //bcp->offset
    28, //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_S21216C6,    ABISELECT(80,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(112,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(128,64), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(104,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21216C15,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21216C10,    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
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(168,84), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(200,100), //bcp->offset
    79, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(184,92), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C17,    ABISELECT(152,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21216C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21216C3[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C3D1Ev();
extern void _ZN8S21216C3D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C3D1Ev,_ZTv0_n24_N8S21216C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S21216C3D1Ev,_ZThn40_N8S21216C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C3D0Ev,_ZTv0_n24_N8S21216C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S21216C3D0Ev,_ZThn40_N8S21216C3D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C3D1Ev,_ZTv0_n32_N8S21216C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S21216C3D1Ev,_ZThn76_N8S21216C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C3D0Ev,_ZTv0_n32_N8S21216C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S21216C3D0Ev,_ZThn76_N8S21216C3D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C3D1Ev,_ZTvn16_n32_N8S21216C3D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C3D0Ev,_ZTvn16_n32_N8S21216C3D0Ev)();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C3[] = {
  ABISELECT(72,36),
  ABISELECT(152,76),
  ABISELECT(80,40),
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C3D0Ev,
  ABISELECT(128,64),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  ABISELECT(-80,-40),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C3D1Ev,_ZTv0_n24_N8S21216C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C3D0Ev,_ZTv0_n24_N8S21216C3D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-152,-76),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C3D1Ev,_ZTv0_n32_N8S21216C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C3D0Ev,_ZTv0_n32_N8S21216C3D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C3D1Ev,_ZTvn16_n32_N8S21216C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C3D0Ev,_ZTvn16_n32_N8S21216C3D0Ev),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S21216C3[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C5__8S21216C3[] = {
  ABISELECT(152,76),
  ABISELECT(80,40),
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C108S21216C5__8S21216C3[] = {
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C108S21216C5__A2__8S21216C3[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C108S21216C5__A2__8S21216C3[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C5__8S21216C3[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C108S21216C5__8S21216C3[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C108S21216C5__8S21216C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C108S21216C5__8S21216C3[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C108S21216C5__8S21216C3[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C108S21216C5__8S21216C3[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S21216C5D1Ev,_ZThn40_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S21216C5D0Ev,_ZThn40_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C5__8S21216C3[] = {
  ABISELECT(-80,-40),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C5__8S21216C3[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C5__8S21216C3[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C5__8S21216C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C5__8S21216C3[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C5__8S21216C3[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn152_N8S21216C5D1Ev,_ZThn76_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn152_N8S21216C5D0Ev,_ZThn76_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C5__8S21216C3[] = {
  ABISELECT(-152,-76),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C5__8S21216C3[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C5__8S21216C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C5__8S21216C3[] = {
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C3[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__8S21216C3[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C3[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__8S21216C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__8S21216C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__8S21216C3[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__8S21216C3[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__8S21216C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__8S21216C3[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C3[] = {
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C3[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C17__A3__8S21216C3[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C17__A4__8S21216C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__8S21216C3[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C17__A1__8S21216C3[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17__8S21216C3[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17__8S21216C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A2__9S21216C17__8S21216C3[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17__8S21216C3[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17__8S21216C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
};
static  VTT_ENTRY vtt_S21216C3[] = {
  {&(_ZTV8S21216C3[12]),  12,82},
  {&(_tg__ZTV8S21216C5__8S21216C3[11]),  11,14},
  {&(_tg__ZTV9S21216C108S21216C5__8S21216C3[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C108S21216C5__A2__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C108S21216C5__A2__8S21216C3[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C108S21216C5__8S21216C3[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C108S21216C5__8S21216C3[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C108S21216C5__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C108S21216C5__8S21216C3[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C108S21216C5__8S21216C3[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C108S21216C5__8S21216C3[4]),  4,4},
  {&(_tg__ZTV8S21216C6__8S21216C5__8S21216C3[6]),  6,9},
  {&(_tg__ZTV8S21216C6__8S21216C5__8S21216C3[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C5__8S21216C3[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C5__8S21216C3[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C5__8S21216C3[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C5__8S21216C3[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C5__8S21216C3[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C5__8S21216C3[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C5__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C5__8S21216C3[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C5__8S21216C3[2]),  2,3},
  {&(_ZTV8S21216C3[25]),  25,82},
  {&(_ZTV8S21216C3[25]),  25,82},
  {&(_ZTV8S21216C3[30]),  30,82},
  {&(_ZTV8S21216C3[38]),  38,82},
  {&(_ZTV8S21216C3[44]),  44,82},
  {&(_ZTV8S21216C3[52]),  52,82},
  {&(_ZTV8S21216C3[19]),  19,82},
  {&(_ZTV8S21216C3[62]),  62,82},
  {&(_ZTV8S21216C3[70]),  70,82},
  {&(_ZTV8S21216C3[76]),  76,82},
  {&(_ZTV8S21216C3[81]),  81,82},
  {&(_tg__ZTV8S21216C6__8S21216C3[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C78S21216C6__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C6__8S21216C3[5]),  5,8},
  {&(_tg__ZTV9S21216C11__8S21216C3[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__8S21216C3[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__8S21216C3[7]),  7,9},
  {&(_tg__ZTV8S21216C7__A1__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__8S21216C3[3]),  3,4},
  {&(_tg__ZTV9S21216C12__8S21216C3[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__8S21216C3[3]),  3,4},
  {&(_tg__ZTV9S21216C17__8S21216C3[6]),  6,9},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C17__A3__8S21216C3[3]),  3,4},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C3[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C17__A4__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__8S21216C3[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C17__A1__8S21216C3[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C17__8S21216C3[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C17__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A2__9S21216C17__8S21216C3[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A__9S21216C17__8S21216C3[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C17__8S21216C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21216C3[];
extern  VTBL_ENTRY _ZTV8S21216C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C3[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21216C5D0Ev,_ZThn76_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21216C5D1Ev,_ZThn76_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21216C5D0Ev,_ZThn40_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21216C5D1Ev,_ZThn40_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C3D0Ev,_ZTv0_n32_N8S21216C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21216C3D0Ev,_ZThn76_N8S21216C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C3D1Ev,_ZTv0_n32_N8S21216C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21216C3D1Ev,_ZThn76_N8S21216C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C3D0Ev,_ZTv0_n24_N8S21216C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21216C3D0Ev,_ZThn40_N8S21216C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C3D1Ev,_ZTv0_n24_N8S21216C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21216C3D1Ev,_ZThn40_N8S21216C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C3 = {  "S21216C3", // class name
  bases_S21216C3, 29,
  &(vtc_S21216C3[0]), // expected_vtbl_contents
  &(vtt_S21216C3[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI8S21216C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21216C3),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21216C3),58, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C22  : virtual S21216C6 , virtual S19894C6_nt {
  void *s21216c22f0[9];
  ~S21216C22(); // tgen
  S21216C22(); // tgen
};
//SIG(-1 S21216C22) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S21216C22()
{
  extern Class_Descriptor cd_S21216C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S21216C22, buf);
    S21216C22 *dp, &lv = *(dp=new (buf) S21216C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S21216C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C22)");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), 0, "S21216C22");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), 0, "S21216C22");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(80,40), "S21216C22");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(80,40), "S21216C22");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(96,48), "S21216C22");
    check_base_class_offset(lv, (S21216C6*), ABISELECT(80,40), "S21216C22");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S21216C22");
    check_field_offset(lv, s21216c22f0, ABISELECT(8,4), "S21216C22.s21216c22f0");
    test_class_info(&lv, &cd_S21216C22);
    dp->~S21216C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C22(Test_S21216C22, "S21216C22", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN9S21216C22C1Ev();
extern void _ZN9S21216C22D1Ev();
Name_Map name_map_S21216C22[] = {
  NSPAIR(_ZN9S21216C22C1Ev),
  NSPAIR(_ZN9S21216C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S21216C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21216C9,    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
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C22[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C22D1Ev();
extern void _ZN9S21216C22D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C22[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C22[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__9S21216C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C22[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C6__9S21216C22[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C22[] = {
  {&(_ZTV9S21216C22[7]),  7,22},
  {&(_ZTV9S21216C22[16]),  16,22},
  {&(_ZTV9S21216C22[7]),  7,22},
  {&(_ZTV9S21216C22[21]),  21,22},
  {&(_tg__ZTV8S21216C6__9S21216C22[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C22[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C22[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C6__9S21216C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21216C22[];
extern  VTBL_ENTRY _ZTV9S21216C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C22[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C22 = {  "S21216C22", // class name
  bases_S21216C22, 7,
  &(vtc_S21216C22[0]), // expected_vtbl_contents
  &(vtt_S21216C22[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI9S21216C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21216C22),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C22),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C21  : virtual S21216C22 , S19894C34 , S21216C11 {
  void *s21216c21f0;
  virtual  ~S21216C21(); // _ZN9S21216C21D2Ev
  S21216C21(); // tgen
};
//SIG(-1 S21216C21) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S21216C21()
{
  extern Class_Descriptor cd_S21216C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S21216C21, buf);
    S21216C21 *dp, &lv = *(dp=new (buf) S21216C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S21216C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C21)");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(120,60), "S21216C21");
    /*is_ambiguous_... S21216C21::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(120,60), "S21216C21");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(16,8), "S21216C21");
    /*is_ambiguous_... S21216C21::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(16,8), "S21216C21");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(96,48), "S21216C21");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(96,48), "S21216C21");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(112,56), "S21216C21");
    check_base_class_offset(lv, (S21216C6*)(S21216C22*), ABISELECT(96,48), "S21216C21");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C22*), ABISELECT(120,60), "S21216C21");
    check_base_class_offset(lv, (S21216C22*), ABISELECT(16,8), "S21216C21");
    /*is_ambiguous_... S21216C21::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S21216C21");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(128,64), "S21216C21");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(128,64), "S21216C21");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(144,72), "S21216C21");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(152,76), "S21216C21");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(144,72), "S21216C21");
    check_base_class_offset(lv, (S21216C11*), 0, "S21216C21");
    check_field_offset(lv, s21216c21f0, ABISELECT(8,4), "S21216C21.s21216c21f0");
    test_class_info(&lv, &cd_S21216C21);
    dp->~S21216C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C21(Test_S21216C21, "S21216C21", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S21216C21C1Ev();
extern void _ZN9S21216C21D2Ev();
Name_Map name_map_S21216C21[] = {
  NSPAIR(_ZN9S21216C21C1Ev),
  NSPAIR(_ZN9S21216C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C22;
extern VTBL_ENTRY _ZTI9S21216C22[];
extern  VTBL_ENTRY _ZTV9S21216C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C22[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
static Base_Class bases_S21216C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21216C22,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C7,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C9,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21216C11,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C21[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C21D1Ev();
extern void _ZN9S21216C21D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY vtc_S21216C21[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern VTBL_ENTRY _ZTV9S21216C21[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C21[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__9S21216C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__9S21216C21[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__9S21216C21[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C22D1Ev();
extern void _ZN9S21216C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C21[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C22__9S21216C21[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C21[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C21[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__9S21216C21[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C21[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C6__9S21216C21[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__9S21216C21[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C21[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C21[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C21[] = {
  {&(_ZTV9S21216C21[10]),  10,51},
  {&(_tg__ZTV9S21216C11__9S21216C21[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__9S21216C21[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__9S21216C21[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__9S21216C21[7]),  7,9},
  {&(_ZTV9S21216C21[21]),  21,51},
  {&(_ZTV9S21216C21[30]),  30,51},
  {&(_ZTV9S21216C21[21]),  21,51},
  {&(_ZTV9S21216C21[35]),  35,51},
  {&(_ZTV9S21216C21[41]),  41,51},
  {&(_ZTV9S21216C21[49]),  49,51},
  {&(_tg__ZTV9S21216C22__9S21216C21[7]),  7,10},
  {&(_tg__ZTV8S21216C6__9S21216C22__9S21216C21[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C21[7]),  7,10},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C21[2]),  2,3},
  {&(_tg__ZTV8S21216C6__9S21216C21[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C21[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C21[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C6__9S21216C21[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A1__9S21216C21[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__9S21216C21[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C21[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C21[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21216C21[];
extern  VTBL_ENTRY _ZTV9S21216C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C21[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C21 = {  "S21216C21", // class name
  bases_S21216C21, 14,
  &(vtc_S21216C21[0]), // expected_vtbl_contents
  &(vtt_S21216C21[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S21216C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21216C21),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C21),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C24  : virtual S21216C21 , S3619C26 , S21216C5 {
  virtual  ~S21216C24(); // _ZN9S21216C24D2Ev
  virtual void  v3(); // _ZN9S21216C242v3Ev
  S21216C24(); // tgen
};
//SIG(-1 S21216C24) C1{ VBC2{ VBC3{ VBC4{ BC5{ VBC6{ m} VBC7{ v2} FC7} BC6 BC7 vd} VBC8{ m Fp} Fp[9]} BC6 BC9{ VBC5 VBC10{ BC7 BC8 VBC5 v3}} vd Fp} BC11{ m} BC12{ VBC4 BC13{ VBC9 BC5 BC6 BC14{ m} BC15{ VBC6 VBC8} vd} BC11 VBC16{ BC8 BC7 VBC10 BC5 BC4 vd} BC17{ m} vd FC18{ VBC19{ BC20{ v4} BC8 VBC21{ VBC11 VBC20 FC20} v5}} Fl} vd v1}


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

static void Test_S21216C24()
{
  extern Class_Descriptor cd_S21216C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[38];
    init_test(&cd_S21216C24, buf);
    S21216C24 *dp, &lv = *(dp=new (buf) S21216C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,148), "sizeof(S21216C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C24)");
    /*is_ambiguous_... S21216C24::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(192,96), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(192,96), "S21216C24");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*)(S21216C5*), ABISELECT(192,96), "S21216C24");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*)(S21216C5*), ABISELECT(192,96), "S21216C24");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C17*), ABISELECT(192,96), "S21216C24");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(192,96), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(88,44), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(88,44), "S21216C24");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*)(S21216C5*), ABISELECT(88,44), "S21216C24");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C17*), ABISELECT(88,44), "S21216C24");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(88,44), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(168,84), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(168,84), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(184,92), "S21216C24");
    check_base_class_offset(lv, (S21216C6*)(S21216C22*), ABISELECT(168,84), "S21216C24");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*)(S21216C5*), ABISELECT(168,84), "S21216C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C22*), ABISELECT(192,96), "S21216C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*)(S21216C5*), ABISELECT(192,96), "S21216C24");
    check_base_class_offset(lv, (S21216C22*)(S21216C21*), ABISELECT(88,44), "S21216C24");
    /*is_ambiguous_... S21216C21::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C21*), ABISELECT(72,36), "S21216C24");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*)(S21216C21*), ABISELECT(200,100), "S21216C24");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(200,100), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(200,100), "S21216C24");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(216,108), "S21216C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(224,112), "S21216C24");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*)(S21216C21*), ABISELECT(216,108), "S21216C24");
    /*is_ambiguous_... S21216C24::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(216,108), "S21216C24");
    check_base_class_offset(lv, (S21216C12*)(S21216C17*), ABISELECT(216,108), "S21216C24");
    check_base_class_offset(lv, (S21216C11*)(S21216C21*), ABISELECT(72,36), "S21216C24");
    check_base_class_offset(lv, (S21216C21*), ABISELECT(72,36), "S21216C24");
    /*is_ambiguous_... S21216C24::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*), ABISELECT(72,36), "S21216C24");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*)(S21216C5*), ABISELECT(232,116), "S21216C24");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*)(S21216C5*), 0, "S21216C24");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*)(S21216C5*), 0, "S21216C24");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*)(S21216C5*), 0, "S21216C24");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*)(S21216C5*), ABISELECT(16,8), "S21216C24");
    check_base_class_offset(lv, (S21216C10*)(S21216C5*), 0, "S21216C24");
    check_base_class_offset(lv, (S3619C26*)(S21216C5*), 0, "S21216C24");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C17*), ABISELECT(248,124), "S21216C24");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C17*), ABISELECT(240,120), "S21216C24");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C17*), ABISELECT(256,128), "S21216C24");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(272,136), "S21216C24");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C17*), ABISELECT(272,136), "S21216C24");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C17*), ABISELECT(288,144), "S21216C24");
    check_base_class_offset(lv, (S21216C6*)(S21216C17*), ABISELECT(272,136), "S21216C24");
    check_base_class_offset(lv, (S21216C17*)(S21216C5*), ABISELECT(240,120), "S21216C24");
    check_base_class_offset(lv, (S3619C16*)(S21216C5*), 0, "S21216C24");
    check_base_class_offset(lv, (S21216C5*), 0, "S21216C24");
    test_class_info(&lv, &cd_S21216C24);
    dp->~S21216C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C24(Test_S21216C24, "S21216C24", ABISELECT(296,148));

#else // __cplusplus

extern void _ZN9S21216C24C1Ev();
extern void _ZN9S21216C24D2Ev();
Name_Map name_map_S21216C24[] = {
  NSPAIR(_ZN9S21216C24C1Ev),
  NSPAIR(_ZN9S21216C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C22;
extern VTBL_ENTRY _ZTI9S21216C22[];
extern  VTBL_ENTRY _ZTV9S21216C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C22[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C21;
extern VTBL_ENTRY _ZTI9S21216C21[];
extern  VTBL_ENTRY _ZTV9S21216C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C21[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C17;
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C5;
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
static Base_Class bases_S21216C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(168,84), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(184,92), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(168,84), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21216C22,    ABISELECT(88,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(200,100), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(216,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(224,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
    12, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(216,108), //bcp->offset
    64, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C21,    ABISELECT(72,36), //bcp->offset
    21, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C11,    ABISELECT(232,116), //bcp->offset
    73, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C15,    ABISELECT(16,8), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21216C10,    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
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(248,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(240,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
    12, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(256,128), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(288,144), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(272,136), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C17,    ABISELECT(240,120), //bcp->offset
    81, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C24[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C24D1Ev();
extern void _ZN9S21216C24D0Ev();
extern void _ZN9S21216C242v3Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn72_N9S21216C24D1Ev,_ZThn36_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn72_N9S21216C24D0Ev,_ZThn36_N9S21216C24D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn88_N9S21216C24D1Ev,_ZThn44_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn88_N9S21216C24D0Ev,_ZThn44_N9S21216C24D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S21216C24D1Ev,_ZThn84_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S21216C24D0Ev,_ZThn84_N9S21216C24D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn240_N9S21216C24D1Ev,_ZThn120_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn240_N9S21216C24D0Ev,_ZThn120_N9S21216C24D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev)();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C24[] = {
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(240,120),
  ABISELECT(168,84),
  ABISELECT(192,96),
  ABISELECT(216,108),
  ABISELECT(200,100),
  ABISELECT(232,116),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
  ABISELECT(176,88),
  ABISELECT(176,88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  ABISELECT(-72,-36),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-240,-120),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev),
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C24[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C5__9S21216C24[] = {
  ABISELECT(240,120),
  ABISELECT(168,84),
  ABISELECT(192,96),
  ABISELECT(216,108),
  ABISELECT(200,100),
  ABISELECT(232,116),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C108S21216C5__9S21216C24[] = {
  ABISELECT(192,96),
  ABISELECT(216,108),
  ABISELECT(200,100),
  ABISELECT(232,116),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C108S21216C5__A2__9S21216C24[] = {
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C108S21216C5__A2__9S21216C24[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C5__9S21216C24[] = {
  ABISELECT(176,88),
  ABISELECT(176,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C108S21216C5__9S21216C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C108S21216C5__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C108S21216C5__9S21216C24[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C108S21216C5__9S21216C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C108S21216C5__9S21216C24[] = {
  ABISELECT(176,88),
  ABISELECT(176,88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn168_N8S21216C5D1Ev,_ZThn84_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn168_N8S21216C5D0Ev,_ZThn84_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C5__9S21216C24[] = {
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C5__9S21216C24[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C5__9S21216C24[] = {
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C5__9S21216C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C5__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C5__9S21216C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C5__9S21216C24[] = {
  ABISELECT(176,88),
  ABISELECT(176,88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn240_N8S21216C5D1Ev,_ZThn120_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn240_N8S21216C5D0Ev,_ZThn120_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C5__9S21216C24[] = {
  ABISELECT(-240,-120),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C5__9S21216C24[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C5__9S21216C24[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C5__9S21216C24[] = {
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C21D1Ev();
extern void _ZN9S21216C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C24[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C21__9S21216C24[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C119S21216C21__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C119S21216C21__9S21216C24[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C119S21216C21__9S21216C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C21__9S21216C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C21__9S21216C24[] = {
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C21__9S21216C24[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C21__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C21__9S21216C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C22D1Ev();
extern void _ZN9S21216C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C24[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C22__9S21216C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C24[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__9S21216C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C6__9S21216C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__9S21216C24[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C24[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C24[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__A1__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__A1__9S21216C24[] = {
  0,
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__A1__9S21216C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C24[] = {
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C24[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C17__A3__9S21216C24[] = {
  0,
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C24[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C17__A4__9S21216C24[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__9S21216C24[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C17__A1__9S21216C24[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17__9S21216C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17__9S21216C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A2__9S21216C17__9S21216C24[] = {
  0,
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17__9S21216C24[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17__9S21216C24[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
};
static  VTT_ENTRY vtt_S21216C24[] = {
  {&(_ZTV9S21216C24[13]),  13,109},
  {&(_tg__ZTV8S21216C5__9S21216C24[11]),  11,14},
  {&(_tg__ZTV9S21216C108S21216C5__9S21216C24[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C108S21216C5__A2__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C108S21216C5__A2__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C108S21216C5__9S21216C24[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C108S21216C5__9S21216C24[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C108S21216C5__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C108S21216C5__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C108S21216C5__9S21216C24[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C108S21216C5__9S21216C24[4]),  4,4},
  {&(_tg__ZTV8S21216C6__8S21216C5__9S21216C24[6]),  6,9},
  {&(_tg__ZTV8S21216C9__8S21216C5__9S21216C24[3]),  3,4},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C5__9S21216C24[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C5__9S21216C24[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C5__9S21216C24[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C5__9S21216C24[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C5__9S21216C24[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C5__9S21216C24[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C5__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C5__9S21216C24[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C5__9S21216C24[2]),  2,3},
  {&(_ZTV9S21216C24[32]),  32,109},
  {&(_ZTV9S21216C24[43]),  43,109},
  {&(_ZTV9S21216C24[52]),  52,109},
  {&(_ZTV9S21216C24[43]),  43,109},
  {&(_ZTV9S21216C24[57]),  57,109},
  {&(_ZTV9S21216C24[63]),  63,109},
  {&(_ZTV9S21216C24[71]),  71,109},
  {&(_ZTV9S21216C24[80]),  80,109},
  {&(_ZTV9S21216C24[21]),  21,109},
  {&(_ZTV9S21216C24[89]),  89,109},
  {&(_ZTV9S21216C24[97]),  97,109},
  {&(_ZTV9S21216C24[103]),  103,109},
  {&(_ZTV9S21216C24[108]),  108,109},
  {&(_tg__ZTV9S21216C21__9S21216C24[10]),  10,13},
  {&(_tg__ZTV9S21216C119S21216C21__9S21216C24[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C119S21216C21__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C119S21216C21__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C119S21216C21__9S21216C24[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__9S21216C24[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C21__9S21216C24[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__9S21216C24[8]),  8,11},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C21__9S21216C24[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C21__9S21216C24[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C21__9S21216C24[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C24[7]),  7,10},
  {&(_tg__ZTV8S21216C6__9S21216C22__9S21216C24[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C24[7]),  7,10},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C24[2]),  2,3},
  {&(_tg__ZTV8S21216C6__9S21216C24[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C24[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C6__9S21216C24[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A1__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C24[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C11__A1__9S21216C24[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__A1__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__A1__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__A1__9S21216C24[7]),  7,9},
  {&(_tg__ZTV9S21216C17__9S21216C24[6]),  6,9},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C17__A3__9S21216C24[3]),  3,4},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C24[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C17__A4__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__9S21216C24[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C17__A1__9S21216C24[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C17__9S21216C24[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C17__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A2__9S21216C17__9S21216C24[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A__9S21216C17__9S21216C24[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C17__9S21216C24[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21216C24[];
extern  VTBL_ENTRY _ZTV9S21216C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C24[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21216C5D0Ev,_ZThn120_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21216C5D1Ev,_ZThn120_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21216C5D0Ev,_ZThn84_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21216C5D1Ev,_ZThn84_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21216C24D0Ev,_ZThn84_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21216C24D1Ev,_ZThn84_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21216C24D0Ev,_ZThn120_N9S21216C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21216C24D0Ev,_ZThn44_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21216C24D1Ev,_ZThn120_N9S21216C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21216C24D1Ev,_ZThn44_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21216C24D0Ev,_ZThn36_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21216C24D1Ev,_ZThn36_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C24 = {  "S21216C24", // class name
  bases_S21216C24, 33,
  &(vtc_S21216C24[0]), // expected_vtbl_contents
  &(vtt_S21216C24[0]), // expected_vtt_contents
  ABISELECT(296,148), // object size
  NSPAIRA(_ZTI9S21216C24),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21216C24),109, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C24),75, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C23  : S21216C24 {
  int s21216c23f0;
  ~S21216C23(); // tgen
  S21216C23(); // tgen
};
//SIG(-1 S21216C23) C1{ BC2{ VBC3{ VBC4{ VBC5{ BC6{ VBC7{ m} VBC8{ v1} FC8} BC7 BC8 vd} VBC9{ m Fp} Fp[9]} BC7 BC10{ VBC6 VBC11{ BC8 BC9 VBC6 v2}} vd Fp} BC12{ m} BC13{ VBC5 BC14{ VBC10 BC6 BC7 BC15{ m} BC16{ VBC7 VBC9} vd} BC12 VBC17{ BC9 BC8 VBC11 BC6 BC5 vd} BC18{ m} vd FC19{ VBC20{ BC21{ v4} BC9 VBC22{ VBC12 VBC21 FC21} v5}} Fl} vd v3} Fi}


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

static void Test_S21216C23()
{
  extern Class_Descriptor cd_S21216C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,40)];
    init_test(&cd_S21216C23, buf);
    S21216C23 *dp, &lv = *(dp=new (buf) S21216C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S21216C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C23)");
    /*is_ambiguous_... S21216C23::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(200,104), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(200,104), "S21216C23");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*), ABISELECT(200,104), "S21216C23");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*), ABISELECT(200,104), "S21216C23");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C17*), ABISELECT(200,104), "S21216C23");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(200,104), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(96,52), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(96,52), "S21216C23");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*), ABISELECT(96,52), "S21216C23");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C17*), ABISELECT(96,52), "S21216C23");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(96,52), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(176,92), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(176,92), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(192,100), "S21216C23");
    check_base_class_offset(lv, (S21216C6*)(S21216C22*), ABISELECT(176,92), "S21216C23");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*)(S21216C5*)(S21216C24*), ABISELECT(176,92), "S21216C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C22*), ABISELECT(200,104), "S21216C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*), ABISELECT(200,104), "S21216C23");
    check_base_class_offset(lv, (S21216C22*)(S21216C21*), ABISELECT(96,52), "S21216C23");
    /*is_ambiguous_... S21216C21::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C21*), ABISELECT(80,44), "S21216C23");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*)(S21216C21*), ABISELECT(208,108), "S21216C23");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(208,108), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(208,108), "S21216C23");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(224,116), "S21216C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(232,120), "S21216C23");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*)(S21216C21*), ABISELECT(224,116), "S21216C23");
    /*is_ambiguous_... S21216C23::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(224,116), "S21216C23");
    check_base_class_offset(lv, (S21216C12*)(S21216C17*), ABISELECT(224,116), "S21216C23");
    check_base_class_offset(lv, (S21216C11*)(S21216C21*), ABISELECT(80,44), "S21216C23");
    check_base_class_offset(lv, (S21216C21*)(S21216C24*), ABISELECT(80,44), "S21216C23");
    /*is_ambiguous_... S21216C24::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S21216C24*), ABISELECT(72,36), "S21216C23");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*)(S21216C5*)(S21216C24*), ABISELECT(240,124), "S21216C23");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*), 0, "S21216C23");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*)(S21216C5*)(S21216C24*), 0, "S21216C23");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*)(S21216C5*)(S21216C24*), 0, "S21216C23");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*), ABISELECT(16,8), "S21216C23");
    check_base_class_offset(lv, (S21216C10*)(S21216C5*)(S21216C24*), 0, "S21216C23");
    check_base_class_offset(lv, (S3619C26*)(S21216C5*)(S21216C24*), 0, "S21216C23");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C17*), ABISELECT(256,132), "S21216C23");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C17*), ABISELECT(248,128), "S21216C23");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C17*), ABISELECT(264,136), "S21216C23");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(280,144), "S21216C23");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C17*), ABISELECT(280,144), "S21216C23");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C17*), ABISELECT(296,152), "S21216C23");
    check_base_class_offset(lv, (S21216C6*)(S21216C17*), ABISELECT(280,144), "S21216C23");
    check_base_class_offset(lv, (S21216C17*)(S21216C5*)(S21216C24*), ABISELECT(248,128), "S21216C23");
    check_base_class_offset(lv, (S3619C16*)(S21216C5*)(S21216C24*), 0, "S21216C23");
    check_base_class_offset(lv, (S21216C5*)(S21216C24*), 0, "S21216C23");
    check_base_class_offset(lv, (S21216C24*), 0, "S21216C23");
    check_field_offset(lv, s21216c23f0, ABISELECT(76,40), "S21216C23.s21216c23f0");
    test_class_info(&lv, &cd_S21216C23);
    dp->~S21216C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C23(Test_S21216C23, "S21216C23", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN9S21216C23C1Ev();
extern void _ZN9S21216C23D1Ev();
Name_Map name_map_S21216C23[] = {
  NSPAIR(_ZN9S21216C23C1Ev),
  NSPAIR(_ZN9S21216C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C22;
extern VTBL_ENTRY _ZTI9S21216C22[];
extern  VTBL_ENTRY _ZTV9S21216C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C22[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C21;
extern VTBL_ENTRY _ZTI9S21216C21[];
extern  VTBL_ENTRY _ZTV9S21216C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C21[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C17;
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C5;
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
extern Class_Descriptor cd_S21216C24;
extern VTBL_ENTRY _ZTI9S21216C24[];
extern  VTBL_ENTRY _ZTV9S21216C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C24[];
static Base_Class bases_S21216C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(192,100), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(176,92), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21216C22,    ABISELECT(96,52), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(208,108), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(224,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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(224,116), //bcp->offset
    64, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C21,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21216C11,    ABISELECT(240,124), //bcp->offset
    73, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C15,    ABISELECT(16,8), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21216C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(264,136), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(280,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(280,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(296,152), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(280,144), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C17,    ABISELECT(248,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21216C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C23[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C23D1Ev();
extern void _ZN9S21216C23D0Ev();
extern void _ZN9S21216C242v3Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C23D1Ev,_ZThn44_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C23D0Ev,_ZThn44_N9S21216C23D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S21216C23D1Ev,_ZThn52_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn96_N9S21216C23D0Ev,_ZThn52_N9S21216C23D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S21216C23D1Ev,_ZThn92_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S21216C23D0Ev,_ZThn92_N9S21216C23D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn248_N9S21216C23D1Ev,_ZThn128_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn248_N9S21216C23D0Ev,_ZThn128_N9S21216C23D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C23D1Ev,_ZTvn16_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C23D0Ev,_ZTvn16_n32_N9S21216C23D0Ev)();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C23[] = {
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(248,128),
  ABISELECT(176,92),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(208,108),
  ABISELECT(240,124),
  ABISELECT(96,52),
  ABISELECT(200,104),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C23D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  ABISELECT(-80,-44),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev),
  ABISELECT(-176,-92),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-248,-128),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev),
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C23D1Ev,_ZTvn16_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C23D0Ev,_ZTvn16_n32_N9S21216C23D0Ev),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C23[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C24D1Ev();
extern void _ZN9S21216C24D0Ev();
extern void _ZN9S21216C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C24__9S21216C23[] = {
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(248,128),
  ABISELECT(176,92),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(208,108),
  ABISELECT(240,124),
  ABISELECT(96,52),
  ABISELECT(200,104),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(248,128),
  ABISELECT(176,92),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(208,108),
  ABISELECT(240,124),
  ABISELECT(96,52),
  ABISELECT(200,104),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C108S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(208,108),
  ABISELECT(240,124),
  ABISELECT(96,52),
  ABISELECT(200,104),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C108S21216C59S21216C24__A2__9S21216C23[] = {
  ABISELECT(96,52),
  ABISELECT(200,104),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C108S21216C59S21216C24__A2__9S21216C23[] = {
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C108S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C108S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C108S21216C59S21216C24__9S21216C23[] = {
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C108S21216C59S21216C24__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C108S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S21216C5D1Ev,_ZThn92_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S21216C5D0Ev,_ZThn92_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-176,-92),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C59S21216C24__9S21216C23[] = {
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C59S21216C24__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn248_N8S21216C5D1Ev,_ZThn128_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn248_N8S21216C5D0Ev,_ZThn128_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-248,-128),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C59S21216C24__9S21216C23[] = {
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C24D1Ev,_ZThn44_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C24D0Ev,_ZThn44_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C24__9S21216C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn96_N9S21216C24D1Ev,_ZThn52_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn96_N9S21216C24D0Ev,_ZThn52_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C24__9S21216C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn176_N9S21216C24D1Ev,_ZThn92_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn176_N9S21216C24D0Ev,_ZThn92_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C24__9S21216C23[] = {
  ABISELECT(-176,-92),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C24__9S21216C23[] = {
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C24__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C24__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C24__9S21216C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C5__9S21216C24__9S21216C23[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn248_N9S21216C24D1Ev,_ZThn128_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn248_N9S21216C24D0Ev,_ZThn128_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C24__9S21216C23[] = {
  ABISELECT(-248,-128),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C24__9S21216C23[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C24__9S21216C23[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C24__9S21216C23[] = {
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C21D1Ev();
extern void _ZN9S21216C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C23[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C21__9S21216C23[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C119S21216C21__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C119S21216C21__9S21216C23[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C119S21216C21__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C21__9S21216C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C21__9S21216C23[] = {
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C21__9S21216C23[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C21__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C21__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C22D1Ev();
extern void _ZN9S21216C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C23[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C22__9S21216C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C23[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__9S21216C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C6__9S21216C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__9S21216C23[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C23[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C23[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__A1__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__A1__9S21216C23[] = {
  0,
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__A1__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C23[] = {
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C23[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C17__A3__9S21216C23[] = {
  0,
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C23[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C17__A4__9S21216C23[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__9S21216C23[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C17__A1__9S21216C23[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17__9S21216C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17__9S21216C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A2__9S21216C17__9S21216C23[] = {
  0,
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17__9S21216C23[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17__9S21216C23[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
};
static  VTT_ENTRY vtt_S21216C23[] = {
  {&(_ZTV9S21216C23[13]),  13,109},
  {&(_tg__ZTV9S21216C24__9S21216C23[13]),  13,17},
  {&(_tg__ZTV8S21216C59S21216C24__9S21216C23[11]),  11,14},
  {&(_tg__ZTV9S21216C108S21216C59S21216C24__9S21216C23[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C108S21216C59S21216C24__A2__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C108S21216C59S21216C24__A2__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C108S21216C59S21216C24__9S21216C23[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C108S21216C59S21216C24__9S21216C23[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C108S21216C59S21216C24__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C108S21216C59S21216C24__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C108S21216C59S21216C24__9S21216C23[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C108S21216C59S21216C24__9S21216C23[4]),  4,4},
  {&(_tg__ZTV8S21216C6__8S21216C59S21216C24__9S21216C23[6]),  6,9},
  {&(_tg__ZTV8S21216C9__8S21216C59S21216C24__9S21216C23[3]),  3,4},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C59S21216C24__9S21216C23[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C59S21216C24__9S21216C23[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C59S21216C24__9S21216C23[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C59S21216C24__9S21216C23[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C59S21216C24__9S21216C23[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C59S21216C24__9S21216C23[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C59S21216C24__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C59S21216C24__9S21216C23[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C59S21216C24__9S21216C23[2]),  2,3},
  {&(_tg__ZTV9S21216C21__9S21216C24__9S21216C23[11]),  11,14},
  {&(_tg__ZTV9S21216C22__9S21216C24__9S21216C23[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C24__9S21216C23[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C24__9S21216C23[8]),  8,11},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C24__9S21216C23[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C24__9S21216C23[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C24__9S21216C23[7]),  7,9},
  {&(_tg__ZTV9S21216C11__A1__9S21216C24__9S21216C23[7]),  7,8},
  {&(_tg__ZTV9S21216C159S21216C108S21216C5__9S21216C24__9S21216C23[4]),  4,4},
  {&(_tg__ZTV9S21216C17__9S21216C24__9S21216C23[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C24__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C24__9S21216C23[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C24__9S21216C23[2]),  2,3},
  {&(_ZTV9S21216C23[32]),  32,109},
  {&(_ZTV9S21216C23[43]),  43,109},
  {&(_ZTV9S21216C23[52]),  52,109},
  {&(_ZTV9S21216C23[43]),  43,109},
  {&(_ZTV9S21216C23[57]),  57,109},
  {&(_ZTV9S21216C23[63]),  63,109},
  {&(_ZTV9S21216C23[71]),  71,109},
  {&(_ZTV9S21216C23[80]),  80,109},
  {&(_ZTV9S21216C23[21]),  21,109},
  {&(_ZTV9S21216C23[89]),  89,109},
  {&(_ZTV9S21216C23[97]),  97,109},
  {&(_ZTV9S21216C23[103]),  103,109},
  {&(_ZTV9S21216C23[108]),  108,109},
  {&(_tg__ZTV9S21216C21__9S21216C23[10]),  10,13},
  {&(_tg__ZTV9S21216C119S21216C21__9S21216C23[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C119S21216C21__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C119S21216C21__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C119S21216C21__9S21216C23[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__9S21216C23[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C21__9S21216C23[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__9S21216C23[8]),  8,11},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C21__9S21216C23[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C21__9S21216C23[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C21__9S21216C23[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C23[7]),  7,10},
  {&(_tg__ZTV8S21216C6__9S21216C22__9S21216C23[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C23[7]),  7,10},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C23[2]),  2,3},
  {&(_tg__ZTV8S21216C6__9S21216C23[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C23[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C6__9S21216C23[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A1__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C23[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C11__A1__9S21216C23[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__A1__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__A1__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__A1__9S21216C23[7]),  7,9},
  {&(_tg__ZTV9S21216C17__9S21216C23[6]),  6,9},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C17__A3__9S21216C23[3]),  3,4},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C23[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C17__A4__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__9S21216C23[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C17__A1__9S21216C23[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C17__9S21216C23[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C17__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A2__9S21216C17__9S21216C23[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A__9S21216C17__9S21216C23[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C17__9S21216C23[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21216C23[];
extern  VTBL_ENTRY _ZTV9S21216C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C23[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21216C24D0Ev,_ZThn92_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21216C24D1Ev,_ZThn92_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S21216C24D0Ev,_ZThn128_N9S21216C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C24D0Ev,_ZThn52_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S21216C24D1Ev,_ZThn128_N9S21216C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C24D1Ev,_ZThn52_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C24D0Ev,_ZThn44_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C24D1Ev,_ZThn44_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S21216C5D0Ev,_ZThn128_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S21216C5D1Ev,_ZThn128_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21216C5D0Ev,_ZThn92_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21216C5D1Ev,_ZThn92_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21216C23D0Ev,_ZThn92_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21216C23D1Ev,_ZThn92_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S21216C23D0Ev,_ZThn128_N9S21216C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C23D0Ev,_ZThn52_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S21216C23D1Ev,_ZThn128_N9S21216C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C23D1Ev,_ZThn52_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C23D0Ev,_ZThn44_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C23D1Ev,_ZThn44_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C23 = {  "S21216C23", // class name
  bases_S21216C23, 34,
  &(vtc_S21216C23[0]), // expected_vtbl_contents
  &(vtt_S21216C23[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI9S21216C23),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21216C23),109, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C23),89, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C26_nt  {
  void  mf21216c26(); // _ZN12S21216C26_nt10mf21216c26Ev
  virtual  ~S21216C26_nt(); // _ZN12S21216C26_ntD1Ev
  S21216C26_nt(); // tgen
};
//SIG(-1 S21216C26_nt) C1{ vd m}


void  S21216C26_nt ::mf21216c26(){}
 S21216C26_nt ::~S21216C26_nt(){ note_dtor("S21216C26_nt", this);}
S21216C26_nt ::S21216C26_nt(){ note_ctor("S21216C26_nt", this);} // tgen

//skip512 S21216C26_nt

#else // __cplusplus

extern void _ZN12S21216C26_ntC1Ev();
extern void _ZN12S21216C26_ntD1Ev();
Name_Map name_map_S21216C26_nt[] = {
  NSPAIR(_ZN12S21216C26_ntC1Ev),
  NSPAIR(_ZN12S21216C26_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern void _ZN12S21216C26_ntD1Ev();
extern void _ZN12S21216C26_ntD0Ev();
static  VTBL_ENTRY vtc_S21216C26_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S21216C26_nt[0]),
  (VTBL_ENTRY)&_ZN12S21216C26_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S21216C26_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
VTBL_ENTRY *P__ZTI12S21216C26_nt = _ZTI12S21216C26_nt; 
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
Class_Descriptor cd_S21216C26_nt = {  "S21216C26_nt", // class name
  0,0,//no base classes
  &(vtc_S21216C26_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S21216C26_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S21216C26_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  S21216C25  : S21216C26_nt , virtual S3619C5_nt , virtual S21216C15 , S21216C11 {
  ~S21216C25(); // tgen
  S21216C25(); // tgen
};
//SIG(-1 S21216C25) C1{ BC2{ vd m} VBC3{ m} VBC4{ VBC5{ m} VBC6{ m Fp}} BC7{ VBC8{ VBC5 VBC9{ v1} FC9} VBC10{ BC9 BC6 VBC8 v2}}}


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

static void Test_S21216C25()
{
  extern Class_Descriptor cd_S21216C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S21216C25, buf);
    S21216C25 *dp, &lv = *(dp=new (buf) S21216C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21216C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C25)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S21216C25");
    check_base_class_offset(lv, (S3619C5_nt*), 0, "S21216C25");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*), 0, "S21216C25");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C25");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*), ABISELECT(24,12), "S21216C25");
    check_base_class_offset(lv, (S21216C15*), ABISELECT(16,8), "S21216C25");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(8,4), "S21216C25");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(32,16), "S21216C25");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(32,16), "S21216C25");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(48,24), "S21216C25");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(56,28), "S21216C25");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(48,24), "S21216C25");
    check_base_class_offset(lv, (S21216C11*), ABISELECT(8,4), "S21216C25");
    test_class_info(&lv, &cd_S21216C25);
    dp->~S21216C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C25(Test_S21216C25, "S21216C25", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S21216C25C1Ev();
extern void _ZN9S21216C25D1Ev();
Name_Map name_map_S21216C25[] = {
  NSPAIR(_ZN9S21216C25C1Ev),
  NSPAIR(_ZN9S21216C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S3619C5_nt;
extern VTBL_ENTRY _ZTI10S3619C5_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
static Base_Class bases_S21216C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3619C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C15,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(48,24), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S21216C25[];
extern void _ZN9S21216C25D1Ev();
extern void _ZN9S21216C25D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY vtc_S21216C25[] = {
  ABISELECT(48,24),
  ABISELECT(8,4),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN9S21216C25D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C25D0Ev,
  ABISELECT(40,20),
  0,
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern VTBL_ENTRY _ZTV9S21216C25[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C25[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__9S21216C25[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__9S21216C25[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C25[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C25[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__9S21216C25[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C25[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C25[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C25[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C25[] = {
  {&(_ZTV9S21216C25[9]),  9,38},
  {&(_tg__ZTV9S21216C11__9S21216C25[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__9S21216C25[5]),  5,6},
  {&(_tg__ZTV9S21216C11__9S21216C25[7]),  7,8},
  {&(_tg__ZTV9S21216C12__9S21216C11__9S21216C25[7]),  7,9},
  {&(_ZTV9S21216C25[23]),  23,38},
  {&(_ZTV9S21216C25[18]),  18,38},
  {&(_ZTV9S21216C25[28]),  28,38},
  {&(_ZTV9S21216C25[18]),  18,38},
  {&(_ZTV9S21216C25[36]),  36,38},
  {&(_tg__ZTV9S21216C15__9S21216C25[4]),  4,4},
  {&(_tg__ZTV8S21216C7__9S21216C25[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__9S21216C25[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C25[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C25[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C25[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21216C25[];
extern  VTBL_ENTRY _ZTV9S21216C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C25[];
Class_Descriptor cd_S21216C25 = {  "S21216C25", // class name
  bases_S21216C25, 11,
  &(vtc_S21216C25[0]), // expected_vtbl_contents
  &(vtt_S21216C25[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S21216C25),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21216C25),38, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C25),16, //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  S21216C28  {
  ::S19894C18 s21216c28f0;
  void  mf21216c28(); // _ZN9S21216C2810mf21216c28Ev
};
//SIG(-1 S21216C28) C1{ m FC2{ VBC3{ m Fi} Fp}}


void  S21216C28 ::mf21216c28(){}

static void Test_S21216C28()
{
  {
    init_simple_test("S21216C28");
    S21216C28 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21216C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C28)");
    check_field_offset(lv, s21216c28f0, 0, "S21216C28.s21216c28f0");
  }
}
static Arrange_To_Call_Me vS21216C28(Test_S21216C28, "S21216C28", ABISELECT(24,12));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S21216C28[];
VTBL_ENTRY *P__ZTI9S21216C28 = _ZTI9S21216C28; 
Class_Descriptor cd_S21216C28 = {  "S21216C28", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S21216C28),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  S21216C20  : virtual S21216C21 , S21216C23 , virtual S21216C25 , S3619C16 , S21216C28 {
  virtual  ~S21216C20(); // _ZN9S21216C20D2Ev
  S21216C20(); // tgen
};
//SIG(-1 S21216C20) C1{ VBC2{ VBC3{ VBC4{ BC5{ VBC6{ m} VBC7{ v1} FC7} BC6 BC7 vd} VBC8{ m Fp} Fp[9]} BC6 BC9{ VBC5 VBC10{ BC7 BC8 VBC5 v2}} vd Fp} BC11{ BC12{ VBC2 BC13{ m} BC14{ VBC4 BC15{ VBC9 BC5 BC6 BC16{ m} BC17{ VBC6 VBC8} vd} BC13 VBC18{ BC8 BC7 VBC10 BC5 BC4 vd} BC19{ m} vd FC20{ VBC21{ BC22{ v4} BC8 VBC23{ VBC13 VBC22 FC22} v5}} Fl} vd v3} Fi} VBC24{ BC25{ vd m} VBC26{ m} VBC17 BC9} BC19 BC27{ m FC28{ VBC29{ m Fi} Fp}} vd}


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

static void Test_S21216C20()
{
  extern Class_Descriptor cd_S21216C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,46)];
    init_test(&cd_S21216C20, buf);
    S21216C20 *dp, &lv = *(dp=new (buf) S21216C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,180), "sizeof(S21216C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C20)");
    /*is_ambiguous_... S21216C20::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(224,116), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(224,116), "S21216C20");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(224,116), "S21216C20");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(224,116), "S21216C20");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C17*), ABISELECT(224,116), "S21216C20");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(224,116), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C15 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C15*), ABISELECT(224,116), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(120,64), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(120,64), "S21216C20");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(120,64), "S21216C20");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C17*), ABISELECT(120,64), "S21216C20");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(120,64), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(200,104), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(200,104), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(216,112), "S21216C20");
    check_base_class_offset(lv, (S21216C6*)(S21216C22*), ABISELECT(200,104), "S21216C20");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(200,104), "S21216C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C22*), ABISELECT(224,116), "S21216C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(224,116), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*), ABISELECT(224,116), "S21216C20");
    check_base_class_offset(lv, (S21216C22*)(S21216C21*), ABISELECT(120,64), "S21216C20");
    /*is_ambiguous_... S21216C21::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C21*), ABISELECT(104,56), "S21216C20");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*)(S21216C21*), ABISELECT(232,120), "S21216C20");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(232,120), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(232,120), "S21216C20");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*)(S21216C25*), ABISELECT(232,120), "S21216C20");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(248,128), "S21216C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(256,132), "S21216C20");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*)(S21216C21*), ABISELECT(248,128), "S21216C20");
    /*is_ambiguous_... S21216C20::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(248,128), "S21216C20");
    check_base_class_offset(lv, (S21216C12*)(S21216C17*), ABISELECT(248,128), "S21216C20");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*)(S21216C25*), ABISELECT(248,128), "S21216C20");
    check_base_class_offset(lv, (S21216C11*)(S21216C21*), ABISELECT(104,56), "S21216C20");
    check_base_class_offset(lv, (S21216C21*), ABISELECT(104,56), "S21216C20");
    check_base_class_offset(lv, (S21216C21*)(S21216C24*)(S21216C23*), ABISELECT(104,56), "S21216C20");
    /*is_ambiguous_... S21216C24::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S21216C24*)(S21216C23*), ABISELECT(72,36), "S21216C20");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(264,136), "S21216C20");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(16,8), "S21216C20");
    check_base_class_offset(lv, (S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S3619C26*)(S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C17*), ABISELECT(280,144), "S21216C20");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C17*), ABISELECT(272,140), "S21216C20");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C17*), ABISELECT(288,148), "S21216C20");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(304,156), "S21216C20");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C17*), ABISELECT(304,156), "S21216C20");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C17*), ABISELECT(320,164), "S21216C20");
    check_base_class_offset(lv, (S21216C6*)(S21216C17*), ABISELECT(304,156), "S21216C20");
    check_base_class_offset(lv, (S21216C17*)(S21216C5*)(S21216C24*)(S21216C23*), ABISELECT(272,140), "S21216C20");
    check_base_class_offset(lv, (S3619C16*)(S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S21216C5*)(S21216C24*)(S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S21216C24*)(S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S21216C23*), 0, "S21216C20");
    check_base_class_offset(lv, (S21216C26_nt*)(S21216C25*), ABISELECT(328,168), "S21216C20");
    check_base_class_offset(lv, (S3619C5_nt*)(S21216C25*), 0, "S21216C20");
    check_base_class_offset(lv, (S21216C15*)(S21216C25*), ABISELECT(344,176), "S21216C20");
    check_base_class_offset(lv, (S21216C11*)(S21216C25*), ABISELECT(336,172), "S21216C20");
    check_base_class_offset(lv, (S21216C25*), ABISELECT(328,168), "S21216C20");
    /*is_ambiguous_... S21216C20::S3619C16 */ AMB_check_base_class_offset(lv, (S3619C16*), ABISELECT(80,44), "S21216C20");
    check_base_class_offset(lv, (S21216C28*), ABISELECT(80,44), "S21216C20");
    test_class_info(&lv, &cd_S21216C20);
    dp->~S21216C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C20(Test_S21216C20, "S21216C20", ABISELECT(352,180));

#else // __cplusplus

extern void _ZN9S21216C20C1Ev();
extern void _ZN9S21216C20D2Ev();
Name_Map name_map_S21216C20[] = {
  NSPAIR(_ZN9S21216C20C1Ev),
  NSPAIR(_ZN9S21216C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C22;
extern VTBL_ENTRY _ZTI9S21216C22[];
extern  VTBL_ENTRY _ZTV9S21216C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C22[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C21;
extern VTBL_ENTRY _ZTI9S21216C21[];
extern  VTBL_ENTRY _ZTV9S21216C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C21[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C17;
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C5;
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
extern Class_Descriptor cd_S21216C24;
extern VTBL_ENTRY _ZTI9S21216C24[];
extern  VTBL_ENTRY _ZTV9S21216C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C24[];
extern Class_Descriptor cd_S21216C23;
extern VTBL_ENTRY _ZTI9S21216C23[];
extern  VTBL_ENTRY _ZTV9S21216C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C23[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S3619C5_nt;
extern VTBL_ENTRY _ZTI10S3619C5_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C25;
extern VTBL_ENTRY _ZTI9S21216C25[];
extern  VTBL_ENTRY _ZTV9S21216C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C25[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C28;
extern VTBL_ENTRY _ZTI9S21216C28[];
static Base_Class bases_S21216C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(224,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
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    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
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(216,112), //bcp->offset
    58, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(200,104), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(224,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
    7, //immediately_derived
  0, 1},
  {&cd_S21216C22,    ABISELECT(120,64), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(232,120), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(248,128), //bcp->offset
    67, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C21,    ABISELECT(104,56), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21216C11,    ABISELECT(264,136), //bcp->offset
    76, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C15,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21216C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(280,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(288,148), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(304,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(304,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(320,164), //bcp->offset
    109, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(304,156), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C17,    ABISELECT(272,140), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21216C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //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
    34, //immediately_derived
  0, 0},
  {&cd_S21216C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(328,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
    19, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3619C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S21216C15,    ABISELECT(344,176), //bcp->offset
    132, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(336,172), //bcp->offset
    124, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21216C25,    ABISELECT(328,168), //bcp->offset
    112, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C16,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C28,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C20[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C20D1Ev();
extern void _ZN9S21216C20D0Ev();
extern void _ZN9S21216C242v3Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C20D1Ev,_ZTv0_n44_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S21216C20D1Ev,_ZThn56_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C20D0Ev,_ZTv0_n44_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S21216C20D0Ev,_ZThn56_N9S21216C20D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn120_N9S21216C20D1Ev,_ZThn64_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn120_N9S21216C20D0Ev,_ZThn64_N9S21216C20D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C20D1Ev,_ZTv0_n24_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn200_N9S21216C20D1Ev,_ZThn104_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C20D0Ev,_ZTv0_n24_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn200_N9S21216C20D0Ev,_ZThn104_N9S21216C20D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn272_N9S21216C20D1Ev,_ZThn140_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn272_N9S21216C20D0Ev,_ZThn140_N9S21216C20D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C20D1Ev,_ZTvn16_n32_N9S21216C20D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C20D0Ev,_ZTvn16_n32_N9S21216C20D0Ev)();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21216C20D1Ev,_ZTv0_n40_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn328_N9S21216C20D1Ev,_ZThn168_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21216C20D0Ev,_ZTv0_n40_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn328_N9S21216C20D0Ev,_ZThn168_N9S21216C20D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C20[] = {
  ABISELECT(344,176),
  0,
  ABISELECT(328,168),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(272,140),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(264,136),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C20D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  ABISELECT(-104,-56),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C20D1Ev,_ZTv0_n44_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C20D0Ev,_ZTv0_n44_N9S21216C20D0Ev),
  ABISELECT(-120,-64),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev),
  ABISELECT(-200,-104),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C20D1Ev,_ZTv0_n24_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C20D0Ev,_ZTv0_n24_N9S21216C20D0Ev),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-272,-140),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev),
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C20D1Ev,_ZTvn16_n32_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C20D0Ev,_ZTvn16_n32_N9S21216C20D0Ev),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-328,-168),
  ABISELECT(-80,-40),
  ABISELECT(-208,-104),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(-328,-168),
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21216C20D1Ev,_ZTv0_n40_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21216C20D0Ev,_ZTv0_n40_N9S21216C20D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-216,-108),
  ABISELECT(-112,-56),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-344,-176),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
};
extern VTBL_ENTRY _ZTV9S21216C20[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C23D1Ev();
extern void _ZN9S21216C23D0Ev();
extern void _ZN9S21216C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C23__9S21216C20[] = {
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(272,140),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(264,136),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C23D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C24D1Ev();
extern void _ZN9S21216C24D0Ev();
extern void _ZN9S21216C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(272,140),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(264,136),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(272,140),
  ABISELECT(200,104),
  ABISELECT(224,116),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(264,136),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(224,116),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(264,136),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C108S21216C59S21216C249S21216C23__A2__9S21216C20[] = {
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C108S21216C59S21216C249S21216C23__A2__9S21216C20[] = {
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(208,108),
  ABISELECT(208,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn200_N8S21216C5D1Ev,_ZThn104_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn200_N8S21216C5D0Ev,_ZThn104_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-200,-104),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn272_N8S21216C5D1Ev,_ZThn140_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn272_N8S21216C5D0Ev,_ZThn140_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-272,-140),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C59S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn104_N9S21216C24D1Ev,_ZThn56_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn104_N9S21216C24D0Ev,_ZThn56_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn120_N9S21216C24D1Ev,_ZThn64_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn120_N9S21216C24D0Ev,_ZThn64_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-120,-64),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn200_N9S21216C24D1Ev,_ZThn104_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn200_N9S21216C24D0Ev,_ZThn104_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-200,-104),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C249S21216C23__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C5__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn272_N9S21216C24D1Ev,_ZThn140_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn272_N9S21216C24D0Ev,_ZThn140_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-272,-140),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C249S21216C23__9S21216C20[] = {
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn104_N9S21216C23D1Ev,_ZThn56_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn104_N9S21216C23D0Ev,_ZThn56_N9S21216C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C23__9S21216C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn120_N9S21216C23D1Ev,_ZThn64_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn120_N9S21216C23D0Ev,_ZThn64_N9S21216C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C23__9S21216C20[] = {
  ABISELECT(-120,-64),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn200_N9S21216C23D1Ev,_ZThn104_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn200_N9S21216C23D0Ev,_ZThn104_N9S21216C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C23__9S21216C20[] = {
  ABISELECT(-200,-104),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C23__9S21216C20[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C23__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C23__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C23__9S21216C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C59S21216C24__9S21216C23__9S21216C20[] = {
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn272_N9S21216C23D1Ev,_ZThn140_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn272_N9S21216C23D0Ev,_ZThn140_N9S21216C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C23__9S21216C20[] = {
  ABISELECT(-272,-140),
  0,
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C23__9S21216C20[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C23D1Ev,_ZTvn16_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C23D0Ev,_ZTvn16_n32_N9S21216C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C23__9S21216C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C23D1Ev,_ZTvn16_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C23D0Ev,_ZTvn16_n32_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C23__9S21216C20[] = {
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C21D1Ev();
extern void _ZN9S21216C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C20[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C21__9S21216C20[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C119S21216C21__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C119S21216C21__9S21216C20[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C119S21216C21__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C21__9S21216C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C21__9S21216C20[] = {
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C21__9S21216C20[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C21__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C21__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C22D1Ev();
extern void _ZN9S21216C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C20[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C22__9S21216C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C20[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__9S21216C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C6__9S21216C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__9S21216C20[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C20[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C20[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__A1__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__A1__9S21216C20[] = {
  0,
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__A1__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C20[] = {
  ABISELECT(-152,-76),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C20[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C17__A3__9S21216C20[] = {
  0,
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C17__A4__9S21216C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__9S21216C20[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C17__A1__9S21216C20[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A2__9S21216C17__9S21216C20[] = {
  0,
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17__9S21216C20[] = {
  ABISELECT(-168,-84),
  ABISELECT(-64,-32),
  ABISELECT(-168,-84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17__9S21216C20[] = {
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
};
extern void _ZN9S21216C25D1Ev();
extern void _ZN9S21216C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C25__9S21216C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-208,-104),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(-328,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN9S21216C25D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C25D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C25__A2__9S21216C20[] = {
  ABISELECT(-88,-44),
  ABISELECT(-216,-108),
  ABISELECT(-112,-56),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C119S21216C25__A2__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C119S21216C25__A2__9S21216C20[] = {
  0,
  ABISELECT(216,108),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C119S21216C25__A2__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C25__9S21216C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C25__9S21216C20[] = {
  ABISELECT(-88,-44),
  ABISELECT(-216,-108),
  ABISELECT(-112,-56),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C25__9S21216C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C25__9S21216C20[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C25__9S21216C20[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__A1__9S21216C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
static  VTT_ENTRY vtt_S21216C20[] = {
  {&(_ZTV9S21216C20[16]),  16,136},
  {&(_tg__ZTV9S21216C23__9S21216C20[13]),  13,17},
  {&(_tg__ZTV9S21216C249S21216C23__9S21216C20[13]),  13,17},
  {&(_tg__ZTV8S21216C59S21216C249S21216C23__9S21216C20[11]),  11,14},
  {&(_tg__ZTV9S21216C108S21216C59S21216C249S21216C23__9S21216C20[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C108S21216C59S21216C249S21216C23__A2__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C108S21216C59S21216C249S21216C23__A2__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C108S21216C59S21216C249S21216C23__9S21216C20[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C108S21216C59S21216C249S21216C23__9S21216C20[4]),  4,4},
  {&(_tg__ZTV8S21216C6__8S21216C59S21216C249S21216C23__9S21216C20[6]),  6,9},
  {&(_tg__ZTV8S21216C9__8S21216C59S21216C249S21216C23__9S21216C20[3]),  3,4},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C59S21216C249S21216C23__9S21216C20[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C59S21216C249S21216C23__9S21216C20[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C59S21216C249S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C59S21216C249S21216C23__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C59S21216C249S21216C23__9S21216C20[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C59S21216C249S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C59S21216C249S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C59S21216C249S21216C23__9S21216C20[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C59S21216C249S21216C23__9S21216C20[2]),  2,3},
  {&(_tg__ZTV9S21216C21__9S21216C249S21216C23__9S21216C20[11]),  11,14},
  {&(_tg__ZTV9S21216C22__9S21216C249S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C249S21216C23__9S21216C20[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C249S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C249S21216C23__9S21216C20[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C249S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C249S21216C23__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C11__A1__9S21216C249S21216C23__9S21216C20[7]),  7,8},
  {&(_tg__ZTV9S21216C159S21216C108S21216C5__9S21216C249S21216C23__9S21216C20[4]),  4,4},
  {&(_tg__ZTV9S21216C17__9S21216C249S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C249S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C249S21216C23__9S21216C20[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C249S21216C23__9S21216C20[2]),  2,3},
  {&(_tg__ZTV9S21216C21__9S21216C23__9S21216C20[11]),  11,14},
  {&(_tg__ZTV9S21216C22__9S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C23__9S21216C20[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C23__9S21216C20[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C23__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C11__A1__9S21216C23__9S21216C20[7]),  7,8},
  {&(_tg__ZTV9S21216C159S21216C108S21216C59S21216C24__9S21216C23__9S21216C20[4]),  4,4},
  {&(_tg__ZTV9S21216C17__9S21216C23__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C23__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C23__9S21216C20[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C23__9S21216C20[2]),  2,3},
  {&(_ZTV9S21216C20[35]),  35,136},
  {&(_ZTV9S21216C20[46]),  46,136},
  {&(_ZTV9S21216C20[55]),  55,136},
  {&(_ZTV9S21216C20[46]),  46,136},
  {&(_ZTV9S21216C20[60]),  60,136},
  {&(_ZTV9S21216C20[66]),  66,136},
  {&(_ZTV9S21216C20[74]),  74,136},
  {&(_ZTV9S21216C20[83]),  83,136},
  {&(_ZTV9S21216C20[24]),  24,136},
  {&(_ZTV9S21216C20[92]),  92,136},
  {&(_ZTV9S21216C20[100]),  100,136},
  {&(_ZTV9S21216C20[106]),  106,136},
  {&(_ZTV9S21216C20[111]),  111,136},
  {&(_ZTV9S21216C20[122]),  122,136},
  {&(_ZTV9S21216C20[136]),  136,136},
  {&(_ZTV9S21216C20[131]),  131,136},
  {&(_tg__ZTV9S21216C21__9S21216C20[10]),  10,13},
  {&(_tg__ZTV9S21216C119S21216C21__9S21216C20[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C119S21216C21__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C119S21216C21__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C119S21216C21__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C21__9S21216C20[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__9S21216C20[8]),  8,11},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C21__9S21216C20[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C21__9S21216C20[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C21__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C20[7]),  7,10},
  {&(_tg__ZTV8S21216C6__9S21216C22__9S21216C20[6]),  6,9},
  {&(_tg__ZTV9S21216C22__9S21216C20[7]),  7,10},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C22__9S21216C20[2]),  2,3},
  {&(_tg__ZTV8S21216C6__9S21216C20[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C6__9S21216C20[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C6__9S21216C20[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A1__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C20[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C11__A1__9S21216C20[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__A1__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__A1__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__A1__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C17__9S21216C20[6]),  6,9},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C17__A3__9S21216C20[3]),  3,4},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C20[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C17__A4__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__9S21216C20[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C17__A1__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C17__9S21216C20[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C17__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A2__9S21216C17__9S21216C20[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A__9S21216C17__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C17__9S21216C20[5]),  5,8},
  {&(_tg__ZTV9S21216C25__9S21216C20[9]),  9,11},
  {&(_tg__ZTV9S21216C119S21216C25__A2__9S21216C20[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C119S21216C25__A2__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C119S21216C25__A2__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C119S21216C25__A2__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C25__9S21216C20[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C25__9S21216C20[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C25__9S21216C20[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C25__9S21216C20[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C25__9S21216C20[7]),  7,9},
  {&(_tg__ZTV9S21216C15__A1__9S21216C20[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21216C20[];
extern  VTBL_ENTRY _ZTV9S21216C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C20[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D0Ev,_ZThn40_N9S21216C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21216C22D1Ev,_ZThn40_N9S21216C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D0Ev,_ZThn48_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21216C21D1Ev,_ZThn48_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C23D0Ev,_ZThn104_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C23D1Ev,_ZThn104_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21216C23D0Ev,_ZThn140_N9S21216C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C23D0Ev,_ZThn64_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21216C23D1Ev,_ZThn140_N9S21216C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C23D1Ev,_ZThn64_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C23D0Ev,_ZThn56_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C23D1Ev,_ZThn56_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C24D0Ev,_ZThn104_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C24D1Ev,_ZThn104_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21216C24D0Ev,_ZThn140_N9S21216C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C24D0Ev,_ZThn64_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21216C24D1Ev,_ZThn140_N9S21216C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C24D1Ev,_ZThn64_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C24D0Ev,_ZThn56_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C24D1Ev,_ZThn56_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21216C5D0Ev,_ZThn140_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21216C5D1Ev,_ZThn140_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21216C5D0Ev,_ZThn104_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21216C5D1Ev,_ZThn104_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21216C20D0Ev,_ZTv0_n40_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21216C20D0Ev,_ZThn168_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21216C20D1Ev,_ZTv0_n40_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21216C20D1Ev,_ZThn168_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C20D0Ev,_ZTv0_n24_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C20D0Ev,_ZThn104_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21216C20D1Ev,_ZTv0_n24_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C20D1Ev,_ZThn104_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21216C20D0Ev,_ZThn140_N9S21216C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C20D0Ev,_ZThn64_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21216C20D1Ev,_ZThn140_N9S21216C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C20D1Ev,_ZThn64_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C20D0Ev,_ZTv0_n44_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C20D0Ev,_ZThn56_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C20D1Ev,_ZTv0_n44_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C20D1Ev,_ZThn56_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C20 = {  "S21216C20", // class name
  bases_S21216C20, 42,
  &(vtc_S21216C20[0]), // expected_vtbl_contents
  &(vtt_S21216C20[0]), // expected_vtt_contents
  ABISELECT(352,180), // object size
  NSPAIRA(_ZTI9S21216C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21216C20),136, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C20),117, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21216C30  : S21216C7 , virtual S19894C6_nt , S21216C12 {
  int s21216c30f0;
  ~S21216C30(); // tgen
  S21216C30(); // tgen
};
//SIG(-1 S21216C30) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S21216C30()
{
  extern Class_Descriptor cd_S21216C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S21216C30, buf);
    S21216C30 *dp, &lv = *(dp=new (buf) S21216C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21216C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C30)");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C30");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), 0, "S21216C30");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), 0, "S21216C30");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), 0, "S21216C30");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*), 0, "S21216C30");
    /*is_ambiguous_... S21216C30::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S21216C30");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(16,8), "S21216C30");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(24,12), "S21216C30");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(48,24), "S21216C30");
    check_base_class_offset(lv, (S21216C12*), ABISELECT(16,8), "S21216C30");
    check_field_offset(lv, s21216c30f0, ABISELECT(32,16), "S21216C30.s21216c30f0");
    test_class_info(&lv, &cd_S21216C30);
    dp->~S21216C30();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C30(Test_S21216C30, "S21216C30", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S21216C30C1Ev();
extern void _ZN9S21216C30D1Ev();
Name_Map name_map_S21216C30[] = {
  NSPAIR(_ZN9S21216C30C1Ev),
  NSPAIR(_ZN9S21216C30D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
static Base_Class bases_S21216C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21216C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C9,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21216C12,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C30[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C30[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C30[];
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C30[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C30[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__9S21216C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__9S21216C30[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__9S21216C30[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C30[] = {
  {&(_ZTV9S21216C30[7]),  7,21},
  {&(_tg__ZTV8S21216C7__A__9S21216C30[5]),  5,6},
  {&(_tg__ZTV8S21216C7__A__9S21216C30[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C30[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__9S21216C30[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__9S21216C30[3]),  3,4},
  {&(_ZTV9S21216C30[7]),  7,21},
  {&(_ZTV9S21216C30[13]),  13,21},
  {&(_ZTV9S21216C30[20]),  20,21},
  {&(_tg__ZTV8S21216C7__A1__9S21216C30[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__9S21216C30[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21216C30[];
extern  VTBL_ENTRY _ZTV9S21216C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C30[];
Class_Descriptor cd_S21216C30 = {  "S21216C30", // class name
  bases_S21216C30, 8,
  &(vtc_S21216C30[0]), // expected_vtbl_contents
  &(vtt_S21216C30[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S21216C30),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21216C30),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C30),11, //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  S21216C31  : S21216C6 {
  ~S21216C31(); // tgen
  S21216C31(); // tgen
};
//SIG(-1 S21216C31) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S21216C31()
{
  extern Class_Descriptor cd_S21216C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21216C31, buf);
    S21216C31 *dp, &lv = *(dp=new (buf) S21216C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21216C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C31)");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(24,12), "S21216C31");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), 0, "S21216C31");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*), 0, "S21216C31");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), 0, "S21216C31");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(16,8), "S21216C31");
    check_base_class_offset(lv, (S21216C6*), 0, "S21216C31");
    test_class_info(&lv, &cd_S21216C31);
    dp->~S21216C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C31(Test_S21216C31, "S21216C31", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S21216C31C1Ev();
extern void _ZN9S21216C31D1Ev();
Name_Map name_map_S21216C31[] = {
  NSPAIR(_ZN9S21216C31C1Ev),
  NSPAIR(_ZN9S21216C31D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
static Base_Class bases_S21216C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C9,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21216C31[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C31D1Ev();
extern void _ZN9S21216C31D0Ev();
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C31[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C31[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C31D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C31D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C31[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S21216C31[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C31[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__9S21216C31[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTT_ENTRY vtt_S21216C31[] = {
  {&(_ZTV9S21216C31[5]),  5,11},
  {&(_tg__ZTV8S21216C6__9S21216C31[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C31[5]),  5,6},
  {&(_tg__ZTV8S21216C78S21216C6__9S21216C31[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C31[5]),  5,8},
  {&(_ZTV9S21216C31[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S21216C31[];
extern  VTBL_ENTRY _ZTV9S21216C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C31[];
Class_Descriptor cd_S21216C31 = {  "S21216C31", // class name
  bases_S21216C31, 6,
  &(vtc_S21216C31[0]), // expected_vtbl_contents
  &(vtt_S21216C31[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S21216C31),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21216C31),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21216C31),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  S21216C1  : virtual S19894C30_nt , S21216C3 , virtual S21216C20 , S21216C30 , S21216C31 {
  short s21216c1f0;
  ~S21216C1(); // tgen
  S21216C1(); // tgen
};
//SIG(1 S21216C1) C1{ VBC2{ vd m} BC3{ VBC4{ m Fi} BC5{ VBC6{ BC7{ VBC8{ m} VBC9{ v1} FC9} BC8 BC9 vd} BC10{ VBC11{ VBC7 VBC12{ BC9 BC13{ m Fp} VBC7 v2}} BC7 BC8 BC14{ m} BC15{ VBC8 VBC13} vd} BC16{ m} VBC17{ BC13 BC9 VBC12 BC7 BC6 vd} BC18{ m} vd FC19{ VBC20{ BC21{ v4} BC13 VBC22{ VBC16 VBC21 FC21} v5}} Fl}} VBC23{ VBC24{ VBC25{ VBC6 VBC13 Fp[9]} BC8 BC11 vd Fp} BC26{ BC27{ VBC24 BC16 BC5 vd v3} Fi} VBC28{ BC29{ vd m} VBC30{ m} VBC15 BC11} BC18 BC31{ m FC32{ VBC4 Fp}} vd} BC33{ BC7 VBC13 BC12 Fi} BC34{ BC6} Fs}


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

static void Test_S21216C1()
{
  extern Class_Descriptor cd_S21216C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(65,66)];
    init_test(&cd_S21216C1, buf);
    S21216C1 *dp, &lv = *(dp=new (buf) S21216C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,260), "sizeof(S21216C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21216C1)");
    check_base_class_offset(lv, (S19894C30_nt*), ABISELECT(144,72), "S21216C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S21216C3*), ABISELECT(152,76), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C3*), ABISELECT(184,92), "S21216C1");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C3*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C17*), ABISELECT(184,92), "S21216C1");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(184,92), "S21216C1");
    check_base_class_offset(lv, (S19894C34*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C15 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C15*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C30*), ABISELECT(184,92), "S21216C1");
    check_base_class_offset(lv, (S19894C34*)(S21216C7*)(S21216C6*)(S21216C31*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C3*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C17*), ABISELECT(160,80), "S21216C1");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C30*), ABISELECT(160,80), "S21216C1");
    check_base_class_offset(lv, (S21216C9*)(S21216C7*)(S21216C6*)(S21216C31*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C6*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*), ABISELECT(176,88), "S21216C1");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*)(S21216C5*)(S21216C3*), ABISELECT(160,80), "S21216C1");
    check_base_class_offset(lv, (S21216C6*)(S21216C22*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C5::S21216C6 */ AMB_check_base_class_offset(lv, (S21216C6*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(160,80), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C11*), ABISELECT(192,96), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C12 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C12*), ABISELECT(192,96), "S21216C1");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*)(S21216C21*), ABISELECT(192,96), "S21216C1");
    check_base_class_offset(lv, (S21216C7*)(S21216C11*)(S21216C25*), ABISELECT(192,96), "S21216C1");
    check_base_class_offset(lv, (S21216C7*)(S21216C12*)(S21216C30*), ABISELECT(192,96), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C12 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*), ABISELECT(208,104), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C12 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*), ABISELECT(216,108), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C11 */ AMB_check_base_class_offset(lv, (S21216C12*)(S21216C11*), ABISELECT(208,104), "S21216C1");
    check_base_class_offset(lv, (S21216C12*)(S21216C17*), ABISELECT(208,104), "S21216C1");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*)(S21216C21*), ABISELECT(208,104), "S21216C1");
    check_base_class_offset(lv, (S21216C12*)(S21216C11*)(S21216C25*), ABISELECT(208,104), "S21216C1");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*)(S21216C5*)(S21216C3*), ABISELECT(184,92), "S21216C1");
    check_base_class_offset(lv, (S21216C11*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(184,92), "S21216C1");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*)(S21216C5*)(S21216C3*), 0, "S21216C1");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*)(S21216C5*)(S21216C3*), 0, "S21216C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*)(S21216C5*)(S21216C3*), 0, "S21216C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C3*), ABISELECT(224,112), "S21216C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C22*), ABISELECT(224,112), "S21216C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(224,112), "S21216C1");
    /*is_ambiguous_... S21216C1::S21216C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C15*), ABISELECT(224,112), "S21216C1");
    /*is_ambiguous_... S21216C30::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C30*), ABISELECT(224,112), "S21216C1");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*)(S21216C5*)(S21216C3*), ABISELECT(16,8), "S21216C1");
    check_base_class_offset(lv, (S21216C10*)(S21216C5*)(S21216C3*), 0, "S21216C1");
    check_base_class_offset(lv, (S3619C26*)(S21216C5*)(S21216C3*), 0, "S21216C1");
    /*is_ambiguous_... S21216C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S21216C17*), ABISELECT(240,120), "S21216C1");
    /*is_ambiguous_... S21216C17::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C17*), ABISELECT(232,116), "S21216C1");
    /*is_ambiguous_... S21216C17::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C17*), ABISELECT(248,124), "S21216C1");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C17*), ABISELECT(264,132), "S21216C1");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C17*), ABISELECT(264,132), "S21216C1");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C17*), ABISELECT(280,140), "S21216C1");
    check_base_class_offset(lv, (S21216C6*)(S21216C17*), ABISELECT(264,132), "S21216C1");
    check_base_class_offset(lv, (S21216C17*)(S21216C5*)(S21216C3*), ABISELECT(232,116), "S21216C1");
    check_base_class_offset(lv, (S21216C17*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(232,116), "S21216C1");
    check_base_class_offset(lv, (S3619C16*)(S21216C5*)(S21216C3*), 0, "S21216C1");
    check_base_class_offset(lv, (S21216C5*)(S21216C3*), 0, "S21216C1");
    check_base_class_offset(lv, (S21216C3*), 0, "S21216C1");
    check_base_class_offset(lv, (S21216C22*)(S21216C21*), ABISELECT(408,208), "S21216C1");
    /*is_ambiguous_... S21216C21::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C21*), ABISELECT(392,200), "S21216C1");
    check_base_class_offset(lv, (S21216C11*)(S21216C21*), ABISELECT(392,200), "S21216C1");
    check_base_class_offset(lv, (S21216C21*)(S21216C20*), ABISELECT(392,200), "S21216C1");
    check_base_class_offset(lv, (S21216C21*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(392,200), "S21216C1");
    /*is_ambiguous_... S21216C24::S3619C26 */ AMB_check_base_class_offset(lv, (S3619C26*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(360,180), "S21216C1");
    /*is_ambiguous_... S21216C10::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    /*is_ambiguous_... S21216C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S21216C15*)(S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(304,152), "S21216C1");
    check_base_class_offset(lv, (S21216C10*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S3619C26*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S3619C16*)(S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S21216C5*)(S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S21216C24*)(S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S21216C23*)(S21216C20*), ABISELECT(288,144), "S21216C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S21216C25*), ABISELECT(488,248), "S21216C1");
    check_base_class_offset(lv, (S3619C5_nt*)(S21216C25*), 0, "S21216C1");
    check_base_class_offset(lv, (S21216C15*)(S21216C25*), ABISELECT(504,256), "S21216C1");
    check_base_class_offset(lv, (S21216C11*)(S21216C25*), ABISELECT(496,252), "S21216C1");
    check_base_class_offset(lv, (S21216C25*)(S21216C20*), ABISELECT(488,248), "S21216C1");
    /*is_ambiguous_... S21216C20::S3619C16 */ AMB_check_base_class_offset(lv, (S3619C16*)(S21216C20*), ABISELECT(368,188), "S21216C1");
    check_base_class_offset(lv, (S21216C28*)(S21216C20*), ABISELECT(368,188), "S21216C1");
    check_base_class_offset(lv, (S21216C20*), ABISELECT(288,144), "S21216C1");
    /*is_ambiguous_... S21216C30::S21216C7 */ AMB_check_base_class_offset(lv, (S21216C7*)(S21216C30*), ABISELECT(72,36), "S21216C1");
    /*is_ambiguous_... S21216C12::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C12*)(S21216C30*), ABISELECT(88,44), "S21216C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S21216C12*)(S21216C30*), ABISELECT(96,48), "S21216C1");
    check_base_class_offset(lv, (S21216C12*)(S21216C30*), ABISELECT(88,44), "S21216C1");
    check_base_class_offset(lv, (S21216C30*), ABISELECT(72,36), "S21216C1");
    check_base_class_offset(lv, (S21216C7*)(S21216C6*)(S21216C31*), ABISELECT(112,56), "S21216C1");
    /*is_ambiguous_... S21216C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S21216C6*)(S21216C31*), ABISELECT(112,56), "S21216C1");
    /*is_ambiguous_... S21216C6::S21216C9 */ AMB_check_base_class_offset(lv, (S21216C9*)(S21216C6*)(S21216C31*), ABISELECT(128,64), "S21216C1");
    check_base_class_offset(lv, (S21216C6*)(S21216C31*), ABISELECT(112,56), "S21216C1");
    check_base_class_offset(lv, (S21216C31*), ABISELECT(112,56), "S21216C1");
    check_field_offset(lv, s21216c1f0, ABISELECT(136,68), "S21216C1.s21216c1f0");
    test_class_info(&lv, &cd_S21216C1);
    dp->~S21216C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21216C1(Test_S21216C1, "S21216C1", ABISELECT(512,260));

#else // __cplusplus

extern void _ZN8S21216C1C1Ev();
extern void _ZN8S21216C1D1Ev();
Name_Map name_map_S21216C1[] = {
  NSPAIR(_ZN8S21216C1C1Ev),
  NSPAIR(_ZN8S21216C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C17;
extern VTBL_ENTRY _ZTI9S21216C17[];
extern  VTBL_ENTRY _ZTV9S21216C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C17[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C5;
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
extern Class_Descriptor cd_S21216C3;
extern VTBL_ENTRY _ZTI8S21216C3[];
extern  VTBL_ENTRY _ZTV8S21216C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C3[];
extern Class_Descriptor cd_S21216C22;
extern VTBL_ENTRY _ZTI9S21216C22[];
extern  VTBL_ENTRY _ZTV9S21216C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C22[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C21;
extern VTBL_ENTRY _ZTI9S21216C21[];
extern  VTBL_ENTRY _ZTV9S21216C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C21[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C10;
extern VTBL_ENTRY _ZTI9S21216C10[];
extern  VTBL_ENTRY _ZTV9S21216C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C10[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C5;
extern VTBL_ENTRY _ZTI8S21216C5[];
extern  VTBL_ENTRY _ZTV8S21216C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C5[];
extern Class_Descriptor cd_S21216C24;
extern VTBL_ENTRY _ZTI9S21216C24[];
extern  VTBL_ENTRY _ZTV9S21216C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C24[];
extern Class_Descriptor cd_S21216C23;
extern VTBL_ENTRY _ZTI9S21216C23[];
extern  VTBL_ENTRY _ZTV9S21216C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C23[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S3619C5_nt;
extern VTBL_ENTRY _ZTI10S3619C5_nt[];
extern Class_Descriptor cd_S21216C15;
extern VTBL_ENTRY _ZTI9S21216C15[];
extern  VTBL_ENTRY _ZTV9S21216C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C15[];
extern Class_Descriptor cd_S21216C11;
extern VTBL_ENTRY _ZTI9S21216C11[];
extern  VTBL_ENTRY _ZTV9S21216C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C11[];
extern Class_Descriptor cd_S21216C25;
extern VTBL_ENTRY _ZTI9S21216C25[];
extern  VTBL_ENTRY _ZTV9S21216C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C25[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S21216C28;
extern VTBL_ENTRY _ZTI9S21216C28[];
extern Class_Descriptor cd_S21216C20;
extern VTBL_ENTRY _ZTI9S21216C20[];
extern  VTBL_ENTRY _ZTV9S21216C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C20[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S21216C12;
extern VTBL_ENTRY _ZTI9S21216C12[];
extern  VTBL_ENTRY _ZTV9S21216C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C12[];
extern Class_Descriptor cd_S21216C30;
extern VTBL_ENTRY _ZTI9S21216C30[];
extern  VTBL_ENTRY _ZTV9S21216C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C30[];
extern Class_Descriptor cd_S21216C7;
extern VTBL_ENTRY _ZTI8S21216C7[];
extern  VTBL_ENTRY _ZTV8S21216C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C9;
extern VTBL_ENTRY _ZTI8S21216C9[];
extern  VTBL_ENTRY _ZTV8S21216C9[];
extern Class_Descriptor cd_S21216C6;
extern VTBL_ENTRY _ZTI8S21216C6[];
extern  VTBL_ENTRY _ZTV8S21216C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C6[];
extern Class_Descriptor cd_S21216C31;
extern VTBL_ENTRY _ZTI9S21216C31[];
extern  VTBL_ENTRY _ZTV9S21216C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21216C31[];
static Base_Class bases_S21216C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C30_nt,    ABISELECT(144,72), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3223C8_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(176,88), //bcp->offset
    66, //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(160,80), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S21216C7,    ABISELECT(192,96), //bcp->offset
    77, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21216C9,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(216,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(208,104), //bcp->offset
    83, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(184,92), //bcp->offset
    69, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21216C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(224,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
    17, //immediately_derived
  0, 1},
  {&cd_S21216C15,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21216C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(240,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
    27, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(248,124), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(264,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(264,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(280,140), //bcp->offset
    117, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(264,132), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21216C17,    ABISELECT(232,116), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C22,    ABISELECT(408,208), //bcp->offset
    160, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(392,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21216C11,    ABISELECT(392,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21216C21,    ABISELECT(392,200), //bcp->offset
    146, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(360,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S21216C7,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S21216C15,    ABISELECT(304,152), //bcp->offset
    142, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S21216C10,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S21216C5,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S21216C24,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S21216C23,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(488,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
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3619C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S21216C15,    ABISELECT(504,256), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S21216C11,    ABISELECT(496,252), //bcp->offset
    183, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S21216C25,    ABISELECT(488,248), //bcp->offset
    171, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S3619C16,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21216C28,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21216C20,    ABISELECT(288,144), //bcp->offset
    120, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C7,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21216C12,    ABISELECT(88,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S21216C30,    ABISELECT(72,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C7,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S21216C9,    ABISELECT(128,64), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S21216C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S21216C31,    ABISELECT(112,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21216C1[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C1D1Ev();
extern void _ZN8S21216C1D0Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn112_N8S21216C1D1Ev,_ZThn56_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21216C1D0Ev,_ZThn56_N8S21216C1D0Ev)();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S21216C1D1Ev,_ZTv0_n12_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21216C1D1Ev,_ZThn72_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21216C1D0Ev,_ZTv0_n12_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21216C1D0Ev,_ZThn72_N8S21216C1D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C1D1Ev,_ZTv0_n24_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S21216C1D1Ev,_ZThn80_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C1D0Ev,_ZTv0_n24_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S21216C1D0Ev,_ZThn80_N8S21216C1D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C1D1Ev,_ZTv0_n32_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn232_N8S21216C1D1Ev,_ZThn116_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C1D0Ev,_ZTv0_n32_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn232_N8S21216C1D0Ev,_ZThn116_N8S21216C1D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C1D1Ev,_ZTvn16_n32_N8S21216C1D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C1D0Ev,_ZTvn16_n32_N8S21216C1D0Ev)();
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n136_N8S21216C1D1Ev,_ZTv0_n68_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S21216C1D1Ev,_ZThn144_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S21216C1D0Ev,_ZTv0_n68_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S21216C1D0Ev,_ZThn144_N8S21216C1D0Ev)() __attribute__((weak));
extern void _ZN9S21216C242v3Ev();
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21216C1D1Ev,_ZTv0_n44_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn392_N8S21216C1D1Ev,_ZThn200_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21216C1D0Ev,_ZTv0_n44_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn392_N8S21216C1D0Ev,_ZThn200_N8S21216C1D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C1D1Ev,_ZTv0_n32_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn408_N8S21216C1D1Ev,_ZThn208_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C1D0Ev,_ZTv0_n32_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn408_N8S21216C1D0Ev,_ZThn208_N8S21216C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21216C1D1Ev,_ZTv0_n40_N8S21216C1D1Ev)();
extern void ABISELECT(_ZThn488_N8S21216C1D1Ev,_ZThn248_N8S21216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21216C1D0Ev,_ZTv0_n40_N8S21216C1D0Ev)();
extern void ABISELECT(_ZThn488_N8S21216C1D0Ev,_ZThn248_N8S21216C1D0Ev)() __attribute__((weak));
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY vtc_S21216C1[] = {
  ABISELECT(504,256),
  0,
  ABISELECT(488,248),
  ABISELECT(408,208),
  ABISELECT(392,200),
  ABISELECT(288,144),
  ABISELECT(144,72),
  ABISELECT(152,76),
  ABISELECT(232,116),
  ABISELECT(160,80),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(192,96),
  ABISELECT(184,92),
  ABISELECT(160,80),
  ABISELECT(184,92),
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C1D0Ev,
  ABISELECT(208,104),
  ABISELECT(168,84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  ABISELECT(120,60),
  ABISELECT(152,76),
  ABISELECT(88,44),
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(104,52),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(48,24),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S21216C1D1Ev,_ZThn56_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S21216C1D0Ev,_ZThn56_N8S21216C1D0Ev),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21216C1D1Ev,_ZTv0_n12_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21216C1D0Ev,_ZTv0_n12_N8S21216C1D0Ev),
  ABISELECT(-160,-80),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C1D1Ev,_ZTv0_n24_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C1D0Ev,_ZTv0_n24_N8S21216C1D0Ev),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
  ABISELECT(-232,-116),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C1D1Ev,_ZTv0_n32_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C1D0Ev,_ZTv0_n32_N8S21216C1D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C1D1Ev,_ZTvn16_n32_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C1D0Ev,_ZTvn16_n32_N8S21216C1D0Ev),
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  0,
  ABISELECT(-288,-144),
  ABISELECT(216,112),
  ABISELECT(-288,-144),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21216C1D1Ev,_ZTv0_n68_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21216C1D0Ev,_ZTv0_n68_N8S21216C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  ABISELECT(-304,-152),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  ABISELECT(-392,-200),
  ABISELECT(-168,-88),
  ABISELECT(-232,-120),
  ABISELECT(16,8),
  ABISELECT(-184,-96),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  ABISELECT(-392,-200),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21216C1D1Ev,_ZTv0_n44_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21216C1D0Ev,_ZTv0_n44_N8S21216C1D0Ev),
  ABISELECT(-408,-208),
  ABISELECT(-184,-96),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-408,-208),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C1D1Ev,_ZTv0_n32_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C1D0Ev,_ZTv0_n32_N8S21216C1D0Ev),
  ABISELECT(-488,-248),
  ABISELECT(-280,-144),
  ABISELECT(-328,-168),
  ABISELECT(-296,-152),
  ABISELECT(-264,-136),
  ABISELECT(-304,-156),
  ABISELECT(16,8),
  ABISELECT(-488,-248),
  ABISELECT(-488,-248),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21216C1D1Ev,_ZTv0_n40_N8S21216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21216C1D0Ev,_ZTv0_n40_N8S21216C1D0Ev),
  ABISELECT(-288,-148),
  ABISELECT(-336,-172),
  ABISELECT(-312,-160),
  ABISELECT(-304,-156),
  ABISELECT(-336,-172),
  ABISELECT(-496,-252),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  ABISELECT(-280,-144),
  ABISELECT(-320,-164),
  ABISELECT(-504,-256),
  (VTBL_ENTRY)&(_ZTI8S21216C1[0]),
};
extern VTBL_ENTRY _ZTV8S21216C1[];
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C3D1Ev();
extern void _ZN8S21216C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C3__8S21216C1[] = {
  ABISELECT(152,76),
  ABISELECT(232,116),
  ABISELECT(160,80),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(192,96),
  ABISELECT(184,92),
  ABISELECT(160,80),
  ABISELECT(184,92),
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C3D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(232,116),
  ABISELECT(160,80),
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(192,96),
  ABISELECT(184,92),
  ABISELECT(160,80),
  ABISELECT(184,92),
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C108S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(224,112),
  ABISELECT(208,104),
  ABISELECT(192,96),
  ABISELECT(184,92),
  ABISELECT(160,80),
  ABISELECT(184,92),
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C108S21216C58S21216C3__A2__8S21216C1[] = {
  ABISELECT(160,80),
  ABISELECT(184,92),
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C108S21216C58S21216C3__A2__8S21216C1[] = {
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(208,104),
  ABISELECT(168,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C108S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C108S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C108S21216C58S21216C3__8S21216C1[] = {
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C108S21216C58S21216C3__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C108S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(208,104),
  ABISELECT(168,84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S21216C5D1Ev,_ZThn80_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S21216C5D0Ev,_ZThn80_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-160,-80),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C58S21216C3__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(208,104),
  ABISELECT(168,84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZThn232_N8S21216C5D1Ev,_ZThn116_N8S21216C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
extern void ABISELECT(_ZThn232_N8S21216C5D0Ev,_ZThn116_N8S21216C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-232,-116),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C58S21216C3__8S21216C1[] = {
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C3D1Ev,_ZTv0_n24_N8S21216C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S21216C3D1Ev,_ZThn80_N8S21216C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21216C3D0Ev,_ZTv0_n24_N8S21216C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S21216C3D0Ev,_ZThn80_N8S21216C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C3__8S21216C1[] = {
  ABISELECT(-160,-80),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C3D1Ev,_ZTv0_n24_N8S21216C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C3D0Ev,_ZTv0_n24_N8S21216C3D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C3__8S21216C1[] = {
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C3__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C3__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C3__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C5__8S21216C3__8S21216C1[] = {
  ABISELECT(208,104),
  ABISELECT(168,84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C3D1Ev,_ZTv0_n32_N8S21216C3D1Ev)();
extern void ABISELECT(_ZThn232_N8S21216C3D1Ev,_ZThn116_N8S21216C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21216C3D0Ev,_ZTv0_n32_N8S21216C3D0Ev)();
extern void ABISELECT(_ZThn232_N8S21216C3D0Ev,_ZThn116_N8S21216C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C3__8S21216C1[] = {
  ABISELECT(-232,-116),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C3D1Ev,_ZTv0_n32_N8S21216C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C3D0Ev,_ZTv0_n32_N8S21216C3D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C3__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C3D1Ev,_ZTvn16_n32_N8S21216C3D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C3D0Ev,_ZTvn16_n32_N8S21216C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C3__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C3D1Ev,_ZTvn16_n32_N8S21216C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C3D0Ev,_ZTvn16_n32_N8S21216C3D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C3__8S21216C1[] = {
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI8S21216C3[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C30__8S21216C1[] = {
  ABISELECT(120,60),
  ABISELECT(152,76),
  ABISELECT(88,44),
  ABISELECT(112,56),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C30__A6__8S21216C1[] = {
  ABISELECT(88,44),
  ABISELECT(112,56),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C30__A6__8S21216C1[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C129S21216C30__A1__8S21216C1[] = {
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C129S21216C30__A1__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C129S21216C30__A1__8S21216C1[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C30__8S21216C1[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C30__8S21216C1[] = {
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C30__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S21216C30[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C31D1Ev();
extern void _ZN9S21216C31D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C31__8S21216C1[] = {
  ABISELECT(48,24),
  ABISELECT(72,36),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C31[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C31D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C31D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C31__A2__8S21216C1[] = {
  ABISELECT(48,24),
  ABISELECT(72,36),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C31__A7__8S21216C1[] = {
  ABISELECT(48,24),
  ABISELECT(72,36),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C31__A7__8S21216C1[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C31__A2__8S21216C1[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C31__8S21216C1[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21216C31[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C1[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C6__8S21216C1[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C11__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C11__8S21216C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C11__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C7__A1__8S21216C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C12__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A1__9S21216C12__8S21216C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21216C12[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C17D1Ev();
extern void _ZN9S21216C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C17D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C17__A3__8S21216C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C6D1Ev();
extern void _ZN8S21216C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C6D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C78S21216C69S21216C17__A4__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__8S21216C1[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C69S21216C17__A1__8S21216C1[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C6[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C17__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C17__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__A2__9S21216C17__8S21216C1[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A__9S21216C17__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C17__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21216C17[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D1Ev,_ZThn16_N9S21216C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S21216C17D0Ev,_ZThn16_N9S21216C17D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C20D1Ev();
extern void _ZN9S21216C20D0Ev();
extern void _ZN9S21216C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C20__8S21216C1[] = {
  ABISELECT(216,112),
  ABISELECT(-288,-144),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C20D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C23D1Ev();
extern void _ZN9S21216C23D0Ev();
extern void _ZN9S21216C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C23D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C24D1Ev();
extern void _ZN9S21216C24D0Ev();
extern void _ZN9S21216C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21216C242v3Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN8S21216C5D1Ev();
extern void _ZN8S21216C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21216C5D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C10D1Ev();
extern void _ZN9S21216C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C10D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C108S21216C59S21216C249S21216C239S21216C20__A5__8S21216C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__8S21216C79S21216C108S21216C59S21216C249S21216C239S21216C20__A5__8S21216C1[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S21216C7[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C10[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(128,64),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C10__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21216C17__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D1Ev,_ZTvn16_n32_N8S21216C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S21216C5D0Ev,_ZTvn16_n32_N8S21216C5D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21216C5[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn104_N9S21216C24D1Ev,_ZThn56_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn104_N9S21216C24D0Ev,_ZThn56_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-168,-88),
  ABISELECT(-232,-120),
  ABISELECT(16,8),
  ABISELECT(-184,-96),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZThn120_N9S21216C24D1Ev,_ZThn64_N9S21216C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
extern void ABISELECT(_ZThn120_N9S21216C24D0Ev,_ZThn64_N9S21216C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(128,64),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D1Ev,_ZTv0_n24_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C24D0Ev,_ZTv0_n24_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C5__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D1Ev,_ZTvn16_n32_N9S21216C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C24D0Ev,_ZTvn16_n32_N9S21216C24D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C249S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21216C24[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn104_N9S21216C23D1Ev,_ZThn56_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn104_N9S21216C23D0Ev,_ZThn56_N9S21216C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-168,-88),
  ABISELECT(-232,-120),
  ABISELECT(16,8),
  ABISELECT(-184,-96),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZThn120_N9S21216C23D1Ev,_ZThn64_N9S21216C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev)();
extern void ABISELECT(_ZThn120_N9S21216C23D0Ev,_ZThn64_N9S21216C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(128,64),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C23D1Ev,_ZTv0_n24_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C23D0Ev,_ZTv0_n24_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C239S21216C20__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C59S21216C24__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C23D1Ev,_ZTvn16_n32_N9S21216C23D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C23D0Ev,_ZTvn16_n32_N9S21216C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C23D1Ev,_ZTvn16_n32_N9S21216C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C23D0Ev,_ZTvn16_n32_N9S21216C23D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C239S21216C20__8S21216C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21216C23[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21216C20D1Ev,_ZTv0_n44_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S21216C20D1Ev,_ZThn56_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21216C20D0Ev,_ZTv0_n44_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S21216C20D0Ev,_ZThn56_N9S21216C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C21__9S21216C20__8S21216C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-168,-88),
  ABISELECT(-232,-120),
  ABISELECT(16,8),
  ABISELECT(-184,-96),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C20D1Ev,_ZTv0_n44_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21216C20D0Ev,_ZTv0_n44_N9S21216C20D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn120_N9S21216C20D1Ev,_ZThn64_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn120_N9S21216C20D0Ev,_ZThn64_N9S21216C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C20__8S21216C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C20D1Ev,_ZTv0_n24_N9S21216C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21216C20D0Ev,_ZTv0_n24_N9S21216C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C20__8S21216C1[] = {
  ABISELECT(128,64),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C20D1Ev,_ZTv0_n24_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C20D0Ev,_ZTv0_n24_N9S21216C20D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C20__8S21216C1[] = {
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C20__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C20__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__A1__9S21216C20__8S21216C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C159S21216C108S21216C59S21216C249S21216C23__9S21216C20__8S21216C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21216C17__9S21216C20__8S21216C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C79S21216C17__A3__9S21216C20__8S21216C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S21216C20D1Ev,_ZTvn16_n32_N9S21216C20D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S21216C20D0Ev,_ZTvn16_n32_N9S21216C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C69S21216C17__A1__9S21216C20__8S21216C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C20D1Ev,_ZTvn16_n32_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S21216C20D0Ev,_ZTvn16_n32_N9S21216C20D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C20__8S21216C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void ABISELECT(_ZTv0_n80_N9S21216C20D1Ev,_ZTv0_n40_N9S21216C20D1Ev)();
extern void ABISELECT(_ZThn200_N9S21216C20D1Ev,_ZThn104_N9S21216C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21216C20D0Ev,_ZTv0_n40_N9S21216C20D0Ev)();
extern void ABISELECT(_ZThn200_N9S21216C20D0Ev,_ZThn104_N9S21216C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C25__9S21216C20__8S21216C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-280,-144),
  ABISELECT(-328,-168),
  ABISELECT(-296,-152),
  ABISELECT(-264,-136),
  ABISELECT(-304,-156),
  ABISELECT(16,8),
  ABISELECT(-488,-248),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21216C20D1Ev,_ZTv0_n40_N9S21216C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21216C20D0Ev,_ZTv0_n40_N9S21216C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__A1__9S21216C20__8S21216C1[] = {
  ABISELECT(-280,-144),
  ABISELECT(-320,-164),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C25__A2__9S21216C20__8S21216C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-336,-172),
  ABISELECT(-312,-160),
  ABISELECT(-304,-156),
  ABISELECT(-336,-172),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI9S21216C20[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C21D1Ev();
extern void _ZN9S21216C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C21__8S21216C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-232,-120),
  ABISELECT(16,8),
  ABISELECT(-184,-96),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C21D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C21__A1__8S21216C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C119S21216C21__A1__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C119S21216C21__A1__8S21216C1[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C119S21216C21__A1__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21216C22__9S21216C21__8S21216C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-184,-96),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C21__8S21216C1[] = {
  ABISELECT(232,120),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D1Ev,_ZTv0_n24_N9S21216C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C21D0Ev,_ZTv0_n24_N9S21216C21D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C21__8S21216C1[] = {
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__A1__9S21216C21__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C21__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI9S21216C21[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C22D1Ev();
extern void _ZN9S21216C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C22__8S21216C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C22D0Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21216C6__9S21216C22__8S21216C1[] = {
  ABISELECT(248,128),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D1Ev,_ZTv0_n24_N9S21216C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21216C22D0Ev,_ZTv0_n24_N9S21216C22D0Ev),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C98S21216C6__A1__9S21216C22__8S21216C1[] = {
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI9S21216C22[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN9S21216C25D1Ev();
extern void _ZN9S21216C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C25__8S21216C1[] = {
  ABISELECT(-280,-144),
  ABISELECT(-328,-168),
  ABISELECT(-296,-152),
  ABISELECT(-264,-136),
  ABISELECT(-304,-156),
  ABISELECT(16,8),
  ABISELECT(-488,-248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN9S21216C25D1Ev,
  (VTBL_ENTRY)&_ZN9S21216C25D0Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C119S21216C25__A2__8S21216C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-336,-172),
  ABISELECT(-312,-160),
  ABISELECT(-304,-156),
  ABISELECT(-336,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C119S21216C25__A2__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C119S21216C25__A2__8S21216C1[] = {
  0,
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C119S21216C25__A2__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI9S21216C11[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__9S21216C25__8S21216C1[] = {
  ABISELECT(-280,-144),
  ABISELECT(-320,-164),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C11__9S21216C25__8S21216C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-336,-172),
  ABISELECT(-312,-160),
  ABISELECT(-304,-156),
  ABISELECT(-336,-172),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C7__9S21216C25__8S21216C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21216C9__9S21216C25__8S21216C1[] = {
  0,
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
};
extern void _ZN8S21216C92v1Ev();
extern void _ZN9S21216C122v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21216C12__9S21216C25__8S21216C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI9S21216C25[0]),
  (VTBL_ENTRY)&_ZN8S21216C92v1Ev,
  (VTBL_ENTRY)&_ZN9S21216C122v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21216C15__A2__8S21216C1[] = {
  ABISELECT(-280,-144),
  ABISELECT(-320,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S21216C15[0]),
};
static  VTT_ENTRY vtt_S21216C1[] = {
  {&(_ZTV8S21216C1[19]),  19,195},
  {&(_tg__ZTV8S21216C3__8S21216C1[12]),  12,15},
  {&(_tg__ZTV8S21216C58S21216C3__8S21216C1[11]),  11,14},
  {&(_tg__ZTV9S21216C108S21216C58S21216C3__8S21216C1[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C108S21216C58S21216C3__A2__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C108S21216C58S21216C3__A2__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C108S21216C58S21216C3__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C108S21216C58S21216C3__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C108S21216C58S21216C3__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C108S21216C58S21216C3__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C108S21216C58S21216C3__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C108S21216C58S21216C3__8S21216C1[4]),  4,4},
  {&(_tg__ZTV8S21216C6__8S21216C58S21216C3__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__8S21216C58S21216C3__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C58S21216C3__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C58S21216C3__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C58S21216C3__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C58S21216C3__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C58S21216C3__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C58S21216C3__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C58S21216C3__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C58S21216C3__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C58S21216C3__8S21216C1[2]),  2,3},
  {&(_tg__ZTV8S21216C6__8S21216C3__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__8S21216C3__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C3__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C3__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C3__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C3__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C108S21216C5__8S21216C3__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C3__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C3__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C3__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C3__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C30__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C79S21216C30__A6__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C30__A6__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C129S21216C30__A1__8S21216C1[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C129S21216C30__A1__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C129S21216C30__A1__8S21216C1[3]),  3,4},
  {&(_tg__ZTV8S21216C9__9S21216C30__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C30__8S21216C1[5]),  5,7},
  {&(_tg__ZTV8S21216C7__A1__9S21216C30__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C31__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C69S21216C31__A2__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C31__A7__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C31__A7__8S21216C1[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C31__A2__8S21216C1[3]),  3,4},
  {&(_tg__ZTV8S21216C9__9S21216C31__8S21216C1[3]),  3,4},
  {&(_ZTV8S21216C1[55]),  55,195},
  {&(_ZTV8S21216C1[63]),  63,195},
  {&(_ZTV8S21216C1[63]),  63,195},
  {&(_ZTV8S21216C1[68]),  68,195},
  {&(_ZTV8S21216C1[76]),  76,195},
  {&(_ZTV8S21216C1[82]),  82,195},
  {&(_ZTV8S21216C1[90]),  90,195},
  {&(_ZTV8S21216C1[26]),  26,195},
  {&(_ZTV8S21216C1[100]),  100,195},
  {&(_ZTV8S21216C1[108]),  108,195},
  {&(_ZTV8S21216C1[114]),  114,195},
  {&(_ZTV8S21216C1[119]),  119,195},
  {&(_ZTV8S21216C1[138]),  138,195},
  {&(_ZTV8S21216C1[157]),  157,195},
  {&(_ZTV8S21216C1[168]),  168,195},
  {&(_ZTV8S21216C1[146]),  146,195},
  {&(_ZTV8S21216C1[181]),  181,195},
  {&(_ZTV8S21216C1[195]),  195,195},
  {&(_ZTV8S21216C1[190]),  190,195},
  {&(_ZTV8S21216C1[33]),  33,195},
  {&(_ZTV8S21216C1[39]),  39,195},
  {&(_ZTV8S21216C1[46]),  46,195},
  {&(_tg__ZTV8S21216C6__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C6__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C78S21216C6__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C6__8S21216C1[5]),  5,8},
  {&(_tg__ZTV9S21216C11__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C11__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C11__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C11__8S21216C1[7]),  7,9},
  {&(_tg__ZTV8S21216C7__A1__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C7__A1__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__8S21216C1[5]),  5,7},
  {&(_tg__ZTV8S21216C7__9S21216C12__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A1__9S21216C12__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C17__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C17__A3__8S21216C1[3]),  3,4},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C78S21216C69S21216C17__A4__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C78S21216C69S21216C17__A4__8S21216C1[3]),  3,4},
  {&(_tg__ZTV8S21216C9__8S21216C69S21216C17__A1__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C17__8S21216C1[7]),  7,9},
  {&(_tg__ZTV8S21216C7__9S21216C17__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__A2__9S21216C17__8S21216C1[3]),  3,4},
  {&(_tg__ZTV8S21216C7__A__9S21216C17__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C6__9S21216C17__8S21216C1[5]),  5,8},
  {&(_tg__ZTV9S21216C20__8S21216C1[16]),  16,20},
  {&(_tg__ZTV9S21216C239S21216C20__8S21216C1[13]),  13,17},
  {&(_tg__ZTV9S21216C249S21216C239S21216C20__8S21216C1[13]),  13,17},
  {&(_tg__ZTV8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[11]),  11,14},
  {&(_tg__ZTV9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[9]),  9,12},
  {&(_tg__ZTV8S21216C79S21216C108S21216C59S21216C249S21216C239S21216C20__A5__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__8S21216C79S21216C108S21216C59S21216C249S21216C239S21216C20__A5__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C159S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C108S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[4]),  4,4},
  {&(_tg__ZTV8S21216C6__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C11__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__A1__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C159S21216C10__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C17__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__8S21216C59S21216C249S21216C239S21216C20__A1__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C21__9S21216C249S21216C239S21216C20__8S21216C1[11]),  11,14},
  {&(_tg__ZTV9S21216C22__9S21216C249S21216C239S21216C20__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C249S21216C239S21216C20__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__9S21216C249S21216C239S21216C20__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C249S21216C239S21216C20__8S21216C1[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C249S21216C239S21216C20__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C249S21216C239S21216C20__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C11__A1__9S21216C249S21216C239S21216C20__8S21216C1[7]),  7,8},
  {&(_tg__ZTV9S21216C159S21216C108S21216C5__9S21216C249S21216C239S21216C20__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C17__9S21216C249S21216C239S21216C20__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C249S21216C239S21216C20__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C249S21216C239S21216C20__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C249S21216C239S21216C20__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C21__9S21216C239S21216C20__8S21216C1[11]),  11,14},
  {&(_tg__ZTV9S21216C22__9S21216C239S21216C20__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C239S21216C20__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__9S21216C239S21216C20__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C239S21216C20__8S21216C1[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C239S21216C20__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C239S21216C20__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C11__A1__9S21216C239S21216C20__8S21216C1[7]),  7,8},
  {&(_tg__ZTV9S21216C159S21216C108S21216C59S21216C24__9S21216C239S21216C20__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C17__9S21216C239S21216C20__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C239S21216C20__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C239S21216C20__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C239S21216C20__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C21__9S21216C20__8S21216C1[11]),  11,14},
  {&(_tg__ZTV9S21216C22__9S21216C20__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C20__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__9S21216C20__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C20__8S21216C1[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C20__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C20__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C11__A1__9S21216C20__8S21216C1[7]),  7,8},
  {&(_tg__ZTV9S21216C159S21216C108S21216C59S21216C249S21216C23__9S21216C20__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C17__9S21216C20__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C79S21216C17__A3__9S21216C20__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C69S21216C17__A1__9S21216C20__8S21216C1[5]),  5,8},
  {&(_tg__ZTV8S21216C98S21216C69S21216C17__A4__9S21216C20__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C25__9S21216C20__8S21216C1[10]),  10,12},
  {&(_tg__ZTV9S21216C15__A1__9S21216C20__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C119S21216C25__A2__9S21216C20__8S21216C1[7]),  7,8},
  {&(_tg__ZTV9S21216C21__8S21216C1[10]),  10,13},
  {&(_tg__ZTV9S21216C119S21216C21__A1__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C119S21216C21__A1__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C119S21216C21__A1__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C119S21216C21__A1__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C22__9S21216C21__8S21216C1[8]),  8,11},
  {&(_tg__ZTV8S21216C6__9S21216C21__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__9S21216C21__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C21__8S21216C1[2]),  2,3},
  {&(_tg__ZTV8S21216C7__A1__9S21216C21__8S21216C1[5]),  5,6},
  {&(_tg__ZTV9S21216C12__9S21216C21__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C22__8S21216C1[7]),  7,10},
  {&(_tg__ZTV8S21216C6__9S21216C22__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C6__9S21216C22__8S21216C1[6]),  6,9},
  {&(_tg__ZTV8S21216C98S21216C6__A1__9S21216C22__8S21216C1[2]),  2,3},
  {&(_tg__ZTV9S21216C25__8S21216C1[9]),  9,11},
  {&(_tg__ZTV9S21216C119S21216C25__A2__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C119S21216C25__A2__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C119S21216C25__A2__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C119S21216C25__A2__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C15__9S21216C25__8S21216C1[4]),  4,4},
  {&(_tg__ZTV9S21216C11__9S21216C25__8S21216C1[7]),  7,8},
  {&(_tg__ZTV8S21216C7__9S21216C25__8S21216C1[5]),  5,6},
  {&(_tg__ZTV8S21216C9__9S21216C25__8S21216C1[3]),  3,4},
  {&(_tg__ZTV9S21216C12__9S21216C25__8S21216C1[7]),  7,9},
  {&(_tg__ZTV9S21216C15__A2__8S21216C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21216C1[];
extern  VTBL_ENTRY _ZTV8S21216C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21216C1[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D0Ev,_ZTv0_n32_N9S21216C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D0Ev,_ZThn8_N9S21216C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C21D1Ev,_ZTv0_n32_N9S21216C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21216C21D1Ev,_ZThn8_N9S21216C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21216C20D0Ev,_ZTv0_n40_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C20D0Ev,_ZThn104_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21216C20D1Ev,_ZTv0_n40_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21216C20D1Ev,_ZThn104_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C20D0Ev,_ZTv0_n32_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C20D0Ev,_ZThn64_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C20D1Ev,_ZTv0_n32_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C20D1Ev,_ZThn64_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C20D0Ev,_ZTv0_n44_N9S21216C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C20D0Ev,_ZThn56_N9S21216C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C20D1Ev,_ZTv0_n44_N9S21216C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C20D1Ev,_ZThn56_N9S21216C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C23D0Ev,_ZTv0_n32_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C23D0Ev,_ZThn64_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C23D1Ev,_ZTv0_n32_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C23D1Ev,_ZThn64_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C23D0Ev,_ZTv0_n44_N9S21216C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C23D0Ev,_ZThn56_N9S21216C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C23D1Ev,_ZTv0_n44_N9S21216C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C23D1Ev,_ZThn56_N9S21216C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D0Ev,_ZTv0_n32_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C24D0Ev,_ZThn64_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21216C24D1Ev,_ZTv0_n32_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21216C24D1Ev,_ZThn64_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D0Ev,_ZTv0_n44_N9S21216C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C24D0Ev,_ZThn56_N9S21216C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21216C24D1Ev,_ZTv0_n44_N9S21216C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21216C24D1Ev,_ZThn56_N9S21216C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C3D0Ev,_ZTv0_n32_N8S21216C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21216C3D0Ev,_ZThn116_N8S21216C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C3D1Ev,_ZTv0_n32_N8S21216C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21216C3D1Ev,_ZThn116_N8S21216C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C3D0Ev,_ZTv0_n24_N8S21216C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21216C3D0Ev,_ZThn80_N8S21216C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C3D1Ev,_ZTv0_n24_N8S21216C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21216C3D1Ev,_ZThn80_N8S21216C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D0Ev,_ZTv0_n32_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21216C5D0Ev,_ZThn116_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C5D1Ev,_ZTv0_n32_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21216C5D1Ev,_ZThn116_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D0Ev,_ZTv0_n24_N8S21216C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21216C5D0Ev,_ZThn80_N8S21216C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C5D1Ev,_ZTv0_n24_N8S21216C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21216C5D1Ev,_ZThn80_N8S21216C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21216C1D0Ev,_ZTv0_n40_N8S21216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N8S21216C1D0Ev,_ZThn248_N8S21216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21216C1D1Ev,_ZTv0_n40_N8S21216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N8S21216C1D1Ev,_ZThn248_N8S21216C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21216C1D0Ev,_ZTv0_n44_N8S21216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21216C1D0Ev,_ZThn200_N8S21216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21216C1D1Ev,_ZTv0_n44_N8S21216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21216C1D1Ev,_ZThn200_N8S21216C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21216C1D0Ev,_ZTv0_n68_N8S21216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21216C1D0Ev,_ZThn144_N8S21216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21216C1D1Ev,_ZTv0_n68_N8S21216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21216C1D1Ev,_ZThn144_N8S21216C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C1D0Ev,_ZTv0_n32_N8S21216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21216C1D0Ev,_ZThn208_N8S21216C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21216C1D0Ev,_ZThn116_N8S21216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21216C1D1Ev,_ZTv0_n32_N8S21216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21216C1D1Ev,_ZThn208_N8S21216C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21216C1D1Ev,_ZThn116_N8S21216C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C1D0Ev,_ZTv0_n24_N8S21216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21216C1D0Ev,_ZThn80_N8S21216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21216C1D1Ev,_ZTv0_n24_N8S21216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21216C1D1Ev,_ZThn80_N8S21216C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21216C1D0Ev,_ZTv0_n12_N8S21216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21216C1D0Ev,_ZThn72_N8S21216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21216C1D1Ev,_ZTv0_n12_N8S21216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21216C1D1Ev,_ZThn72_N8S21216C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21216C1 = {  "S21216C1", // class name
  bases_S21216C1, 64,
  &(vtc_S21216C1[0]), // expected_vtbl_contents
  &(vtt_S21216C1[0]), // expected_vtt_contents
  ABISELECT(512,260), // object size
  NSPAIRA(_ZTI8S21216C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21216C1),195, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21216C1),188, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S1618C6C1Ev();
extern void _ZN7S1618C6D1Ev();
Name_Map name_map_S1618C6[] = {
  NSPAIR(_ZN7S1618C6C1Ev),
  NSPAIR(_ZN7S1618C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1618C6[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C6[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
Class_Descriptor cd_S1618C6 = {  "S1618C6", // class name
  0,0,//no base classes
  &(vtc_S1618C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1618C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1618C6),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  S1618C4  : virtual S19894C34 , virtual S1618C6 {
  ::S1618C6 s1618c4f0;
  ~S1618C4(); // tgen
  S1618C4(); // tgen
};
//SIG(-1 S1618C4) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S1618C4()
{
  extern Class_Descriptor cd_S1618C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1618C4, buf);
    S1618C4 *dp, &lv = *(dp=new (buf) S1618C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1618C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C4)");
    check_base_class_offset(lv, (S19894C34*), 0, "S1618C4");
    check_base_class_offset(lv, (S1618C6*), 0, "S1618C4");
    check_field_offset(lv, s1618c4f0, ABISELECT(8,4), "S1618C4.s1618c4f0");
    test_class_info(&lv, &cd_S1618C4);
    dp->~S1618C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C4(Test_S1618C4, "S1618C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1618C4C1Ev();
extern void _ZN7S1618C4D1Ev();
Name_Map name_map_S1618C4[] = {
  NSPAIR(_ZN7S1618C4C1Ev),
  NSPAIR(_ZN7S1618C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
static Base_Class bases_S1618C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C6,    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 _ZTI7S1618C4[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C4[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S1618C4[];
static  VTT_ENTRY vtt_S1618C4[] = {
  {&(_ZTV7S1618C4[5]),  5,6},
  {&(_ZTV7S1618C4[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
Class_Descriptor cd_S1618C4 = {  "S1618C4", // class name
  bases_S1618C4, 2,
  &(vtc_S1618C4[0]), // expected_vtbl_contents
  &(vtt_S1618C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1618C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1618C4),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C4),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  S1618C3  : S1618C4 , S19894C34 , S1618C6 {
  virtual  ~S1618C3(); // _ZN7S1618C3D2Ev
  S1618C3(); // tgen
};
//SIG(-1 S1618C3) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S1618C3()
{
  extern Class_Descriptor cd_S1618C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1618C3, buf);
    S1618C3 *dp, &lv = *(dp=new (buf) S1618C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1618C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C3)");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*), ABISELECT(24,12), "S1618C3");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C3");
    check_base_class_offset(lv, (S1618C4*), 0, "S1618C3");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S1618C3");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*), ABISELECT(16,8), "S1618C3");
    test_class_info(&lv, &cd_S1618C3);
    dp->~S1618C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C3(Test_S1618C3, "S1618C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1618C3C1Ev();
extern void _ZN7S1618C3D2Ev();
Name_Map name_map_S1618C3[] = {
  NSPAIR(_ZN7S1618C3C1Ev),
  NSPAIR(_ZN7S1618C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
static Base_Class bases_S1618C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C6,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1618C3[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C3[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S1618C3[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C3[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C3[] = {
  {&(_ZTV7S1618C3[5]),  5,11},
  {&(_tg__ZTV7S1618C4__7S1618C3[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C3[5]),  5,6},
  {&(_ZTV7S1618C3[5]),  5,11},
};
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
Class_Descriptor cd_S1618C3 = {  "S1618C3", // class name
  bases_S1618C3, 5,
  &(vtc_S1618C3[0]), // expected_vtbl_contents
  &(vtt_S1618C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1618C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1618C3),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C3),4, //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  S1618C2  : S1618C3 {
  ~S1618C2(); // tgen
  S1618C2(); // tgen
};
//SIG(-1 S1618C2) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S1618C2()
{
  extern Class_Descriptor cd_S1618C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1618C2, buf);
    S1618C2 *dp, &lv = *(dp=new (buf) S1618C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1618C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C2)");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), ABISELECT(24,12), "S1618C2");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), 0, "S1618C2");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*), 0, "S1618C2");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), 0, "S1618C2");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(16,8), "S1618C2");
    check_base_class_offset(lv, (S1618C3*), 0, "S1618C2");
    test_class_info(&lv, &cd_S1618C2);
    dp->~S1618C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C2(Test_S1618C2, "S1618C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1618C2C1Ev();
extern void _ZN7S1618C2D1Ev();
Name_Map name_map_S1618C2[] = {
  NSPAIR(_ZN7S1618C2C1Ev),
  NSPAIR(_ZN7S1618C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
static Base_Class bases_S1618C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1618C6,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1618C2[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S1618C2[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__7S1618C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__7S1618C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C2[] = {
  {&(_ZTV7S1618C2[5]),  5,11},
  {&(_tg__ZTV7S1618C3__7S1618C2[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__7S1618C2[5]),  5,6},
  {&(_tg__ZTV7S1618C47S1618C3__7S1618C2[5]),  5,6},
  {&(_tg__ZTV7S1618C3__7S1618C2[5]),  5,8},
  {&(_ZTV7S1618C2[5]),  5,11},
};
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
Class_Descriptor cd_S1618C2 = {  "S1618C2", // class name
  bases_S1618C2, 6,
  &(vtc_S1618C2[0]), // expected_vtbl_contents
  &(vtt_S1618C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1618C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1618C2),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C2),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  S1618C11  : S1618C6 , S19894C6_nt , virtual S1618C4 {
  virtual void  v2(); // _ZN8S1618C112v2Ev
  ~S1618C11(); // tgen
  S1618C11(); // tgen
};
//SIG(-1 S1618C11) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S1618C11()
{
  extern Class_Descriptor cd_S1618C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1618C11, buf);
    S1618C11 *dp, &lv = *(dp=new (buf) S1618C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1618C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C11)");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*), 0, "S1618C11");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S1618C11");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C11");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(16,8), "S1618C11");
    check_base_class_offset(lv, (S1618C4*), ABISELECT(16,8), "S1618C11");
    test_class_info(&lv, &cd_S1618C11);
    dp->~S1618C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C11(Test_S1618C11, "S1618C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1618C11C1Ev();
extern void _ZN8S1618C11D1Ev();
Name_Map name_map_S1618C11[] = {
  NSPAIR(_ZN8S1618C11C1Ev),
  NSPAIR(_ZN8S1618C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
static Base_Class bases_S1618C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1618C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S1618C11[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C11[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S1618C11[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C11[] = {
  {&(_ZTV8S1618C11[5]),  5,13},
  {&(_ZTV8S1618C11[12]),  12,13},
  {&(_ZTV8S1618C11[12]),  12,13},
  {&(_tg__ZTV7S1618C4__8S1618C11[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C11[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
Class_Descriptor cd_S1618C11 = {  "S1618C11", // class name
  bases_S1618C11, 5,
  &(vtc_S1618C11[0]), // expected_vtbl_contents
  &(vtt_S1618C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1618C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1618C11),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C9  : S1618C4 , virtual S19894C6_nt , S1618C11 {
  int s1618c9f0;
  ~S1618C9(); // tgen
  S1618C9(); // tgen
};
//SIG(-1 S1618C9) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S1618C9()
{
  extern Class_Descriptor cd_S1618C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S1618C9, buf);
    S1618C9 *dp, &lv = *(dp=new (buf) S1618C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S1618C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C9)");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C9");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C9");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C9");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C9");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*), 0, "S1618C9");
    /*is_ambiguous_... S1618C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S1618C9");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(16,8), "S1618C9");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(24,12), "S1618C9");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(48,24), "S1618C9");
    check_base_class_offset(lv, (S1618C11*), ABISELECT(16,8), "S1618C9");
    check_field_offset(lv, s1618c9f0, ABISELECT(32,16), "S1618C9.s1618c9f0");
    test_class_info(&lv, &cd_S1618C9);
    dp->~S1618C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C9(Test_S1618C9, "S1618C9", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S1618C9C1Ev();
extern void _ZN7S1618C9D1Ev();
Name_Map name_map_S1618C9[] = {
  NSPAIR(_ZN7S1618C9C1Ev),
  NSPAIR(_ZN7S1618C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
static Base_Class bases_S1618C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1618C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C6,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1618C11,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1618C9[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C9[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S1618C9[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A__7S1618C9[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__7S1618C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__7S1618C9[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__A1__7S1618C9[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C9[] = {
  {&(_ZTV7S1618C9[7]),  7,21},
  {&(_tg__ZTV7S1618C4__A__7S1618C9[5]),  5,6},
  {&(_tg__ZTV7S1618C4__A__7S1618C9[5]),  5,6},
  {&(_tg__ZTV8S1618C11__7S1618C9[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__7S1618C9[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__7S1618C9[3]),  3,4},
  {&(_ZTV7S1618C9[7]),  7,21},
  {&(_ZTV7S1618C9[13]),  13,21},
  {&(_ZTV7S1618C9[20]),  20,21},
  {&(_tg__ZTV7S1618C4__A1__7S1618C9[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__A1__7S1618C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
Class_Descriptor cd_S1618C9 = {  "S1618C9", // class name
  bases_S1618C9, 8,
  &(vtc_S1618C9[0]), // expected_vtbl_contents
  &(vtt_S1618C9[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S1618C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1618C9),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C9),11, //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  S1618C8  : virtual S1618C4 , S1618C9 , virtual S21216C26_nt , S19894C34 , virtual S19894C17_nt {
  ::S19894C34 s1618c8f0;
  virtual  ~S1618C8(); // _ZN7S1618C8D2Ev
  S1618C8(); // tgen
};
//SIG(-1 S1618C8) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S1618C8()
{
  extern Class_Descriptor cd_S1618C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S1618C8, buf);
    S1618C8 *dp, &lv = *(dp=new (buf) S1618C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S1618C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C8)");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), ABISELECT(56,32), "S1618C8");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*), ABISELECT(56,32), "S1618C8");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(40,24), "S1618C8");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*), ABISELECT(40,24), "S1618C8");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*), ABISELECT(40,24), "S1618C8");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*), ABISELECT(40,24), "S1618C8");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*), 0, "S1618C8");
    /*is_ambiguous_... S1618C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*), ABISELECT(56,32), "S1618C8");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*), ABISELECT(16,8), "S1618C8");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*), ABISELECT(24,12), "S1618C8");
    check_base_class_offset(lv, (S1618C11*)(S1618C9*), ABISELECT(16,8), "S1618C8");
    check_base_class_offset(lv, (S1618C9*), 0, "S1618C8");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(64,36), "S1618C8");
    /*is_ambiguous_... S1618C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S1618C8");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S1618C8");
    check_field_offset(lv, s1618c8f0, ABISELECT(36,20), "S1618C8.s1618c8f0");
    test_class_info(&lv, &cd_S1618C8);
    dp->~S1618C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C8(Test_S1618C8, "S1618C8", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S1618C8C1Ev();
extern void _ZN7S1618C8D2Ev();
Name_Map name_map_S1618C8[] = {
  NSPAIR(_ZN7S1618C8C1Ev),
  NSPAIR(_ZN7S1618C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S1618C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1618C8[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S1618C8D1Ev,_ZThn36_N7S1618C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S1618C8D0Ev,_ZThn36_N7S1618C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1618C8[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S1618C8[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C9__7S1618C8[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C9__A1__7S1618C8[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C9__A1__7S1618C8[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C9__7S1618C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C9__7S1618C8[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C9__7S1618C8[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C8[] = {
  {&(_ZTV7S1618C8[9]),  9,30},
  {&(_tg__ZTV7S1618C9__7S1618C8[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C9__A1__7S1618C8[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C9__A1__7S1618C8[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C9__7S1618C8[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C9__7S1618C8[5]),  5,6},
  {&(_tg__ZTV7S1618C4__A1__7S1618C9__7S1618C8[5]),  5,6},
  {&(_tg__ZTV8S1618C11__7S1618C9__7S1618C8[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C9__7S1618C8[5]),  5,6},
  {&(_ZTV7S1618C8[24]),  24,30},
  {&(_ZTV7S1618C8[24]),  24,30},
  {&(_ZTV7S1618C8[17]),  17,30},
  {&(_ZTV7S1618C8[28]),  28,30},
  {&(_tg__ZTV7S1618C4__7S1618C8[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1618C8D0Ev,_ZThn36_N7S1618C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1618C8D1Ev,_ZThn36_N7S1618C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C8 = {  "S1618C8", // class name
  bases_S1618C8, 12,
  &(vtc_S1618C8[0]), // expected_vtbl_contents
  &(vtt_S1618C8[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S1618C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1618C8),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C8),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C19  : S19894C6_nt , S19894C17_nt , virtual S1618C4 , virtual S1618C2 {
  ~S1618C19(); // tgen
  S1618C19(); // tgen
};
//SIG(-1 S1618C19) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S1618C19()
{
  extern Class_Descriptor cd_S1618C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S1618C19, buf);
    S1618C19 *dp, &lv = *(dp=new (buf) S1618C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S1618C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C19)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S1618C19");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S1618C19");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C19");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C19");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C19");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C19");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*), ABISELECT(16,8), "S1618C19");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(32,16), "S1618C19");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(32,16), "S1618C19");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(48,24), "S1618C19");
    check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(32,16), "S1618C19");
    check_base_class_offset(lv, (S1618C2*), ABISELECT(32,16), "S1618C19");
    test_class_info(&lv, &cd_S1618C19);
    dp->~S1618C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C19(Test_S1618C19, "S1618C19", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S1618C19C1Ev();
extern void _ZN8S1618C19D1Ev();
Name_Map name_map_S1618C19[] = {
  NSPAIR(_ZN8S1618C19C1Ev),
  NSPAIR(_ZN8S1618C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
static Base_Class bases_S1618C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S1618C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C19[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C19[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S1618C19[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C19[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__8S1618C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C19[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C19[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__8S1618C19[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C19[] = {
  {&(_ZTV8S1618C19[7]),  7,28},
  {&(_ZTV8S1618C19[15]),  15,28},
  {&(_ZTV8S1618C19[7]),  7,28},
  {&(_ZTV8S1618C19[22]),  22,28},
  {&(_ZTV8S1618C19[27]),  27,28},
  {&(_tg__ZTV7S1618C4__8S1618C19[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C19[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C19[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__8S1618C19[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C19[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C19[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C19[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__8S1618C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C19 = {  "S1618C19", // class name
  bases_S1618C19, 10,
  &(vtc_S1618C19[0]), // expected_vtbl_contents
  &(vtt_S1618C19[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S1618C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1618C19),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C19),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C18  : virtual S1618C19 , S21216C26_nt , S1618C3 , virtual S1618C8 {
  void *s1618c18f0[4];
  ~S1618C18(); // tgen
  S1618C18(); // tgen
};
//SIG(-1 S1618C18) C1{ VBC2{ BC3{ m Fp} BC4{ m} VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC9{ BC5 BC6 BC7 vd}}} BC10{ vd m} BC9 VBC11{ VBC5 BC12{ BC5 VBC3 BC13{ BC7 BC3 VBC5 v2} Fi} VBC10 BC6 VBC4 vd FC6} Fp[4]}


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

static void Test_S1618C18()
{
  extern Class_Descriptor cd_S1618C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S1618C18, buf);
    S1618C18 *dp, &lv = *(dp=new (buf) S1618C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S1618C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C18)");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C19*), ABISELECT(72,36), "S1618C18");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C19*), ABISELECT(64,32), "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C18");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), 0, "S1618C18");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), 0, "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(64,32), "S1618C18");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(64,32), "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), ABISELECT(64,32), "S1618C18");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(64,32), "S1618C18");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C19*), ABISELECT(80,40), "S1618C18");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(80,40), "S1618C18");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(80,40), "S1618C18");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(96,48), "S1618C18");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(96,48), "S1618C18");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(112,56), "S1618C18");
    check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(96,48), "S1618C18");
    check_base_class_offset(lv, (S1618C2*)(S1618C19*), ABISELECT(96,48), "S1618C18");
    check_base_class_offset(lv, (S1618C19*), ABISELECT(64,32), "S1618C18");
    /*is_ambiguous_... S1618C18::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(8,4), "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(8,4), "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(24,12), "S1618C18");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C3*), ABISELECT(8,4), "S1618C18");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(120,60), "S1618C18");
    /*is_ambiguous_... S1618C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(160,84), "S1618C18");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(136,68), "S1618C18");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(144,72), "S1618C18");
    check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(136,68), "S1618C18");
    check_base_class_offset(lv, (S1618C9*)(S1618C8*), ABISELECT(120,60), "S1618C18");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(168,88), "S1618C18");
    /*is_ambiguous_... S1618C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), ABISELECT(120,60), "S1618C18");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C18");
    check_base_class_offset(lv, (S1618C8*), ABISELECT(120,60), "S1618C18");
    check_field_offset(lv, s1618c18f0, ABISELECT(32,16), "S1618C18.s1618c18f0");
    test_class_info(&lv, &cd_S1618C18);
    dp->~S1618C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C18(Test_S1618C18, "S1618C18", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN8S1618C18C1Ev();
extern void _ZN8S1618C18D1Ev();
Name_Map name_map_S1618C18[] = {
  NSPAIR(_ZN8S1618C18C1Ev),
  NSPAIR(_ZN8S1618C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S1618C19;
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
static Base_Class bases_S1618C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(80,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(112,56), //bcp->offset
    50, //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(96,48), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1618C19,    ABISELECT(64,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1618C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1618C6,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C4,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(136,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(168,88), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S1618C8,    ABISELECT(120,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C18[];
extern void _ZN8S1618C18D1Ev();
extern void _ZN8S1618C18D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C18D1Ev,_ZThn48_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C18D0Ev,_ZThn48_N8S1618C18D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S1618C18D1Ev,_ZThn60_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S1618C18D0Ev,_ZThn60_N8S1618C18D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn168_N8S1618C18D1Ev,_ZThn88_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn168_N8S1618C18D0Ev,_ZThn88_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1618C18[] = {
  0,
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  0,
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN8S1618C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C18D0Ev,
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S1618C18[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C18[] = {
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__A2__8S1618C18[] = {
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__A2__8S1618C18[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__A1__8S1618C18[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C18[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19__8S1618C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19__8S1618C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C18[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C18[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__8S1618C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C18[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C18[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__8S1618C18[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C18[] = {
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__8S1618C18[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A3__8S1618C18[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A3__8S1618C18[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C18[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C18[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C18[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__8S1618C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C8__8S1618C18[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C18[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1618C8D1Ev,_ZThn28_N7S1618C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1618C8D0Ev,_ZThn28_N7S1618C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__8S1618C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
static  VTT_ENTRY vtt_S1618C18[] = {
  {&(_ZTV8S1618C18[11]),  11,79},
  {&(_tg__ZTV7S1618C3__A1__8S1618C18[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__A2__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__A2__8S1618C18[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__A1__8S1618C18[3]),  3,4},
  {&(_ZTV8S1618C18[32]),  32,79},
  {&(_ZTV8S1618C18[40]),  40,79},
  {&(_ZTV8S1618C18[32]),  32,79},
  {&(_ZTV8S1618C18[47]),  47,79},
  {&(_ZTV8S1618C18[52]),  52,79},
  {&(_ZTV8S1618C18[18]),  18,79},
  {&(_ZTV8S1618C18[64]),  64,79},
  {&(_ZTV8S1618C18[72]),  72,79},
  {&(_ZTV8S1618C18[77]),  77,79},
  {&(_tg__ZTV8S1618C19__8S1618C18[7]),  7,10},
  {&(_tg__ZTV7S1618C4__8S1618C19__8S1618C18[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C18[7]),  7,10},
  {&(_tg__ZTV7S1618C2__8S1618C19__8S1618C18[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C18[2]),  2,3},
  {&(_tg__ZTV7S1618C4__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C18[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C18[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__8S1618C18[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C18[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C18[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__8S1618C18[3]),  3,4},
  {&(_tg__ZTV7S1618C8__8S1618C18[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__8S1618C18[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A3__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A3__8S1618C18[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C18[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C18[3]),  3,4},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C18[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__8S1618C18[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C8__8S1618C18[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C18[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__8S1618C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S1618C18[];
extern  VTBL_ENTRY _ZTV8S1618C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C18[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1618C8D0Ev,_ZThn28_N7S1618C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1618C8D1Ev,_ZThn28_N7S1618C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C18D0Ev,_ZThn88_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C18D1Ev,_ZThn88_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C18D0Ev,_ZThn60_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C18D1Ev,_ZThn60_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C18D0Ev,_ZThn48_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C18D1Ev,_ZThn48_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C18 = {  "S1618C18", // class name
  bases_S1618C18, 26,
  &(vtc_S1618C18[0]), // expected_vtbl_contents
  &(vtt_S1618C18[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI8S1618C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1618C18),79, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C18),41, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C20  : virtual S1618C11 {
  ~S1618C20(); // tgen
  S1618C20(); // tgen
};
//SIG(-1 S1618C20) C1{ VBC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2}}


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

static void Test_S1618C20()
{
  extern Class_Descriptor cd_S1618C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S1618C20, buf);
    S1618C20 *dp, &lv = *(dp=new (buf) S1618C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S1618C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C20)");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(8,4), "S1618C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(16,8), "S1618C20");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C20");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C20");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(24,12), "S1618C20");
    check_base_class_offset(lv, (S1618C11*), ABISELECT(8,4), "S1618C20");
    test_class_info(&lv, &cd_S1618C20);
    dp->~S1618C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C20(Test_S1618C20, "S1618C20", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S1618C20C1Ev();
extern void _ZN8S1618C20D1Ev();
Name_Map name_map_S1618C20[] = {
  NSPAIR(_ZN8S1618C20C1Ev),
  NSPAIR(_ZN8S1618C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
static Base_Class bases_S1618C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1618C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(24,12), //bcp->offset
    17, //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
    5, //immediately_derived
  0, 1},
  {&cd_S1618C11,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C20[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C20[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S1618C20[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__8S1618C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__8S1618C20[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C20[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C20[] = {
  {&(_ZTV8S1618C20[7]),  7,23},
  {&(_ZTV8S1618C20[15]),  15,23},
  {&(_ZTV8S1618C20[22]),  22,23},
  {&(_ZTV8S1618C20[7]),  7,23},
  {&(_tg__ZTV8S1618C11__8S1618C20[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__8S1618C20[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__8S1618C20[3]),  3,4},
  {&(_tg__ZTV7S1618C4__8S1618C20[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C20[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C20[];
extern  VTBL_ENTRY _ZTV8S1618C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C20[];
Class_Descriptor cd_S1618C20 = {  "S1618C20", // class name
  bases_S1618C20, 6,
  &(vtc_S1618C20[0]), // expected_vtbl_contents
  &(vtt_S1618C20[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S1618C20),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1618C20),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C20),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C21  : virtual S1618C4 , virtual S1618C11 {
  ~S1618C21(); // tgen
  S1618C21(); // tgen
};
//SIG(-1 S1618C21) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S1618C21()
{
  extern Class_Descriptor cd_S1618C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S1618C21, buf);
    S1618C21 *dp, &lv = *(dp=new (buf) S1618C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S1618C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C21)");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C21");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C21");
    check_base_class_offset(lv, (S1618C4*), ABISELECT(8,4), "S1618C21");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(8,4), "S1618C21");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(24,12), "S1618C21");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(32,16), "S1618C21");
    check_base_class_offset(lv, (S1618C11*), ABISELECT(24,12), "S1618C21");
    test_class_info(&lv, &cd_S1618C21);
    dp->~S1618C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C21(Test_S1618C21, "S1618C21", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S1618C21C1Ev();
extern void _ZN8S1618C21D1Ev();
Name_Map name_map_S1618C21[] = {
  NSPAIR(_ZN8S1618C21C1Ev),
  NSPAIR(_ZN8S1618C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
static Base_Class bases_S1618C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1618C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C21[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY vtc_S1618C21[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern VTBL_ENTRY _ZTV8S1618C21[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C21[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__8S1618C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__8S1618C21[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C21[] = {
  {&(_ZTV8S1618C21[7]),  7,23},
  {&(_ZTV8S1618C21[13]),  13,23},
  {&(_ZTV8S1618C21[7]),  7,23},
  {&(_ZTV8S1618C21[21]),  21,23},
  {&(_tg__ZTV7S1618C4__8S1618C21[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C21[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C21[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__8S1618C21[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__8S1618C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
Class_Descriptor cd_S1618C21 = {  "S1618C21", // class name
  bases_S1618C21, 6,
  &(vtc_S1618C21[0]), // expected_vtbl_contents
  &(vtt_S1618C21[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S1618C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1618C21),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C21),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C17  : virtual S19894C34 , virtual S1618C18 , virtual S1618C20 , S1618C21 {
  virtual  ~S1618C17(); // _ZN8S1618C17D2Ev
  S1618C17(); // tgen
};
//SIG(-1 S1618C17) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fp} BC6{ m} VBC7{ VBC2 VBC8{ v1} FC8} VBC9{ BC10{ BC7 BC2 BC8 vd}}} BC11{ vd m} BC10 VBC12{ VBC7 BC13{ BC7 VBC5 BC14{ BC8 BC5 VBC7 v2} Fi} VBC11 BC2 VBC6 vd FC2} Fp[4]} VBC15{ VBC14} BC16{ VBC7 VBC14} vd}


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

static void Test_S1618C17()
{
  extern Class_Descriptor cd_S1618C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,28)];
    init_test(&cd_S1618C17, buf);
    S1618C17 *dp, &lv = *(dp=new (buf) S1618C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S1618C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C17)");
    /*is_ambiguous_... S1618C17::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S1618C17");
    /*is_ambiguous_... S1618C17::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C17");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C17");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C18*), 0, "S1618C17");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), 0, "S1618C17");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C19*), ABISELECT(80,40), "S1618C17");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C19*), ABISELECT(72,36), "S1618C17");
    /*is_ambiguous_... S1618C17::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(72,36), "S1618C17");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(72,36), "S1618C17");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(72,36), "S1618C17");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(72,36), "S1618C17");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C19*), ABISELECT(88,44), "S1618C17");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(88,44), "S1618C17");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(88,44), "S1618C17");
    /*is_ambiguous_... S1618C17::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(88,44), "S1618C17");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*), ABISELECT(88,44), "S1618C17");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(104,52), "S1618C17");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(104,52), "S1618C17");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(120,60), "S1618C17");
    check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(104,52), "S1618C17");
    check_base_class_offset(lv, (S1618C2*)(S1618C19*), ABISELECT(104,52), "S1618C17");
    check_base_class_offset(lv, (S1618C19*)(S1618C18*), ABISELECT(72,36), "S1618C17");
    /*is_ambiguous_... S1618C18::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C18*), ABISELECT(8,4), "S1618C17");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(16,8), "S1618C17");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C18*), ABISELECT(16,8), "S1618C17");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C18*), ABISELECT(32,16), "S1618C17");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C3*)(S1618C18*), ABISELECT(16,8), "S1618C17");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(128,64), "S1618C17");
    /*is_ambiguous_... S1618C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(168,88), "S1618C17");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(144,72), "S1618C17");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(152,76), "S1618C17");
    check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(144,72), "S1618C17");
    check_base_class_offset(lv, (S1618C9*)(S1618C8*), ABISELECT(128,64), "S1618C17");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(176,92), "S1618C17");
    /*is_ambiguous_... S1618C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), ABISELECT(128,64), "S1618C17");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C17");
    check_base_class_offset(lv, (S1618C8*)(S1618C18*), ABISELECT(128,64), "S1618C17");
    check_base_class_offset(lv, (S1618C18*), ABISELECT(8,4), "S1618C17");
    /*is_ambiguous_... S1618C17::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(192,100), "S1618C17");
    /*is_ambiguous_... S1618C17::S1618C11 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(200,104), "S1618C17");
    check_base_class_offset(lv, (S1618C11*)(S1618C20*), ABISELECT(192,100), "S1618C17");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*), ABISELECT(192,100), "S1618C17");
    check_base_class_offset(lv, (S1618C20*), ABISELECT(184,96), "S1618C17");
    check_base_class_offset(lv, (S1618C21*), 0, "S1618C17");
    test_class_info(&lv, &cd_S1618C17);
    dp->~S1618C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C17(Test_S1618C17, "S1618C17", ABISELECT(208,108));

#else // __cplusplus

extern void _ZN8S1618C17C1Ev();
extern void _ZN8S1618C17D2Ev();
Name_Map name_map_S1618C17[] = {
  NSPAIR(_ZN8S1618C17C1Ev),
  NSPAIR(_ZN8S1618C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S1618C19;
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C18;
extern VTBL_ENTRY _ZTI8S1618C18[];
extern  VTBL_ENTRY _ZTV8S1618C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C18[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C20;
extern VTBL_ENTRY _ZTI8S1618C20[];
extern  VTBL_ENTRY _ZTV8S1618C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C20[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
static Base_Class bases_S1618C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(88,44), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(120,60), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(104,52), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1618C19,    ABISELECT(72,36), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(32,16), //bcp->offset
    41, //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
    15, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(16,8), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_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
    21, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(144,72), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(176,92), //bcp->offset
    94, //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
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S1618C8,    ABISELECT(128,64), //bcp->offset
    73, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S1618C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C6,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(192,100), //bcp->offset
    107, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S1618C20,    ABISELECT(184,96), //bcp->offset
    99, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C21,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C17[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C17D1Ev();
extern void _ZN8S1618C17D0Ev();
extern void ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C17D1Ev,_ZThn4_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn8_N8S1618C17D0Ev,_ZThn4_N8S1618C17D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn72_N8S1618C17D1Ev,_ZThn36_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn72_N8S1618C17D0Ev,_ZThn36_N8S1618C17D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S1618C17D1Ev,_ZThn52_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S1618C17D0Ev,_ZThn52_N8S1618C17D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn128_N8S1618C17D1Ev,_ZThn64_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn128_N8S1618C17D0Ev,_ZThn64_N8S1618C17D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn176_N8S1618C17D1Ev,_ZThn92_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn176_N8S1618C17D0Ev,_ZThn92_N8S1618C17D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY vtc_S1618C17[] = {
  ABISELECT(184,96),
  0,
  ABISELECT(176,92),
  ABISELECT(168,88),
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(8,4),
  ABISELECT(192,100),
  ABISELECT(72,36),
  0,
  ABISELECT(88,44),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D0Ev,
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-72,-36),
  ABISELECT(32,16),
  0,
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-128,-64),
  ABISELECT(16,8),
  ABISELECT(-128,-64),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-184,-96),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern VTBL_ENTRY _ZTV8S1618C17[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C21__8S1618C17[] = {
  ABISELECT(192,100),
  ABISELECT(72,36),
  0,
  ABISELECT(88,44),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C21__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C21__8S1618C17[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C21__8S1618C17[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN8S1618C18D1Ev();
extern void _ZN8S1618C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN8S1618C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C18D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C17[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C38S1618C18__A2__8S1618C17[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A2__8S1618C17[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C38S1618C18__A1__8S1618C17[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C18__8S1618C17[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C18__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C18D1Ev,_ZThn48_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C18D0Ev,_ZThn48_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C18__8S1618C17[] = {
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__8S1618C17[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C18__8S1618C17[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S1618C18D1Ev,_ZThn60_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S1618C18D0Ev,_ZThn60_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C18__8S1618C17[] = {
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-128,-64),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__8S1618C17[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn168_N8S1618C18D1Ev,_ZThn88_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn168_N8S1618C18D0Ev,_ZThn88_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C18__8S1618C17[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C17[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19__8S1618C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C17[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C17[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__8S1618C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C17[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C17[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__8S1618C17[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C17[] = {
  ABISELECT(-128,-64),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__8S1618C17[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A3__8S1618C17[] = {
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A3__8S1618C17[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C17[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C17[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C17[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C17[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C8__8S1618C17[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C17[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1618C8D1Ev,_ZThn28_N7S1618C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1618C8D0Ev,_ZThn28_N7S1618C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__8S1618C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C17[] = {
  ABISELECT(-112,-60),
  ABISELECT(-184,-96),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C20__8S1618C17[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C20__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C20__8S1618C17[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C17[] = {
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__A1__8S1618C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__A1__8S1618C17[] = {
  0,
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C17[] = {
  {&(_ZTV8S1618C17[15]),  15,116},
  {&(_tg__ZTV8S1618C21__8S1618C17[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C21__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C21__8S1618C17[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C21__8S1618C17[7]),  7,9},
  {&(_ZTV8S1618C17[31]),  31,116},
  {&(_ZTV8S1618C17[52]),  52,116},
  {&(_ZTV8S1618C17[60]),  60,116},
  {&(_ZTV8S1618C17[52]),  52,116},
  {&(_ZTV8S1618C17[67]),  67,116},
  {&(_ZTV8S1618C17[72]),  72,116},
  {&(_ZTV8S1618C17[38]),  38,116},
  {&(_ZTV8S1618C17[43]),  43,116},
  {&(_ZTV8S1618C17[84]),  84,116},
  {&(_ZTV8S1618C17[92]),  92,116},
  {&(_ZTV8S1618C17[97]),  97,116},
  {&(_ZTV8S1618C17[106]),  106,116},
  {&(_ZTV8S1618C17[114]),  114,116},
  {&(_tg__ZTV8S1618C18__8S1618C17[11]),  11,13},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C17[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C38S1618C18__A2__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A2__8S1618C17[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C38S1618C18__A1__8S1618C17[3]),  3,4},
  {&(_tg__ZTV8S1618C19__8S1618C18__8S1618C17[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C18__8S1618C17[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C18__8S1618C17[8]),  8,11},
  {&(_tg__ZTV7S1618C2__8S1618C18__8S1618C17[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__8S1618C17[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A1__8S1618C18__8S1618C17[5]),  5,8},
  {&(_tg__ZTV7S1618C8__8S1618C18__8S1618C17[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__8S1618C17[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C18__8S1618C17[3]),  3,5},
  {&(_tg__ZTV8S1618C19__8S1618C17[7]),  7,10},
  {&(_tg__ZTV7S1618C4__8S1618C19__8S1618C17[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C17[7]),  7,10},
  {&(_tg__ZTV7S1618C2__8S1618C19__8S1618C17[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C17[2]),  2,3},
  {&(_tg__ZTV7S1618C4__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C17[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C17[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__8S1618C17[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C17[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C17[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__8S1618C17[3]),  3,4},
  {&(_tg__ZTV7S1618C8__8S1618C17[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__8S1618C17[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A3__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A3__8S1618C17[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C17[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C17[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C17[3]),  3,4},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C17[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C8__8S1618C17[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C17[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__8S1618C17[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C17[7]),  7,8},
  {&(_tg__ZTV8S1618C11__8S1618C20__8S1618C17[7]),  7,9},
  {&(_tg__ZTV7S1618C4__8S1618C20__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C20__8S1618C17[3]),  3,4},
  {&(_tg__ZTV8S1618C11__A1__8S1618C17[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__A1__8S1618C17[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__A1__8S1618C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C17[];
extern  VTBL_ENTRY _ZTV8S1618C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C17[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1618C8D0Ev,_ZThn28_N7S1618C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1618C8D1Ev,_ZThn28_N7S1618C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C18D0Ev,_ZThn88_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C18D1Ev,_ZThn88_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C18D0Ev,_ZThn60_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C18D1Ev,_ZThn60_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C18D0Ev,_ZThn48_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C18D1Ev,_ZThn48_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C17D0Ev,_ZThn92_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C17D1Ev,_ZThn92_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1618C17D0Ev,_ZThn64_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1618C17D1Ev,_ZThn64_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1618C17D0Ev,_ZThn52_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1618C17D1Ev,_ZThn52_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C17D0Ev,_ZThn36_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C17D1Ev,_ZThn36_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S1618C17D0Ev,_ZThn4_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S1618C17D1Ev,_ZThn4_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C17 = {  "S1618C17", // class name
  bases_S1618C17, 32,
  &(vtc_S1618C17[0]), // expected_vtbl_contents
  &(vtt_S1618C17[0]), // expected_vtt_contents
  ABISELECT(208,108), // object size
  NSPAIRA(_ZTI8S1618C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1618C17),116, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C17),66, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C24  : virtual S1618C3 , virtual S19894C6_nt {
  void *s1618c24f0[9];
  ~S1618C24(); // tgen
  S1618C24(); // tgen
};
//SIG(-1 S1618C24) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S1618C24()
{
  extern Class_Descriptor cd_S1618C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S1618C24, buf);
    S1618C24 *dp, &lv = *(dp=new (buf) S1618C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S1618C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C24)");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), 0, "S1618C24");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), 0, "S1618C24");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(80,40), "S1618C24");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(80,40), "S1618C24");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(96,48), "S1618C24");
    check_base_class_offset(lv, (S1618C3*), ABISELECT(80,40), "S1618C24");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S1618C24");
    check_field_offset(lv, s1618c24f0, ABISELECT(8,4), "S1618C24.s1618c24f0");
    test_class_info(&lv, &cd_S1618C24);
    dp->~S1618C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C24(Test_S1618C24, "S1618C24", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S1618C24C1Ev();
extern void _ZN8S1618C24D1Ev();
Name_Map name_map_S1618C24[] = {
  NSPAIR(_ZN8S1618C24C1Ev),
  NSPAIR(_ZN8S1618C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S1618C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1618C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C24[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C24[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S1618C24[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__8S1618C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__8S1618C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__8S1618C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C24[] = {
  {&(_ZTV8S1618C24[7]),  7,22},
  {&(_ZTV8S1618C24[16]),  16,22},
  {&(_ZTV8S1618C24[7]),  7,22},
  {&(_ZTV8S1618C24[21]),  21,22},
  {&(_tg__ZTV7S1618C3__8S1618C24[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__8S1618C24[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__8S1618C24[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__8S1618C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C24 = {  "S1618C24", // class name
  bases_S1618C24, 7,
  &(vtc_S1618C24[0]), // expected_vtbl_contents
  &(vtt_S1618C24[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S1618C24),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1618C24),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C24),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C23  : virtual S1618C24 , S19894C34 , S1618C21 {
  void *s1618c23f0;
  virtual  ~S1618C23(); // _ZN8S1618C23D2Ev
  S1618C23(); // tgen
};
//SIG(-1 S1618C23) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S1618C23()
{
  extern Class_Descriptor cd_S1618C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S1618C23, buf);
    S1618C23 *dp, &lv = *(dp=new (buf) S1618C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S1618C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C23)");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), ABISELECT(120,60), "S1618C23");
    /*is_ambiguous_... S1618C23::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), ABISELECT(120,60), "S1618C23");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), ABISELECT(16,8), "S1618C23");
    /*is_ambiguous_... S1618C23::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(16,8), "S1618C23");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(96,48), "S1618C23");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(96,48), "S1618C23");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(112,56), "S1618C23");
    check_base_class_offset(lv, (S1618C3*)(S1618C24*), ABISELECT(96,48), "S1618C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C24*), ABISELECT(120,60), "S1618C23");
    check_base_class_offset(lv, (S1618C24*), ABISELECT(16,8), "S1618C23");
    /*is_ambiguous_... S1618C23::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S1618C23");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*), ABISELECT(128,64), "S1618C23");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(128,64), "S1618C23");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(144,72), "S1618C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(152,76), "S1618C23");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*), ABISELECT(144,72), "S1618C23");
    check_base_class_offset(lv, (S1618C21*), 0, "S1618C23");
    check_field_offset(lv, s1618c23f0, ABISELECT(8,4), "S1618C23.s1618c23f0");
    test_class_info(&lv, &cd_S1618C23);
    dp->~S1618C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C23(Test_S1618C23, "S1618C23", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S1618C23C1Ev();
extern void _ZN8S1618C23D2Ev();
Name_Map name_map_S1618C23[] = {
  NSPAIR(_ZN8S1618C23C1Ev),
  NSPAIR(_ZN8S1618C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C24;
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
static Base_Class bases_S1618C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1618C24,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C4,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1618C21,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C23[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C23D1Ev();
extern void _ZN8S1618C23D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn16_N8S1618C23D1Ev,_ZThn8_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn16_N8S1618C23D0Ev,_ZThn8_N8S1618C23D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C23D1Ev,_ZThn48_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C23D0Ev,_ZThn48_N8S1618C23D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY vtc_S1618C23[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern VTBL_ENTRY _ZTV8S1618C23[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C21__8S1618C23[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C21__8S1618C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C21__8S1618C23[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C21__8S1618C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C23[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24__8S1618C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C23[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__8S1618C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__8S1618C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__8S1618C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__8S1618C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__A1__8S1618C23[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C23[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__8S1618C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__8S1618C23[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C23[] = {
  {&(_ZTV8S1618C23[10]),  10,51},
  {&(_tg__ZTV8S1618C21__8S1618C23[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C21__8S1618C23[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C21__8S1618C23[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C21__8S1618C23[7]),  7,9},
  {&(_ZTV8S1618C23[21]),  21,51},
  {&(_ZTV8S1618C23[30]),  30,51},
  {&(_ZTV8S1618C23[21]),  21,51},
  {&(_ZTV8S1618C23[35]),  35,51},
  {&(_ZTV8S1618C23[41]),  41,51},
  {&(_ZTV8S1618C23[49]),  49,51},
  {&(_tg__ZTV8S1618C24__8S1618C23[7]),  7,10},
  {&(_tg__ZTV7S1618C3__8S1618C24__8S1618C23[6]),  6,9},
  {&(_tg__ZTV8S1618C24__8S1618C23[7]),  7,10},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C23[2]),  2,3},
  {&(_tg__ZTV7S1618C3__8S1618C23[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__8S1618C23[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__8S1618C23[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__8S1618C23[3]),  3,4},
  {&(_tg__ZTV7S1618C4__A1__8S1618C23[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__A1__8S1618C23[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C23[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__8S1618C23[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__8S1618C23[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C23[];
extern  VTBL_ENTRY _ZTV8S1618C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C23[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C23D0Ev,_ZThn48_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C23D1Ev,_ZThn48_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1618C23D0Ev,_ZThn8_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1618C23D1Ev,_ZThn8_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C23 = {  "S1618C23", // class name
  bases_S1618C23, 14,
  &(vtc_S1618C23[0]), // expected_vtbl_contents
  &(vtt_S1618C23[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S1618C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1618C23),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C23),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C22  : virtual S21216C26_nt , virtual S1618C19 , virtual S1618C8 , S1618C23 {
  virtual  ~S1618C22(); // _ZN8S1618C22D2Ev
  S1618C22(); // tgen
};
//SIG(-1 S1618C22) C1{ VBC2{ vd m} VBC3{ BC4{ m Fp} BC5{ m} VBC6{ VBC7{ m} VBC8{ v1} FC8} VBC9{ BC10{ BC6 BC7 BC8 vd}}} VBC11{ VBC6 BC12{ BC6 VBC4 BC13{ BC8 BC4 VBC6 v2} Fi} VBC2 BC7 VBC5 vd FC7} BC14{ VBC15{ VBC10 VBC4 Fp[9]} BC7 BC16{ VBC6 VBC13} vd Fp} vd}


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

static void Test_S1618C22()
{
  extern Class_Descriptor cd_S1618C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S1618C22, buf);
    S1618C22 *dp, &lv = *(dp=new (buf) S1618C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S1618C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C22)");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S1618C22");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(16,8), "S1618C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C19*), ABISELECT(32,16), "S1618C22");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C19*), ABISELECT(24,12), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), ABISELECT(56,28), "S1618C22");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(56,28), "S1618C22");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(56,28), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), ABISELECT(56,28), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(24,12), "S1618C22");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(24,12), "S1618C22");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(24,12), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), ABISELECT(24,12), "S1618C22");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C19*), ABISELECT(40,20), "S1618C22");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(40,20), "S1618C22");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(40,20), "S1618C22");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C23*), ABISELECT(40,20), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(40,20), "S1618C22");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(64,32), "S1618C22");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(64,32), "S1618C22");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(80,40), "S1618C22");
    check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(64,32), "S1618C22");
    check_base_class_offset(lv, (S1618C2*)(S1618C19*), ABISELECT(64,32), "S1618C22");
    check_base_class_offset(lv, (S1618C19*), ABISELECT(24,12), "S1618C22");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(88,44), "S1618C22");
    /*is_ambiguous_... S1618C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(128,68), "S1618C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C24*), ABISELECT(128,68), "S1618C22");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(104,52), "S1618C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(112,56), "S1618C22");
    check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(104,52), "S1618C22");
    check_base_class_offset(lv, (S1618C9*)(S1618C8*), ABISELECT(88,44), "S1618C22");
    /*is_ambiguous_... S1618C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), ABISELECT(88,44), "S1618C22");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C22");
    check_base_class_offset(lv, (S1618C8*), ABISELECT(88,44), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(216,112), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(216,112), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(232,120), "S1618C22");
    check_base_class_offset(lv, (S1618C3*)(S1618C24*), ABISELECT(216,112), "S1618C22");
    check_base_class_offset(lv, (S1618C24*)(S1618C23*), ABISELECT(136,72), "S1618C22");
    /*is_ambiguous_... S1618C23::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C23*), 0, "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(240,124), "S1618C22");
    /*is_ambiguous_... S1618C22::S1618C11 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(248,128), "S1618C22");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C23*), ABISELECT(240,124), "S1618C22");
    check_base_class_offset(lv, (S1618C21*)(S1618C23*), 0, "S1618C22");
    check_base_class_offset(lv, (S1618C23*), 0, "S1618C22");
    test_class_info(&lv, &cd_S1618C22);
    dp->~S1618C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C22(Test_S1618C22, "S1618C22", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN8S1618C22C1Ev();
extern void _ZN8S1618C22D2Ev();
Name_Map name_map_S1618C22[] = {
  NSPAIR(_ZN8S1618C22C1Ev),
  NSPAIR(_ZN8S1618C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S1618C19;
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C24;
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C23;
extern VTBL_ENTRY _ZTI8S1618C23[];
extern  VTBL_ENTRY _ZTV8S1618C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C23[];
static Base_Class bases_S1618C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(24,12), //bcp->offset
    -1, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(40,20), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(80,40), //bcp->offset
    49, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(64,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1618C19,    ABISELECT(24,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C4,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(104,52), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1618C8,    ABISELECT(88,44), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C4,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(232,120), //bcp->offset
    93, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(216,112), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S1618C24,    ABISELECT(136,72), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(240,124), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S1618C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1618C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C22[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C22D1Ev();
extern void _ZN8S1618C22D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn16_N8S1618C22D1Ev,_ZThn8_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn16_N8S1618C22D0Ev,_ZThn8_N8S1618C22D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S1618C22D1Ev,_ZThn12_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S1618C22D0Ev,_ZThn12_N8S1618C22D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C22D1Ev,_ZThn32_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C22D0Ev,_ZThn32_N8S1618C22D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn88_N8S1618C22D1Ev,_ZThn44_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn88_N8S1618C22D0Ev,_ZThn44_N8S1618C22D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn136_N8S1618C22D1Ev,_ZThn72_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn136_N8S1618C22D0Ev,_ZThn72_N8S1618C22D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn216_N8S1618C22D1Ev,_ZThn112_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn216_N8S1618C22D0Ev,_ZThn112_N8S1618C22D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY vtc_S1618C22[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern VTBL_ENTRY _ZTV8S1618C22[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C23D1Ev();
extern void _ZN8S1618C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C23__8S1618C22[] = {
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C23__8S1618C22[] = {
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C23__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C218S1618C23__8S1618C22[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C23__8S1618C22[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S1618C23D1Ev,_ZThn72_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S1618C23D0Ev,_ZThn72_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C23__8S1618C22[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn216_N8S1618C23D1Ev,_ZThn112_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn216_N8S1618C23D0Ev,_ZThn112_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C23__8S1618C22[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C23__8S1618C22[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C23__8S1618C22[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__8S1618C23__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C23__8S1618C22[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C22[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S1618C19D1Ev,_ZThn20_N8S1618C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S1618C19D0Ev,_ZThn20_N8S1618C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19__8S1618C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C22[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C22[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__8S1618C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C22[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C22[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__8S1618C22[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C22[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__8S1618C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A2__8S1618C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A2__8S1618C22[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C22[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C22[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C8__8S1618C22[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__8S1618C22[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24__8S1618C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C24__8S1618C22[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C22[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C22[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__A3__8S1618C22[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__A3__8S1618C22[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__A1__8S1618C22[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C22[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__A1__8S1618C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__A1__8S1618C22[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C22[] = {
  {&(_ZTV8S1618C22[15]),  15,105},
  {&(_tg__ZTV8S1618C23__8S1618C22[10]),  10,13},
  {&(_tg__ZTV8S1618C218S1618C23__8S1618C22[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C23__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C218S1618C23__8S1618C22[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C23__8S1618C22[7]),  7,9},
  {&(_tg__ZTV8S1618C24__8S1618C23__8S1618C22[8]),  8,11},
  {&(_tg__ZTV7S1618C3__8S1618C23__8S1618C22[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C23__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C23__8S1618C22[2]),  2,3},
  {&(_tg__ZTV7S1618C4__A1__8S1618C23__8S1618C22[5]),  5,6},
  {&(_tg__ZTV8S1618C11__8S1618C23__8S1618C22[7]),  7,9},
  {&(_ZTV8S1618C22[21]),  21,105},
  {&(_ZTV8S1618C22[31]),  31,105},
  {&(_ZTV8S1618C22[39]),  39,105},
  {&(_ZTV8S1618C22[31]),  31,105},
  {&(_ZTV8S1618C22[46]),  46,105},
  {&(_ZTV8S1618C22[51]),  51,105},
  {&(_ZTV8S1618C22[63]),  63,105},
  {&(_ZTV8S1618C22[71]),  71,105},
  {&(_ZTV8S1618C22[81]),  81,105},
  {&(_ZTV8S1618C22[90]),  90,105},
  {&(_ZTV8S1618C22[95]),  95,105},
  {&(_ZTV8S1618C22[103]),  103,105},
  {&(_tg__ZTV8S1618C19__8S1618C22[7]),  7,10},
  {&(_tg__ZTV7S1618C4__8S1618C19__8S1618C22[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C22[7]),  7,10},
  {&(_tg__ZTV7S1618C2__8S1618C19__8S1618C22[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C22[2]),  2,3},
  {&(_tg__ZTV7S1618C4__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C22[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__8S1618C22[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C8__8S1618C22[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__8S1618C22[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A2__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A2__8S1618C22[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C22[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C22[3]),  3,4},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C22[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C8__8S1618C22[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C22[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__8S1618C22[3]),  3,5},
  {&(_tg__ZTV8S1618C24__8S1618C22[7]),  7,10},
  {&(_tg__ZTV7S1618C3__8S1618C24__8S1618C22[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C24__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C22[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A1__8S1618C22[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__A3__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__A3__8S1618C22[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__A1__8S1618C22[3]),  3,4},
  {&(_tg__ZTV8S1618C11__A1__8S1618C22[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__A1__8S1618C22[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__A1__8S1618C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C22[];
extern  VTBL_ENTRY _ZTV8S1618C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C22[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1618C19D0Ev,_ZThn20_N8S1618C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1618C19D1Ev,_ZThn20_N8S1618C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C23D0Ev,_ZThn112_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C23D1Ev,_ZThn112_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1618C23D0Ev,_ZThn72_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1618C23D1Ev,_ZThn72_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1618C22D0Ev,_ZThn44_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1618C22D1Ev,_ZThn44_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C22D0Ev,_ZThn112_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C22D0Ev,_ZThn32_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C22D1Ev,_ZThn112_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C22D1Ev,_ZThn32_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1618C22D0Ev,_ZThn72_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C22D0Ev,_ZThn12_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1618C22D1Ev,_ZThn72_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C22D1Ev,_ZThn12_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1618C22D0Ev,_ZThn8_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1618C22D1Ev,_ZThn8_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C22 = {  "S1618C22", // class name
  bases_S1618C22, 32,
  &(vtc_S1618C22[0]), // expected_vtbl_contents
  &(vtt_S1618C22[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI8S1618C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1618C22),105, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C22),62, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C14  : S3619C26 , S3619C16 , S1618C17 , S1618C22 {
  virtual  ~S1618C14(); // _ZN8S1618C14D2Ev
  S1618C14(); // tgen
};
//SIG(-1 S1618C14) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} VBC6{ VBC7{ BC8{ m Fp} BC9{ m} VBC10{ VBC5 VBC11{ v1} FC11} VBC12{ BC13{ BC10 BC5 BC11 vd}}} BC14{ vd m} BC13 VBC15{ VBC10 BC16{ BC10 VBC8 BC17{ BC11 BC8 VBC10 v2} Fi} VBC14 BC5 VBC9 vd FC5} Fp[4]} VBC18{ VBC17} BC19{ VBC10 VBC17} vd} BC20{ VBC14 VBC7 VBC15 BC21{ VBC22{ VBC13 VBC8 Fp[9]} BC5 BC19 vd Fp} vd} vd}


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

static void Test_S1618C14()
{
  extern Class_Descriptor cd_S1618C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,43)];
    init_test(&cd_S1618C14, buf);
    S1618C14 *dp, &lv = *(dp=new (buf) S1618C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,168), "sizeof(S1618C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C14)");
    check_base_class_offset(lv, (S3619C26*), 0, "S1618C14");
    check_base_class_offset(lv, (S3619C16*), 0, "S1618C14");
    /*is_ambiguous_... S1618C17::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C17*), 0, "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C14");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C14");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C18*), 0, "S1618C14");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), 0, "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), 0, "S1618C14");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C19*), ABISELECT(96,48), "S1618C14");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C19*), ABISELECT(88,44), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(88,44), "S1618C14");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(88,44), "S1618C14");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(88,44), "S1618C14");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(88,44), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), ABISELECT(88,44), "S1618C14");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C19*), ABISELECT(104,52), "S1618C14");
    /*is_ambiguous_... S1618C8::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(104,52), "S1618C14");
    check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(104,52), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(104,52), "S1618C14");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C17*), ABISELECT(104,52), "S1618C14");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C23*)(S1618C22*), ABISELECT(104,52), "S1618C14");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(120,60), "S1618C14");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(120,60), "S1618C14");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(136,68), "S1618C14");
    check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(120,60), "S1618C14");
    check_base_class_offset(lv, (S1618C2*)(S1618C19*), ABISELECT(120,60), "S1618C14");
    check_base_class_offset(lv, (S1618C19*)(S1618C18*), ABISELECT(88,44), "S1618C14");
    check_base_class_offset(lv, (S1618C19*)(S1618C22*), ABISELECT(88,44), "S1618C14");
    /*is_ambiguous_... S1618C18::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C18*), ABISELECT(24,12), "S1618C14");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(32,16), "S1618C14");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C18*), ABISELECT(32,16), "S1618C14");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C18*), ABISELECT(48,24), "S1618C14");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C3*)(S1618C18*), ABISELECT(32,16), "S1618C14");
    /*is_ambiguous_... S1618C9::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(144,72), "S1618C14");
    /*is_ambiguous_... S1618C9::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(184,96), "S1618C14");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C24*), ABISELECT(184,96), "S1618C14");
    /*is_ambiguous_... S1618C11::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(160,80), "S1618C14");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(168,84), "S1618C14");
    check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(160,80), "S1618C14");
    check_base_class_offset(lv, (S1618C9*)(S1618C8*), ABISELECT(144,72), "S1618C14");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(192,100), "S1618C14");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C22*), ABISELECT(192,100), "S1618C14");
    /*is_ambiguous_... S1618C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), ABISELECT(144,72), "S1618C14");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C14");
    check_base_class_offset(lv, (S1618C8*)(S1618C18*), ABISELECT(144,72), "S1618C14");
    check_base_class_offset(lv, (S1618C8*)(S1618C22*), ABISELECT(144,72), "S1618C14");
    check_base_class_offset(lv, (S1618C18*)(S1618C17*), ABISELECT(24,12), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(208,108), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C11 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(216,112), "S1618C14");
    check_base_class_offset(lv, (S1618C11*)(S1618C20*), ABISELECT(208,108), "S1618C14");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C17*), ABISELECT(208,108), "S1618C14");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C23*)(S1618C22*), ABISELECT(208,108), "S1618C14");
    check_base_class_offset(lv, (S1618C20*)(S1618C17*), ABISELECT(200,104), "S1618C14");
    check_base_class_offset(lv, (S1618C21*)(S1618C17*), 0, "S1618C14");
    check_base_class_offset(lv, (S1618C17*), 0, "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(304,156), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(304,156), "S1618C14");
    /*is_ambiguous_... S1618C14::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(320,164), "S1618C14");
    check_base_class_offset(lv, (S1618C3*)(S1618C24*), ABISELECT(304,156), "S1618C14");
    check_base_class_offset(lv, (S1618C24*)(S1618C23*)(S1618C22*), ABISELECT(224,116), "S1618C14");
    /*is_ambiguous_... S1618C23::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C23*)(S1618C22*), ABISELECT(8,4), "S1618C14");
    check_base_class_offset(lv, (S1618C21*)(S1618C23*)(S1618C22*), ABISELECT(8,4), "S1618C14");
    check_base_class_offset(lv, (S1618C23*)(S1618C22*), ABISELECT(8,4), "S1618C14");
    check_base_class_offset(lv, (S1618C22*), ABISELECT(8,4), "S1618C14");
    test_class_info(&lv, &cd_S1618C14);
    dp->~S1618C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C14(Test_S1618C14, "S1618C14", ABISELECT(328,168));

#else // __cplusplus

extern void _ZN8S1618C14C1Ev();
extern void _ZN8S1618C14D2Ev();
Name_Map name_map_S1618C14[] = {
  NSPAIR(_ZN8S1618C14C1Ev),
  NSPAIR(_ZN8S1618C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S1618C19;
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C18;
extern VTBL_ENTRY _ZTI8S1618C18[];
extern  VTBL_ENTRY _ZTV8S1618C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C18[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C20;
extern VTBL_ENTRY _ZTI8S1618C20[];
extern  VTBL_ENTRY _ZTV8S1618C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C20[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C17;
extern VTBL_ENTRY _ZTI8S1618C17[];
extern  VTBL_ENTRY _ZTV8S1618C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C17[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C24;
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C23;
extern VTBL_ENTRY _ZTI8S1618C23[];
extern  VTBL_ENTRY _ZTV8S1618C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C23[];
extern Class_Descriptor cd_S1618C22;
extern VTBL_ENTRY _ZTI8S1618C22[];
extern  VTBL_ENTRY _ZTV8S1618C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C22[];
static Base_Class bases_S1618C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(104,52), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(120,60), //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
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(136,68), //bcp->offset
    90, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(120,60), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S1618C19,    ABISELECT(88,44), //bcp->offset
    64, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S21216C26_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
    14, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(48,24), //bcp->offset
    61, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(32,16), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(160,80), //bcp->offset
    107, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(192,100), //bcp->offset
    114, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S1618C8,    ABISELECT(144,72), //bcp->offset
    93, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S1618C18,    ABISELECT(24,12), //bcp->offset
    38, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(208,108), //bcp->offset
    127, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1618C20,    ABISELECT(200,104), //bcp->offset
    119, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S1618C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1618C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C4,    ABISELECT(304,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(304,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(320,164), //bcp->offset
    156, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(304,156), //bcp->offset
    147, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S1618C24,    ABISELECT(224,116), //bcp->offset
    136, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1618C21,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S1618C23,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1618C22,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C14[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C14D1Ev();
extern void _ZN8S1618C14D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C14D1Ev,_ZThn4_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C14D0Ev,_ZThn4_N8S1618C14D0Ev)();
extern void ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S1618C14D1Ev,_ZThn12_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S1618C14D0Ev,_ZThn12_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C14D1Ev,_ZTvn4_n48_N8S1618C14D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C14D0Ev,_ZTvn4_n48_N8S1618C14D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn88_N8S1618C14D1Ev,_ZThn44_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn88_N8S1618C14D0Ev,_ZThn44_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn120_N8S1618C14D1Ev,_ZThn60_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn120_N8S1618C14D0Ev,_ZThn60_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn144_N8S1618C14D1Ev,_ZThn72_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn144_N8S1618C14D0Ev,_ZThn72_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn192_N8S1618C14D1Ev,_ZThn100_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn192_N8S1618C14D0Ev,_ZThn100_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn224_N8S1618C14D1Ev,_ZThn116_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn224_N8S1618C14D0Ev,_ZThn116_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn304_N8S1618C14D1Ev,_ZThn156_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn304_N8S1618C14D0Ev,_ZThn156_N8S1618C14D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C14[] = {
  ABISELECT(304,156),
  ABISELECT(224,116),
  ABISELECT(200,104),
  0,
  ABISELECT(192,100),
  ABISELECT(184,96),
  ABISELECT(144,72),
  ABISELECT(120,60),
  ABISELECT(88,44),
  ABISELECT(24,12),
  ABISELECT(208,108),
  ABISELECT(88,44),
  0,
  ABISELECT(104,52),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C14D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(136,68),
  ABISELECT(112,56),
  ABISELECT(80,40),
  ABISELECT(184,96),
  ABISELECT(176,92),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C14D1Ev,_ZThn4_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C14D0Ev,_ZThn4_N8S1618C14D0Ev),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C14D1Ev,_ZTvn4_n48_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C14D0Ev,_ZTvn4_n48_N8S1618C14D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(32,16),
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-144,-72),
  ABISELECT(16,8),
  ABISELECT(-144,-72),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-200,-104),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-224,-116),
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-224,-116),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S1618C14[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C17D1Ev();
extern void _ZN8S1618C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C17__8S1618C14[] = {
  ABISELECT(200,104),
  0,
  ABISELECT(192,100),
  ABISELECT(184,96),
  ABISELECT(144,72),
  ABISELECT(120,60),
  ABISELECT(88,44),
  ABISELECT(24,12),
  ABISELECT(208,108),
  ABISELECT(88,44),
  0,
  ABISELECT(104,52),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C17__8S1618C14[] = {
  ABISELECT(208,108),
  ABISELECT(88,44),
  0,
  ABISELECT(104,52),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C17__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C218S1618C17__8S1618C14[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C17__8S1618C14[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1618C17D1Ev,_ZThn12_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1618C17D0Ev,_ZThn12_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C17__8S1618C14[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn88_N8S1618C17D1Ev,_ZThn44_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn88_N8S1618C17D0Ev,_ZThn44_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C17__8S1618C14[] = {
  ABISELECT(-88,-44),
  ABISELECT(32,16),
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C17__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn120_N8S1618C17D1Ev,_ZThn60_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn120_N8S1618C17D0Ev,_ZThn60_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C17__8S1618C14[] = {
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C17__8S1618C14[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C17__8S1618C14[] = {
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C17__8S1618C14[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn144_N8S1618C17D1Ev,_ZThn72_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn144_N8S1618C17D0Ev,_ZThn72_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C17__8S1618C14[] = {
  ABISELECT(-144,-72),
  ABISELECT(16,8),
  ABISELECT(-144,-72),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C17__8S1618C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn192_N8S1618C17D1Ev,_ZThn100_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn192_N8S1618C17D0Ev,_ZThn100_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C17__8S1618C14[] = {
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C17__8S1618C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-200,-104),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C17__8S1618C14[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C22D1Ev();
extern void _ZN8S1618C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C22__8S1618C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(136,68),
  ABISELECT(112,56),
  ABISELECT(80,40),
  ABISELECT(184,96),
  ABISELECT(176,92),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C23D1Ev();
extern void _ZN8S1618C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C238S1618C22__8S1618C14[] = {
  ABISELECT(176,92),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C238S1618C22__A1__8S1618C14[] = {
  ABISELECT(200,104),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C238S1618C22__A1__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C218S1618C238S1618C22__A1__8S1618C14[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C238S1618C22__A1__8S1618C14[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn216_N8S1618C23D1Ev,_ZThn112_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn216_N8S1618C23D0Ev,_ZThn112_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C238S1618C22__8S1618C14[] = {
  ABISELECT(-216,-112),
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-224,-116),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn296_N8S1618C23D1Ev,_ZThn152_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn296_N8S1618C23D0Ev,_ZThn152_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C238S1618C22__8S1618C14[] = {
  ABISELECT(-296,-152),
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C238S1618C22__8S1618C14[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C238S1618C22__8S1618C14[] = {
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__8S1618C238S1618C22__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C238S1618C22__8S1618C14[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S1618C22D1Ev,_ZThn96_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S1618C22D0Ev,_ZThn96_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S1618C22__8S1618C14[] = {
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C22D1Ev,_ZThn40_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C22D0Ev,_ZThn40_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C22__8S1618C14[] = {
  ABISELECT(-80,-40),
  ABISELECT(32,16),
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C22__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S1618C22D1Ev,_ZThn56_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S1618C22D0Ev,_ZThn56_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C22__8S1618C14[] = {
  ABISELECT(-112,-56),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C22__8S1618C14[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn136_N8S1618C22D1Ev,_ZThn68_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn136_N8S1618C22D0Ev,_ZThn68_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C22__8S1618C14[] = {
  ABISELECT(-136,-68),
  ABISELECT(16,8),
  ABISELECT(-144,-72),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C22__8S1618C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn216_N8S1618C22D1Ev,_ZThn112_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn216_N8S1618C22D0Ev,_ZThn112_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C22__8S1618C14[] = {
  ABISELECT(-216,-112),
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-224,-116),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn296_N8S1618C22D1Ev,_ZThn152_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn296_N8S1618C22D0Ev,_ZThn152_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C22__8S1618C14[] = {
  ABISELECT(-296,-152),
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A3__8S1618C22__8S1618C14[] = {
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C22__8S1618C14[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN8S1618C18D1Ev();
extern void _ZN8S1618C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN8S1618C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C18D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C14[] = {
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C38S1618C18__A2__8S1618C14[] = {
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A2__8S1618C14[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C38S1618C18__A1__8S1618C14[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C18__8S1618C14[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C18__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C18D1Ev,_ZThn48_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C18D0Ev,_ZThn48_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C18__8S1618C14[] = {
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__8S1618C14[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C18__8S1618C14[] = {
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S1618C18D1Ev,_ZThn60_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S1618C18D0Ev,_ZThn60_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C18__8S1618C14[] = {
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-144,-72),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__8S1618C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn168_N8S1618C18D1Ev,_ZThn88_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn168_N8S1618C18D0Ev,_ZThn88_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C18__8S1618C14[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C14[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
extern void ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19__8S1618C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C14[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__8S1618C14[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__8S1618C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C14[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C14[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__8S1618C14[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C14[] = {
  ABISELECT(-144,-72),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__8S1618C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A3__8S1618C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A3__8S1618C14[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C14[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C14[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C8__8S1618C14[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1618C8D1Ev,_ZThn28_N7S1618C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1618C8D0Ev,_ZThn28_N7S1618C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__8S1618C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-200,-104),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C20__8S1618C14[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C20__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C20__8S1618C14[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C14[] = {
  ABISELECT(-120,-64),
  ABISELECT(-208,-108),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__A1__8S1618C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-104,-52),
  ABISELECT(-16,-8),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__A1__8S1618C14[] = {
  0,
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-224,-116),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24__8S1618C14[] = {
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C24__8S1618C14[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C14[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A2__8S1618C14[] = {
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__A4__8S1618C14[] = {
  ABISELECT(-216,-112),
  ABISELECT(-304,-156),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__A4__8S1618C14[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__A2__8S1618C14[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C14[] = {
  {&(_ZTV8S1618C14[17]),  17,159},
  {&(_tg__ZTV8S1618C17__8S1618C14[15]),  15,18},
  {&(_tg__ZTV8S1618C218S1618C17__8S1618C14[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C17__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C218S1618C17__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C17__8S1618C14[7]),  7,9},
  {&(_tg__ZTV8S1618C18__8S1618C17__8S1618C14[13]),  13,15},
  {&(_tg__ZTV8S1618C19__8S1618C17__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C17__8S1618C14[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C17__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C2__8S1618C17__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C17__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C17__8S1618C14[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C17__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C17__8S1618C14[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C17__8S1618C14[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C17__8S1618C14[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C17__8S1618C14[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A1__8S1618C17__8S1618C14[7]),  7,9},
  {&(_tg__ZTV8S1618C22__8S1618C14[15]),  15,18},
  {&(_tg__ZTV8S1618C238S1618C22__8S1618C14[10]),  10,13},
  {&(_tg__ZTV8S1618C218S1618C238S1618C22__A1__8S1618C14[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C238S1618C22__A1__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C218S1618C238S1618C22__A1__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C238S1618C22__A1__8S1618C14[7]),  7,9},
  {&(_tg__ZTV8S1618C24__8S1618C238S1618C22__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C3__8S1618C238S1618C22__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C238S1618C22__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C238S1618C22__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C4__A1__8S1618C238S1618C22__8S1618C14[5]),  5,6},
  {&(_tg__ZTV8S1618C11__8S1618C238S1618C22__8S1618C14[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S1618C22__8S1618C14[3]),  3,5},
  {&(_tg__ZTV8S1618C19__8S1618C22__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C22__8S1618C14[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C22__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C2__8S1618C22__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C22__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C22__8S1618C14[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C22__8S1618C14[5]),  5,7},
  {&(_tg__ZTV8S1618C24__8S1618C22__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C3__A1__8S1618C22__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A3__8S1618C22__8S1618C14[2]),  2,3},
  {&(_tg__ZTV8S1618C11__A1__8S1618C22__8S1618C14[7]),  7,9},
  {&(_ZTV8S1618C14[51]),  51,159},
  {&(_ZTV8S1618C14[72]),  72,159},
  {&(_ZTV8S1618C14[80]),  80,159},
  {&(_ZTV8S1618C14[72]),  72,159},
  {&(_ZTV8S1618C14[87]),  87,159},
  {&(_ZTV8S1618C14[92]),  92,159},
  {&(_ZTV8S1618C14[58]),  58,159},
  {&(_ZTV8S1618C14[63]),  63,159},
  {&(_ZTV8S1618C14[104]),  104,159},
  {&(_ZTV8S1618C14[112]),  112,159},
  {&(_ZTV8S1618C14[117]),  117,159},
  {&(_ZTV8S1618C14[126]),  126,159},
  {&(_ZTV8S1618C14[134]),  134,159},
  {&(_ZTV8S1618C14[35]),  35,159},
  {&(_ZTV8S1618C14[144]),  144,159},
  {&(_ZTV8S1618C14[153]),  153,159},
  {&(_ZTV8S1618C14[158]),  158,159},
  {&(_tg__ZTV8S1618C18__8S1618C14[11]),  11,13},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C14[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C38S1618C18__A2__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A2__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C38S1618C18__A1__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C19__8S1618C18__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C18__8S1618C14[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C18__8S1618C14[8]),  8,11},
  {&(_tg__ZTV7S1618C2__8S1618C18__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A1__8S1618C18__8S1618C14[5]),  5,8},
  {&(_tg__ZTV7S1618C8__8S1618C18__8S1618C14[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__8S1618C14[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C18__8S1618C14[3]),  3,5},
  {&(_tg__ZTV8S1618C19__8S1618C14[7]),  7,10},
  {&(_tg__ZTV7S1618C4__8S1618C19__8S1618C14[5]),  5,6},
  {&(_tg__ZTV8S1618C19__8S1618C14[7]),  7,10},
  {&(_tg__ZTV7S1618C2__8S1618C19__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C4__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C14[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__8S1618C14[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A1__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A1__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C8__8S1618C14[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__8S1618C14[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A3__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A3__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C14[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C97S1618C8__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__8S1618C14[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C8__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__8S1618C14[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__8S1618C14[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C14[7]),  7,8},
  {&(_tg__ZTV8S1618C11__8S1618C20__8S1618C14[7]),  7,9},
  {&(_tg__ZTV7S1618C4__8S1618C20__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C20__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C11__A1__8S1618C14[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__A1__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__A1__8S1618C14[3]),  3,4},
  {&(_tg__ZTV8S1618C24__8S1618C14[7]),  7,10},
  {&(_tg__ZTV7S1618C3__8S1618C24__8S1618C14[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C24__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C14[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A2__8S1618C14[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__A4__8S1618C14[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__A4__8S1618C14[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__A2__8S1618C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C14[];
extern  VTBL_ENTRY _ZTV8S1618C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C14[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1618C8D0Ev,_ZThn28_N7S1618C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1618C8D1Ev,_ZThn28_N7S1618C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D0Ev,_ZThn16_N8S1618C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1618C19D1Ev,_ZThn16_N8S1618C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C18D0Ev,_ZThn88_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C18D1Ev,_ZThn88_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C18D0Ev,_ZThn60_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C18D1Ev,_ZThn60_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C18D0Ev,_ZThn48_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C18D1Ev,_ZThn48_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1618C22D0Ev,_ZThn68_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1618C22D1Ev,_ZThn68_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C22D0Ev,_ZThn152_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1618C22D0Ev,_ZThn56_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C22D1Ev,_ZThn152_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1618C22D1Ev,_ZThn56_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C22D0Ev,_ZThn112_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C22D0Ev,_ZThn40_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C22D1Ev,_ZThn112_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C22D1Ev,_ZThn40_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S1618C22D0Ev,_ZThn96_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S1618C22D1Ev,_ZThn96_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C23D0Ev,_ZThn152_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C23D1Ev,_ZThn152_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C23D0Ev,_ZThn112_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C23D1Ev,_ZThn112_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S1618C17D0Ev,_ZThn100_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S1618C17D1Ev,_ZThn100_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1618C17D0Ev,_ZThn72_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1618C17D1Ev,_ZThn72_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C17D0Ev,_ZThn60_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C17D1Ev,_ZThn60_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1618C17D0Ev,_ZThn44_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1618C17D1Ev,_ZThn44_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C17D0Ev,_ZThn12_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C17D1Ev,_ZThn12_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S1618C14D0Ev,_ZThn100_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S1618C14D1Ev,_ZThn100_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1618C14D0Ev,_ZThn72_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1618C14D1Ev,_ZThn72_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S1618C14D0Ev,_ZThn156_N8S1618C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C14D0Ev,_ZThn60_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S1618C14D1Ev,_ZThn156_N8S1618C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1618C14D1Ev,_ZThn60_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S1618C14D0Ev,_ZThn116_N8S1618C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1618C14D0Ev,_ZThn44_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S1618C14D1Ev,_ZThn116_N8S1618C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1618C14D1Ev,_ZThn44_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C14D0Ev,_ZThn12_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C14D1Ev,_ZThn12_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C14 = {  "S1618C14", // class name
  bases_S1618C14, 44,
  &(vtc_S1618C14[0]), // expected_vtbl_contents
  &(vtt_S1618C14[0]), // expected_vtt_contents
  ABISELECT(328,168), // object size
  NSPAIRA(_ZTI8S1618C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1618C14),159, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C14),116, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C25  : virtual S19894C17_nt , virtual S1618C4 , S1618C6 , virtual S1618C24 {
  virtual  ~S1618C25(); // _ZN8S1618C25D2Ev
  S1618C25(); // tgen
};
//SIG(-1 S1618C25) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ v1} FC5} BC5 VBC6{ VBC7{ BC3 BC4 BC5 vd} VBC8{ m Fp} Fp[9]} vd}


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

static void Test_S1618C25()
{
  extern Class_Descriptor cd_S1618C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S1618C25, buf);
    S1618C25 *dp, &lv = *(dp=new (buf) S1618C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S1618C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C25)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S1618C25");
    /*is_ambiguous_... S1618C25::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), 0, "S1618C25");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), 0, "S1618C25");
    /*is_ambiguous_... S1618C25::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(8,4), "S1618C25");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), ABISELECT(8,4), "S1618C25");
    /*is_ambiguous_... S1618C25::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*), ABISELECT(8,4), "S1618C25");
    /*is_ambiguous_... S1618C25::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*), 0, "S1618C25");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(104,52), "S1618C25");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(104,52), "S1618C25");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(120,60), "S1618C25");
    check_base_class_offset(lv, (S1618C3*)(S1618C24*), ABISELECT(104,52), "S1618C25");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C24*), ABISELECT(128,64), "S1618C25");
    check_base_class_offset(lv, (S1618C24*), ABISELECT(24,12), "S1618C25");
    test_class_info(&lv, &cd_S1618C25);
    dp->~S1618C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C25(Test_S1618C25, "S1618C25", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN8S1618C25C1Ev();
extern void _ZN8S1618C25D2Ev();
Name_Map name_map_S1618C25[] = {
  NSPAIR(_ZN8S1618C25C1Ev),
  NSPAIR(_ZN8S1618C25D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C24;
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
static Base_Class bases_S1618C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C4,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(120,60), //bcp->offset
    38, //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
    8, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(104,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1618C24,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C25[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C25D1Ev();
extern void _ZN8S1618C25D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S1618C25D1Ev,_ZThn12_N8S1618C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev)();
extern void ABISELECT(_ZThn24_N8S1618C25D0Ev,_ZThn12_N8S1618C25D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev)();
extern void ABISELECT(_ZThn104_N8S1618C25D1Ev,_ZThn52_N8S1618C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev)();
extern void ABISELECT(_ZThn104_N8S1618C25D0Ev,_ZThn52_N8S1618C25D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C25[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C25D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S1618C25[];
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C25[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C25[] = {
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24__8S1618C25[] = {
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C24__8S1618C25[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C25[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C25[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__A1__8S1618C25[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__A1__8S1618C25[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__8S1618C25[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTT_ENTRY vtt_S1618C25[] = {
  {&(_ZTV8S1618C25[9]),  9,41},
  {&(_ZTV8S1618C25[17]),  17,41},
  {&(_ZTV8S1618C25[17]),  17,41},
  {&(_ZTV8S1618C25[26]),  26,41},
  {&(_ZTV8S1618C25[35]),  35,41},
  {&(_ZTV8S1618C25[40]),  40,41},
  {&(_tg__ZTV7S1618C4__8S1618C25[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C25[5]),  5,6},
  {&(_tg__ZTV8S1618C24__8S1618C25[7]),  7,10},
  {&(_tg__ZTV7S1618C3__8S1618C24__8S1618C25[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C24__8S1618C25[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C24__8S1618C25[2]),  2,3},
  {&(_tg__ZTV7S1618C3__8S1618C25[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__A1__8S1618C25[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__A1__8S1618C25[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__8S1618C25[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1618C25[];
extern  VTBL_ENTRY _ZTV8S1618C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C25[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1618C25D0Ev,_ZThn52_N8S1618C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1618C25D1Ev,_ZThn52_N8S1618C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C25D0Ev,_ZThn12_N8S1618C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1618C25D1Ev,_ZThn12_N8S1618C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C25 = {  "S1618C25", // class name
  bases_S1618C25, 11,
  &(vtc_S1618C25[0]), // expected_vtbl_contents
  &(vtt_S1618C25[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI8S1618C25),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1618C25),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C25),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C27  : virtual S3223C8_nt {
  void *s1618c27f0;
  ~S1618C27(); // tgen
  S1618C27(); // tgen
};
//SIG(-1 S1618C27) C1{ VBC2{ m Fi} Fp}


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

static void Test_S1618C27()
{
  extern Class_Descriptor cd_S1618C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1618C27, buf);
    S1618C27 *dp, &lv = *(dp=new (buf) S1618C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1618C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C27)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(16,8), "S1618C27");
    check_field_offset(lv, s1618c27f0, ABISELECT(8,4), "S1618C27.s1618c27f0");
    test_class_info(&lv, &cd_S1618C27);
    dp->~S1618C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C27(Test_S1618C27, "S1618C27", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S1618C27C1Ev();
extern void _ZN8S1618C27D1Ev();
Name_Map name_map_S1618C27[] = {
  NSPAIR(_ZN8S1618C27C1Ev),
  NSPAIR(_ZN8S1618C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S1618C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C27[];
static  VTBL_ENTRY vtc_S1618C27[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C27[0]),
};
extern VTBL_ENTRY _ZTV8S1618C27[];
static  VTT_ENTRY vtt_S1618C27[] = {
  {&(_ZTV8S1618C27[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1618C27[];
extern  VTBL_ENTRY _ZTV8S1618C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C27[];
Class_Descriptor cd_S1618C27 = {  "S1618C27", // class name
  bases_S1618C27, 1,
  &(vtc_S1618C27[0]), // expected_vtbl_contents
  &(vtt_S1618C27[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S1618C27),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1618C27),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C27),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  S1618C26  : virtual S1618C27 {
  virtual  ~S1618C26(); // _ZN8S1618C26D2Ev
  S1618C26(); // tgen
};
//SIG(-1 S1618C26) C1{ VBC2{ VBC3{ m Fi} Fp} vd}


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

static void Test_S1618C26()
{
  extern Class_Descriptor cd_S1618C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1618C26, buf);
    S1618C26 *dp, &lv = *(dp=new (buf) S1618C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1618C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C26)");
    check_base_class_offset(lv, (S3223C8_nt*)(S1618C27*), ABISELECT(24,12), "S1618C26");
    check_base_class_offset(lv, (S1618C27*), ABISELECT(8,4), "S1618C26");
    test_class_info(&lv, &cd_S1618C26);
    dp->~S1618C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C26(Test_S1618C26, "S1618C26", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1618C26C1Ev();
extern void _ZN8S1618C26D2Ev();
Name_Map name_map_S1618C26[] = {
  NSPAIR(_ZN8S1618C26C1Ev),
  NSPAIR(_ZN8S1618C26D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S1618C27;
extern VTBL_ENTRY _ZTI8S1618C27[];
extern  VTBL_ENTRY _ZTV8S1618C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C27[];
static Base_Class bases_S1618C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S1618C27,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1618C26[];
extern void _ZN8S1618C26D1Ev();
extern void _ZN8S1618C26D0Ev();
static  VTBL_ENTRY vtc_S1618C26[] = {
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C26[0]),
  (VTBL_ENTRY)&_ZN8S1618C26D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C26D0Ev,
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C26[0]),
};
extern VTBL_ENTRY _ZTV8S1618C26[];
static  VTBL_ENTRY _tg__ZTV8S1618C27__8S1618C26[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C27[0]),
};
static  VTT_ENTRY vtt_S1618C26[] = {
  {&(_ZTV8S1618C26[4]),  4,9},
  {&(_ZTV8S1618C26[9]),  9,9},
  {&(_tg__ZTV8S1618C27__8S1618C26[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1618C26[];
extern  VTBL_ENTRY _ZTV8S1618C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C26[];
Class_Descriptor cd_S1618C26 = {  "S1618C26", // class name
  bases_S1618C26, 2,
  &(vtc_S1618C26[0]), // expected_vtbl_contents
  &(vtt_S1618C26[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1618C26),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1618C26),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1618C26),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  S1618C7  : S1618C8 , virtual S1618C2 , S1618C14 , S1618C25 , S1618C26 {
  ~S1618C7(); // tgen
  S1618C7(); // tgen
};
//SIG(-1 S1618C7) C1{ BC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} BC6{ BC3 VBC7{ m Fp} BC8{ BC5 BC7 VBC3 v2} Fi} VBC9{ vd m} BC4 VBC10{ m} vd FC4} VBC11{ BC12{ BC3 BC4 BC5 vd}} BC13{ BC14{ m} BC15{ m} BC16{ VBC4 VBC17{ VBC18{ BC7 BC10 VBC3 VBC11} BC9 BC12 VBC2 Fp[4]} VBC19{ VBC8} BC20{ VBC3 VBC8} vd} BC21{ VBC9 VBC18 VBC2 BC22{ VBC23{ VBC12 VBC7 Fp[9]} BC4 BC20 vd Fp} vd} vd} BC24{ VBC10 VBC3 BC5 VBC23 vd} BC25{ VBC26{ VBC27{ m Fi} Fp} vd}}


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

static void Test_S1618C7()
{
  extern Class_Descriptor cd_S1618C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,54)];
    init_test(&cd_S1618C7, buf);
    S1618C7 *dp, &lv = *(dp=new (buf) S1618C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,212), "sizeof(S1618C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C7)");
    /*is_ambiguous_... S1618C7::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(96,52), "S1618C7");
    check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C17::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C17*)(S1618C14*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(80,44), "S1618C7");
    check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C19*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(80,44), "S1618C7");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C17*)(S1618C14*), ABISELECT(80,44), "S1618C7");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C23*)(S1618C22*)(S1618C14*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C25::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C25*), ABISELECT(80,44), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), 0, "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(96,52), "S1618C7");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C24*), ABISELECT(96,52), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(16,8), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(24,12), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(16,8), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C9*)(S1618C8*), 0, "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(104,56), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(104,56), "S1618C7");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C22*)(S1618C14*), ABISELECT(104,56), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), 0, "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C7");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C25*), 0, "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C8*), 0, "S1618C7");
    check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(112,60), "S1618C7");
    /*is_ambiguous_... S1618C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(112,60), "S1618C7");
    /*is_ambiguous_... S1618C3::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(128,68), "S1618C7");
    check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(112,60), "S1618C7");
    check_base_class_offset(lv, (S1618C2*), ABISELECT(112,60), "S1618C7");
    check_base_class_offset(lv, (S1618C2*)(S1618C19*), ABISELECT(112,60), "S1618C7");
    check_base_class_offset(lv, (S3619C26*)(S1618C14*), ABISELECT(40,24), "S1618C7");
    check_base_class_offset(lv, (S3619C16*)(S1618C14*), ABISELECT(40,24), "S1618C7");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C19*), ABISELECT(208,108), "S1618C7");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C19*), ABISELECT(200,104), "S1618C7");
    check_base_class_offset(lv, (S1618C19*)(S1618C18*), ABISELECT(200,104), "S1618C7");
    check_base_class_offset(lv, (S1618C19*)(S1618C22*)(S1618C14*), ABISELECT(200,104), "S1618C7");
    /*is_ambiguous_... S1618C18::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C18*), ABISELECT(136,72), "S1618C7");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(144,76), "S1618C7");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C18*), ABISELECT(144,76), "S1618C7");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C18*), ABISELECT(160,84), "S1618C7");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C3*)(S1618C18*), ABISELECT(144,76), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(216,112), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(232,120), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(240,124), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(232,120), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C9*)(S1618C8*), ABISELECT(216,112), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), ABISELECT(216,112), "S1618C7");
    check_base_class_offset(lv, (S1618C8*)(S1618C18*), ABISELECT(216,112), "S1618C7");
    check_base_class_offset(lv, (S1618C8*)(S1618C22*)(S1618C14*), ABISELECT(216,112), "S1618C7");
    check_base_class_offset(lv, (S1618C18*)(S1618C17*)(S1618C14*), ABISELECT(136,72), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(264,140), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C11 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(272,144), "S1618C7");
    check_base_class_offset(lv, (S1618C11*)(S1618C20*), ABISELECT(264,140), "S1618C7");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C17*)(S1618C14*), ABISELECT(264,140), "S1618C7");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C23*)(S1618C22*)(S1618C14*), ABISELECT(264,140), "S1618C7");
    check_base_class_offset(lv, (S1618C20*)(S1618C17*)(S1618C14*), ABISELECT(256,136), "S1618C7");
    check_base_class_offset(lv, (S1618C21*)(S1618C17*)(S1618C14*), ABISELECT(40,24), "S1618C7");
    check_base_class_offset(lv, (S1618C17*)(S1618C14*), ABISELECT(40,24), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(360,188), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(360,188), "S1618C7");
    /*is_ambiguous_... S1618C7::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(376,196), "S1618C7");
    check_base_class_offset(lv, (S1618C3*)(S1618C24*), ABISELECT(360,188), "S1618C7");
    check_base_class_offset(lv, (S1618C24*)(S1618C23*)(S1618C22*)(S1618C14*), ABISELECT(280,148), "S1618C7");
    check_base_class_offset(lv, (S1618C24*)(S1618C25*), ABISELECT(280,148), "S1618C7");
    /*is_ambiguous_... S1618C23::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C23*)(S1618C22*)(S1618C14*), ABISELECT(48,28), "S1618C7");
    check_base_class_offset(lv, (S1618C21*)(S1618C23*)(S1618C22*)(S1618C14*), ABISELECT(48,28), "S1618C7");
    check_base_class_offset(lv, (S1618C23*)(S1618C22*)(S1618C14*), ABISELECT(48,28), "S1618C7");
    check_base_class_offset(lv, (S1618C22*)(S1618C14*), ABISELECT(48,28), "S1618C7");
    check_base_class_offset(lv, (S1618C14*), ABISELECT(40,24), "S1618C7");
    /*is_ambiguous_... S1618C25::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C25*), ABISELECT(64,36), "S1618C7");
    check_base_class_offset(lv, (S1618C25*), ABISELECT(64,36), "S1618C7");
    check_base_class_offset(lv, (S3223C8_nt*)(S1618C27*), ABISELECT(400,208), "S1618C7");
    check_base_class_offset(lv, (S1618C27*)(S1618C26*), ABISELECT(384,200), "S1618C7");
    check_base_class_offset(lv, (S1618C26*), ABISELECT(72,40), "S1618C7");
    test_class_info(&lv, &cd_S1618C7);
    dp->~S1618C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C7(Test_S1618C7, "S1618C7", ABISELECT(408,212));

#else // __cplusplus

extern void _ZN7S1618C7C1Ev();
extern void _ZN7S1618C7D1Ev();
Name_Map name_map_S1618C7[] = {
  NSPAIR(_ZN7S1618C7C1Ev),
  NSPAIR(_ZN7S1618C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C19;
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C18;
extern VTBL_ENTRY _ZTI8S1618C18[];
extern  VTBL_ENTRY _ZTV8S1618C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C18[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C20;
extern VTBL_ENTRY _ZTI8S1618C20[];
extern  VTBL_ENTRY _ZTV8S1618C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C20[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C17;
extern VTBL_ENTRY _ZTI8S1618C17[];
extern  VTBL_ENTRY _ZTV8S1618C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C17[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C24;
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C23;
extern VTBL_ENTRY _ZTI8S1618C23[];
extern  VTBL_ENTRY _ZTV8S1618C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C23[];
extern Class_Descriptor cd_S1618C22;
extern VTBL_ENTRY _ZTI8S1618C22[];
extern  VTBL_ENTRY _ZTV8S1618C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C22[];
extern Class_Descriptor cd_S1618C14;
extern VTBL_ENTRY _ZTI8S1618C14[];
extern  VTBL_ENTRY _ZTV8S1618C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C14[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C25;
extern VTBL_ENTRY _ZTI8S1618C25[];
extern  VTBL_ENTRY _ZTV8S1618C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C25[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S1618C27;
extern VTBL_ENTRY _ZTI8S1618C27[];
extern  VTBL_ENTRY _ZTV8S1618C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C27[];
extern Class_Descriptor cd_S1618C26;
extern VTBL_ENTRY _ZTI8S1618C26[];
extern  VTBL_ENTRY _ZTV8S1618C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C26[];
static Base_Class bases_S1618C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(80,44), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1618C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    28, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1618C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(104,56), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S1618C8,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C4,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(128,68), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(112,60), //bcp->offset
    96, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1618C19,    ABISELECT(200,104), //bcp->offset
    134, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(160,84), //bcp->offset
    131, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(144,76), //bcp->offset
    123, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(232,120), //bcp->offset
    159, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1618C8,    ABISELECT(216,112), //bcp->offset
    145, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S1618C18,    ABISELECT(136,72), //bcp->offset
    108, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(264,140), //bcp->offset
    174, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S1618C20,    ABISELECT(256,136), //bcp->offset
    166, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S1618C21,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S1618C17,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(360,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(360,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(376,196), //bcp->offset
    203, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(360,188), //bcp->offset
    194, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S1618C24,    ABISELECT(280,148), //bcp->offset
    183, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S1618C21,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S1618C23,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1618C22,    ABISELECT(48,28), //bcp->offset
    49, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1618C14,    ABISELECT(40,24), //bcp->offset
    29, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C6,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1618C25,    ABISELECT(64,36), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3223C8_nt,    ABISELECT(400,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S1618C27,    ABISELECT(384,200), //bcp->offset
    206, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S1618C26,    ABISELECT(72,40), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1618C7[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C7D1Ev();
extern void _ZN7S1618C7D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn40_N7S1618C7D1Ev,_ZThn24_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S1618C7D0Ev,_ZThn24_N7S1618C7D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn48_N7S1618C7D1Ev,_ZThn28_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn48_N7S1618C7D0Ev,_ZThn28_N7S1618C7D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn64_N7S1618C7D1Ev,_ZThn36_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S1618C7D0Ev,_ZThn36_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn72_N7S1618C7D1Ev,_ZThn40_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn72_N7S1618C7D0Ev,_ZThn40_N7S1618C7D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S1618C7D1Ev,_ZTv0_n12_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S1618C7D1Ev,_ZThn56_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C7D0Ev,_ZTv0_n12_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S1618C7D0Ev,_ZThn56_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S1618C7D1Ev,_ZThn60_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S1618C7D0Ev,_ZThn60_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N7S1618C7D1Ev,_ZTv0_n48_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S1618C7D1Ev,_ZThn72_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S1618C7D0Ev,_ZTv0_n48_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn136_N7S1618C7D0Ev,_ZThn72_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N7S1618C7D1Ev,_ZTvn4_n48_N7S1618C7D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N7S1618C7D0Ev,_ZTvn4_n48_N7S1618C7D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn200_N7S1618C7D1Ev,_ZThn104_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn200_N7S1618C7D0Ev,_ZThn104_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S1618C7D1Ev,_ZTv0_n44_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn216_N7S1618C7D1Ev,_ZThn112_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1618C7D0Ev,_ZTv0_n44_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn216_N7S1618C7D0Ev,_ZThn112_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn280_N7S1618C7D1Ev,_ZThn148_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn280_N7S1618C7D0Ev,_ZThn148_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn360_N7S1618C7D1Ev,_ZThn188_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn360_N7S1618C7D0Ev,_ZThn188_N7S1618C7D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY vtc_S1618C7[] = {
  ABISELECT(400,208),
  ABISELECT(384,200),
  ABISELECT(360,188),
  ABISELECT(280,148),
  ABISELECT(264,140),
  ABISELECT(256,136),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(136,72),
  ABISELECT(112,60),
  0,
  ABISELECT(104,56),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C7D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C7D0Ev,
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(-40,-24),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S1618C7D1Ev,_ZThn24_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S1618C7D0Ev,_ZThn24_N7S1618C7D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S1618C7D1Ev,_ZThn28_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S1618C7D0Ev,_ZThn28_N7S1618C7D0Ev),
  ABISELECT(32,16),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1618C7D1Ev,_ZThn36_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1618C7D0Ev,_ZThn36_N7S1618C7D0Ev),
  ABISELECT(328,168),
  ABISELECT(312,160),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S1618C7D1Ev,_ZThn40_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S1618C7D0Ev,_ZThn40_N7S1618C7D0Ev),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C7D1Ev,_ZTv0_n12_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C7D0Ev,_ZTv0_n12_N7S1618C7D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(24,12),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S1618C7D1Ev,_ZTv0_n48_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S1618C7D0Ev,_ZTv0_n48_N7S1618C7D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S1618C7D1Ev,_ZTvn4_n48_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S1618C7D0Ev,_ZTvn4_n48_N7S1618C7D0Ev),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-200,-104),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(16,8),
  ABISELECT(-216,-112),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1618C7D1Ev,_ZTv0_n44_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1618C7D0Ev,_ZTv0_n44_N7S1618C7D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-176,-92),
  ABISELECT(-160,-84),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-280,-148),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(80,40),
  ABISELECT(-200,-104),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev),
  ABISELECT(-360,-188),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-360,-188),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev),
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(16,8),
  ABISELECT(-384,-200),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
};
extern VTBL_ENTRY _ZTV7S1618C7[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__A__7S1618C7[] = {
  0,
  ABISELECT(104,56),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__7S1618C7[] = {
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A1__7S1618C7[] = {
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A1__7S1618C7[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__7S1618C7[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__7S1618C7[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__A__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__A__7S1618C7[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZThn104_N7S1618C8D1Ev,_ZThn56_N7S1618C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
extern void ABISELECT(_ZThn104_N7S1618C8D0Ev,_ZThn56_N7S1618C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__A__7S1618C7[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C14D1Ev();
extern void _ZN8S1618C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C14__7S1618C7[] = {
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(-40,-24),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C14D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C17D1Ev();
extern void _ZN8S1618C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(216,112),
  ABISELECT(-40,-24),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(224,116),
  ABISELECT(40,20),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C178S1618C14__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C178S1618C14__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C17D1Ev,_ZThn48_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C17D0Ev,_ZThn48_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(24,12),
  ABISELECT(-96,-48),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn160_N8S1618C17D1Ev,_ZThn80_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn160_N8S1618C17D0Ev,_ZThn80_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-160,-80),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C178S1618C14__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn72_N8S1618C17D1Ev,_ZThn36_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn72_N8S1618C17D0Ev,_ZThn36_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn176_N8S1618C17D1Ev,_ZThn88_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn176_N8S1618C17D0Ev,_ZThn88_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-176,-88),
  ABISELECT(16,8),
  ABISELECT(-216,-112),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C17D1Ev,_ZThn32_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C17D0Ev,_ZThn32_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C178S1618C14__7S1618C7[] = {
  ABISELECT(-176,-92),
  ABISELECT(-160,-84),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-176,-92),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C178S1618C14__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C22D1Ev();
extern void _ZN8S1618C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-48,-28),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C23D1Ev();
extern void _ZN8S1618C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C238S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[] = {
  ABISELECT(216,112),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn232_N8S1618C23D1Ev,_ZThn120_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn232_N8S1618C23D0Ev,_ZThn120_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C238S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-232,-120),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(80,40),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn312_N8S1618C23D1Ev,_ZThn160_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn312_N8S1618C23D0Ev,_ZThn160_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C238S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-312,-160),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__8S1618C238S1618C228S1618C14__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C238S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C238S1618C228S1618C14__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn56_N8S1618C22D1Ev,_ZThn28_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn56_N8S1618C22D0Ev,_ZThn28_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S1618C22D1Ev,_ZThn76_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S1618C22D0Ev,_ZThn76_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C228S1618C14__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C22D1Ev,_ZThn32_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C22D0Ev,_ZThn32_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S1618C22D1Ev,_ZThn84_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S1618C22D0Ev,_ZThn84_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-168,-84),
  ABISELECT(16,8),
  ABISELECT(-216,-112),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn232_N8S1618C22D1Ev,_ZThn120_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn232_N8S1618C22D0Ev,_ZThn120_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-232,-120),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(80,40),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn312_N8S1618C22D1Ev,_ZThn160_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn312_N8S1618C22D0Ev,_ZThn160_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-312,-160),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A3__8S1618C228S1618C14__7S1618C7[] = {
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C228S1618C14__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C14D1Ev,_ZThn48_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C14D0Ev,_ZThn48_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C14__7S1618C7[] = {
  ABISELECT(24,12),
  ABISELECT(-96,-48),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S1618C14D1Ev,_ZThn80_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S1618C14D0Ev,_ZThn80_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C14__7S1618C7[] = {
  ABISELECT(-160,-80),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C14__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S1618C14D1Ev,_ZThn36_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S1618C14D0Ev,_ZThn36_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C14__7S1618C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C14__7S1618C7[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C14D1Ev,_ZTvn4_n48_N8S1618C14D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C14D0Ev,_ZTvn4_n48_N8S1618C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C14__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C14D1Ev,_ZTvn4_n48_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C14D0Ev,_ZTvn4_n48_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C14__7S1618C7[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn176_N8S1618C14D1Ev,_ZThn88_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn176_N8S1618C14D0Ev,_ZThn88_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C14__7S1618C7[] = {
  ABISELECT(-176,-88),
  ABISELECT(16,8),
  ABISELECT(-216,-112),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C14__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C14D1Ev,_ZThn32_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C14D0Ev,_ZThn32_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C14__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C14__7S1618C7[] = {
  ABISELECT(-176,-92),
  ABISELECT(-160,-84),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-176,-92),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C14__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C14D1Ev,_ZThn4_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C14D0Ev,_ZThn4_N8S1618C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C22__8S1618C14__7S1618C7[] = {
  ABISELECT(-48,-28),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C14D1Ev,_ZThn4_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C14D0Ev,_ZThn4_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn240_N8S1618C14D1Ev,_ZThn124_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn240_N8S1618C14D0Ev,_ZThn124_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C14__7S1618C7[] = {
  ABISELECT(-240,-124),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(80,40),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn320_N8S1618C14D1Ev,_ZThn164_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn320_N8S1618C14D0Ev,_ZThn164_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__A2__8S1618C14__7S1618C7[] = {
  ABISELECT(-320,-164),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A5__8S1618C14__7S1618C7[] = {
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C25D1Ev();
extern void _ZN8S1618C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C25__7S1618C7[] = {
  ABISELECT(32,16),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C25D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C25__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev)();
extern void ABISELECT(_ZThn216_N8S1618C25D1Ev,_ZThn112_N8S1618C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev)();
extern void ABISELECT(_ZThn216_N8S1618C25D0Ev,_ZThn112_N8S1618C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C25__7S1618C7[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(80,40),
  ABISELECT(-200,-104),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev)();
extern void ABISELECT(_ZThn296_N8S1618C25D1Ev,_ZThn152_N8S1618C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev)();
extern void ABISELECT(_ZThn296_N8S1618C25D0Ev,_ZThn152_N8S1618C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C25__7S1618C7[] = {
  ABISELECT(-296,-152),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A2__8S1618C25__7S1618C7[] = {
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN8S1618C26D1Ev();
extern void _ZN8S1618C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C26__7S1618C7[] = {
  ABISELECT(328,168),
  ABISELECT(312,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C26[0]),
  (VTBL_ENTRY)&_ZN8S1618C26D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C26D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1618C27__8S1618C26__7S1618C7[] = {
  ABISELECT(16,8),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C26[0]),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__7S1618C7[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__7S1618C7[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A2__7S1618C7[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A2__7S1618C7[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__7S1618C7[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__7S1618C7[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN8S1618C18D1Ev();
extern void _ZN8S1618C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C18__7S1618C7[] = {
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN8S1618C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C18D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C38S1618C18__A3__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A3__7S1618C7[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C38S1618C18__A1__7S1618C7[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C18__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C18__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C18__7S1618C7[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__7S1618C7[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C18__7S1618C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C18D1Ev,_ZThn40_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C18D0Ev,_ZThn40_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C18__7S1618C7[] = {
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(-216,-112),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C18__7S1618C7[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C19__7S1618C7[] = {
  ABISELECT(-88,-44),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19__7S1618C7[] = {
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__7S1618C7[] = {
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__A1__7S1618C7[] = {
  ABISELECT(-216,-112),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__A1__7S1618C7[] = {
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A4__7S1618C7[] = {
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A4__7S1618C7[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__A1__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__A1__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__A1__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__A1__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__A1__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__A1__7S1618C7[] = {
  ABISELECT(-152,-76),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__A1__7S1618C7[] = {
  ABISELECT(112,56),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__7S1618C7[] = {
  ABISELECT(-176,-92),
  ABISELECT(-160,-84),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C20__7S1618C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C20__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A2__7S1618C7[] = {
  ABISELECT(-184,-96),
  ABISELECT(-168,-88),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__A2__7S1618C7[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C24__7S1618C7[] = {
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(80,40),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24__7S1618C7[] = {
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C24__7S1618C7[] = {
  0,
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C24__7S1618C7[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A2__7S1618C7[] = {
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__A5__7S1618C7[] = {
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__A5__7S1618C7[] = {
  0,
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__A2__7S1618C7[] = {
  0,
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1618C27__7S1618C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C27[0]),
};
static  VTT_ENTRY vtt_S1618C7[] = {
  {&(_ZTV7S1618C7[19]),  19,209},
  {&(_tg__ZTV7S1618C8__A__7S1618C7[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__7S1618C7[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A1__7S1618C7[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__7S1618C7[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__7S1618C7[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__A__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__A__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__A__7S1618C7[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__A__7S1618C7[3]),  3,5},
  {&(_tg__ZTV8S1618C14__7S1618C7[17]),  17,20},
  {&(_tg__ZTV8S1618C178S1618C14__7S1618C7[15]),  15,18},
  {&(_tg__ZTV8S1618C218S1618C178S1618C14__7S1618C7[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C178S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C178S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C178S1618C14__7S1618C7[7]),  7,9},
  {&(_tg__ZTV8S1618C18__8S1618C178S1618C14__7S1618C7[13]),  13,15},
  {&(_tg__ZTV8S1618C19__8S1618C178S1618C14__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C178S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C178S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C2__8S1618C178S1618C14__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C178S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C178S1618C14__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C178S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C178S1618C14__7S1618C7[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C178S1618C14__7S1618C7[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C178S1618C14__7S1618C7[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C178S1618C14__7S1618C7[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A1__8S1618C178S1618C14__7S1618C7[7]),  7,9},
  {&(_tg__ZTV8S1618C228S1618C14__7S1618C7[15]),  15,18},
  {&(_tg__ZTV8S1618C238S1618C228S1618C14__7S1618C7[10]),  10,13},
  {&(_tg__ZTV8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C238S1618C228S1618C14__A1__7S1618C7[7]),  7,9},
  {&(_tg__ZTV8S1618C24__8S1618C238S1618C228S1618C14__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C3__8S1618C238S1618C228S1618C14__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C4__A1__8S1618C238S1618C228S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C238S1618C228S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C4__A1__8S1618C238S1618C228S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C11__8S1618C238S1618C228S1618C14__7S1618C7[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S1618C228S1618C14__7S1618C7[3]),  3,5},
  {&(_tg__ZTV8S1618C19__8S1618C228S1618C14__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C228S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C228S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C2__8S1618C228S1618C14__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C228S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C228S1618C14__7S1618C7[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C228S1618C14__7S1618C7[5]),  5,7},
  {&(_tg__ZTV8S1618C24__8S1618C228S1618C14__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C3__A1__8S1618C228S1618C14__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A3__8S1618C228S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV8S1618C11__A1__8S1618C228S1618C14__7S1618C7[7]),  7,9},
  {&(_tg__ZTV8S1618C18__8S1618C14__7S1618C7[13]),  13,15},
  {&(_tg__ZTV8S1618C19__8S1618C14__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C14__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C2__8S1618C14__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C14__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C14__7S1618C7[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C14__7S1618C7[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C14__7S1618C7[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C14__7S1618C7[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A1__8S1618C14__7S1618C7[7]),  7,9},
  {&(_tg__ZTV8S1618C22__8S1618C14__7S1618C7[15]),  15,18},
  {&(_tg__ZTV8S1618C24__8S1618C14__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C3__A2__8S1618C14__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A5__8S1618C14__7S1618C7[2]),  2,3},
  {&(_tg__ZTV8S1618C25__7S1618C7[9]),  9,12},
  {&(_tg__ZTV7S1618C4__8S1618C25__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C25__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C24__8S1618C25__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C3__8S1618C25__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A2__8S1618C25__7S1618C7[2]),  2,3},
  {&(_tg__ZTV8S1618C26__7S1618C7[4]),  4,6},
  {&(_tg__ZTV8S1618C27__8S1618C26__7S1618C7[3]),  3,3},
  {&(_ZTV7S1618C7[90]),  90,209},
  {&(_ZTV7S1618C7[90]),  90,209},
  {&(_ZTV7S1618C7[27]),  27,209},
  {&(_ZTV7S1618C7[94]),  94,209},
  {&(_ZTV7S1618C7[102]),  102,209},
  {&(_ZTV7S1618C7[107]),  107,209},
  {&(_ZTV7S1618C7[46]),  46,209},
  {&(_ZTV7S1618C7[121]),  121,209},
  {&(_ZTV7S1618C7[142]),  142,209},
  {&(_ZTV7S1618C7[128]),  128,209},
  {&(_ZTV7S1618C7[133]),  133,209},
  {&(_ZTV7S1618C7[156]),  156,209},
  {&(_ZTV7S1618C7[164]),  164,209},
  {&(_ZTV7S1618C7[173]),  173,209},
  {&(_ZTV7S1618C7[181]),  181,209},
  {&(_ZTV7S1618C7[64]),  64,209},
  {&(_ZTV7S1618C7[191]),  191,209},
  {&(_ZTV7S1618C7[200]),  200,209},
  {&(_ZTV7S1618C7[205]),  205,209},
  {&(_ZTV7S1618C7[76]),  76,209},
  {&(_ZTV7S1618C7[83]),  83,209},
  {&(_ZTV7S1618C7[209]),  209,209},
  {&(_tg__ZTV7S1618C4__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C2__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A2__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A2__7S1618C7[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__7S1618C7[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__7S1618C7[3]),  3,4},
  {&(_tg__ZTV8S1618C18__7S1618C7[11]),  11,13},
  {&(_tg__ZTV7S1618C38S1618C18__A1__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C38S1618C18__A3__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A3__7S1618C7[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C38S1618C18__A1__7S1618C7[3]),  3,4},
  {&(_tg__ZTV8S1618C19__8S1618C18__7S1618C7[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C18__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C18__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C2__8S1618C18__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A1__8S1618C18__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C8__8S1618C18__7S1618C7[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__7S1618C7[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C18__7S1618C7[3]),  3,5},
  {&(_tg__ZTV8S1618C19__7S1618C7[7]),  7,10},
  {&(_tg__ZTV7S1618C4__8S1618C19__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C19__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C2__8S1618C19__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C8__A1__7S1618C7[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__A1__7S1618C7[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A4__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A4__7S1618C7[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__A1__7S1618C7[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__A1__7S1618C7[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__A1__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__A1__7S1618C7[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__A1__7S1618C7[3]),  3,5},
  {&(_tg__ZTV8S1618C20__7S1618C7[7]),  7,8},
  {&(_tg__ZTV8S1618C11__8S1618C20__7S1618C7[7]),  7,9},
  {&(_tg__ZTV7S1618C4__8S1618C20__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C20__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C11__A2__7S1618C7[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__A2__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C4__8S1618C11__A2__7S1618C7[5]),  5,6},
  {&(_tg__ZTV8S1618C24__7S1618C7[7]),  7,10},
  {&(_tg__ZTV7S1618C3__8S1618C24__7S1618C7[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C24__7S1618C7[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C24__7S1618C7[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A2__7S1618C7[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__A5__7S1618C7[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__A5__7S1618C7[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__A2__7S1618C7[3]),  3,4},
  {&(_tg__ZTV8S1618C27__7S1618C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1618C7[];
extern  VTBL_ENTRY _ZTV7S1618C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C7[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C18D0Ev,_ZThn40_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C18D1Ev,_ZThn40_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C25D0Ev,_ZThn152_N8S1618C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C25D1Ev,_ZThn152_N8S1618C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C25D0Ev,_ZThn112_N8S1618C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C25D1Ev,_ZThn112_N8S1618C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C14D0Ev,_ZThn32_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C14D1Ev,_ZThn32_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C14D0Ev,_ZThn88_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C14D1Ev,_ZThn88_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S1618C14D0Ev,_ZThn164_N8S1618C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C14D0Ev,_ZThn36_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S1618C14D1Ev,_ZThn164_N8S1618C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C14D1Ev,_ZThn36_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S1618C14D0Ev,_ZThn124_N8S1618C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C14D0Ev,_ZThn80_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S1618C14D1Ev,_ZThn124_N8S1618C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C14D1Ev,_ZThn80_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C14D0Ev,_ZThn48_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C14D1Ev,_ZThn48_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C22D0Ev,_ZThn84_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C22D1Ev,_ZThn84_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C22D0Ev,_ZThn160_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C22D0Ev,_ZThn32_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C22D1Ev,_ZThn160_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C22D1Ev,_ZThn32_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C22D0Ev,_ZThn120_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1618C22D0Ev,_ZThn76_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C22D1Ev,_ZThn120_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1618C22D1Ev,_ZThn76_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1618C22D0Ev,_ZThn28_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1618C22D1Ev,_ZThn28_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C23D0Ev,_ZThn160_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C23D1Ev,_ZThn160_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C23D0Ev,_ZThn120_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C23D1Ev,_ZThn120_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C17D0Ev,_ZThn32_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C17D1Ev,_ZThn32_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C17D0Ev,_ZThn88_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C17D1Ev,_ZThn88_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C17D0Ev,_ZThn36_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C17D1Ev,_ZThn36_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C17D0Ev,_ZThn80_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C17D1Ev,_ZThn80_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C17D0Ev,_ZThn48_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C17D1Ev,_ZThn48_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C8D0Ev,_ZThn56_N7S1618C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C8D1Ev,_ZThn56_N7S1618C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1618C7D0Ev,_ZTv0_n44_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1618C7D0Ev,_ZThn112_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1618C7D1Ev,_ZTv0_n44_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1618C7D1Ev,_ZThn112_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S1618C7D0Ev,_ZThn148_N7S1618C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S1618C7D0Ev,_ZThn104_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S1618C7D1Ev,_ZThn148_N7S1618C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S1618C7D1Ev,_ZThn104_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S1618C7D0Ev,_ZTv0_n48_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1618C7D0Ev,_ZThn72_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S1618C7D1Ev,_ZTv0_n48_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1618C7D1Ev,_ZThn72_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S1618C7D0Ev,_ZThn188_N7S1618C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1618C7D0Ev,_ZThn60_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S1618C7D1Ev,_ZThn188_N7S1618C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1618C7D1Ev,_ZThn60_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C7D0Ev,_ZTv0_n12_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C7D0Ev,_ZThn56_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C7D1Ev,_ZTv0_n12_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C7D1Ev,_ZThn56_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C7 = {  "S1618C7", // class name
  bases_S1618C7, 57,
  &(vtc_S1618C7[0]), // expected_vtbl_contents
  &(vtt_S1618C7[0]), // expected_vtt_contents
  ABISELECT(408,212), // object size
  NSPAIRA(_ZTI7S1618C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1618C7),209, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C7),162, //virtual table table var
  40, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1618C1  : S1618C2 , virtual S1618C7 , virtual S1618C17 {
  ~S1618C1(); // tgen
  S1618C1(); // tgen
};
//SIG(1 S1618C1) C1{ BC2{ BC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd}} VBC7{ BC8{ VBC4 BC9{ BC4 VBC10{ m Fp} BC11{ BC6 BC10 VBC4 v2} Fi} VBC12{ vd m} BC5 VBC13{ m} vd FC5} VBC2 BC14{ BC15{ m} BC16{ m} BC17{ VBC5 VBC18{ VBC19{ BC10 BC13 VBC4 VBC2} BC12 BC3 VBC8 Fp[4]} VBC20{ VBC11} BC21{ VBC4 VBC11} vd} BC22{ VBC12 VBC19 VBC8 BC23{ VBC24{ VBC3 VBC10 Fp[9]} BC5 BC21 vd Fp} vd} vd} BC25{ VBC13 VBC4 BC6 VBC24 vd} BC26{ VBC27{ VBC28{ m Fi} Fp} vd}} VBC17}


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

static void Test_S1618C1()
{
  extern Class_Descriptor cd_S1618C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(57,59)];
    init_test(&cd_S1618C1, buf);
    S1618C1 *dp, &lv = *(dp=new (buf) S1618C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,232), "sizeof(S1618C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1618C1)");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C17::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C4*)(S1618C3*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C17*), ABISELECT(24,12), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*), 0, "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*)(S1618C7*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C1");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*)(S1618C18*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C9*)(S1618C8*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C4*)(S1618C3*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(16,8), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C3*)(S1618C2*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C2*), 0, "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*)(S1618C7*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C19::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C19*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C8*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C11*), ABISELECT(112,60), "S1618C1");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(112,60), "S1618C1");
    check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C23*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C25::S1618C4 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C25*)(S1618C7*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C21*)(S1618C17*), ABISELECT(112,60), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(32,16), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(128,68), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C9*)(S1618C8*), ABISELECT(128,68), "S1618C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C24*), ABISELECT(128,68), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(48,24), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(56,28), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(48,24), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C9*)(S1618C8*)(S1618C7*), ABISELECT(32,16), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*)(S1618C7*), ABISELECT(136,72), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C8*), ABISELECT(136,72), "S1618C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(136,72), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*)(S1618C7*), ABISELECT(32,16), "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*)(S1618C7*), 0, "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S1618C8*), 0, "S1618C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C25*)(S1618C7*), 0, "S1618C1");
    /*is_ambiguous_... S1618C7::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C8*)(S1618C7*), ABISELECT(32,16), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C2*), ABISELECT(144,76), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C2*), ABISELECT(144,76), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C2*), ABISELECT(160,84), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C2 */ AMB_check_base_class_offset(lv, (S1618C3*)(S1618C2*), ABISELECT(144,76), "S1618C1");
    check_base_class_offset(lv, (S1618C2*)(S1618C7*), ABISELECT(144,76), "S1618C1");
    check_base_class_offset(lv, (S1618C2*)(S1618C19*), ABISELECT(144,76), "S1618C1");
    check_base_class_offset(lv, (S3619C26*)(S1618C14*)(S1618C7*), ABISELECT(72,40), "S1618C1");
    check_base_class_offset(lv, (S3619C16*)(S1618C14*)(S1618C7*), ABISELECT(72,40), "S1618C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S1618C19*), ABISELECT(240,124), "S1618C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S1618C19*), ABISELECT(232,120), "S1618C1");
    check_base_class_offset(lv, (S1618C19*)(S1618C18*), ABISELECT(232,120), "S1618C1");
    check_base_class_offset(lv, (S1618C19*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(232,120), "S1618C1");
    /*is_ambiguous_... S1618C18::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S1618C18*), ABISELECT(168,88), "S1618C1");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*)(S1618C18*), ABISELECT(176,92), "S1618C1");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*)(S1618C18*), ABISELECT(176,92), "S1618C1");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*)(S1618C18*), ABISELECT(192,100), "S1618C1");
    /*is_ambiguous_... S1618C18::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C3*)(S1618C18*), ABISELECT(176,92), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C9*)(S1618C8*), ABISELECT(248,128), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(264,136), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(272,140), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C11*)(S1618C9*)(S1618C8*), ABISELECT(264,136), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S1618C9*)(S1618C8*), ABISELECT(248,128), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C8*), ABISELECT(248,128), "S1618C1");
    check_base_class_offset(lv, (S1618C8*)(S1618C18*), ABISELECT(248,128), "S1618C1");
    check_base_class_offset(lv, (S1618C8*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(248,128), "S1618C1");
    check_base_class_offset(lv, (S1618C18*)(S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(168,88), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S1618C18*)(S1618C17*), ABISELECT(168,88), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C11 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C11*), ABISELECT(296,156), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C11 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S1618C11*), ABISELECT(304,160), "S1618C1");
    check_base_class_offset(lv, (S1618C11*)(S1618C20*), ABISELECT(296,156), "S1618C1");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(296,156), "S1618C1");
    check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C23*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(296,156), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S1618C11*)(S1618C21*)(S1618C17*), ABISELECT(296,156), "S1618C1");
    check_base_class_offset(lv, (S1618C20*)(S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(288,152), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S1618C20*)(S1618C17*), ABISELECT(288,152), "S1618C1");
    check_base_class_offset(lv, (S1618C21*)(S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(72,40), "S1618C1");
    check_base_class_offset(lv, (S1618C17*)(S1618C14*)(S1618C7*), ABISELECT(72,40), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C4*)(S1618C3*), ABISELECT(392,204), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C3*), ABISELECT(392,204), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C3 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C3*), ABISELECT(408,212), "S1618C1");
    check_base_class_offset(lv, (S1618C3*)(S1618C24*), ABISELECT(392,204), "S1618C1");
    check_base_class_offset(lv, (S1618C24*)(S1618C23*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(312,164), "S1618C1");
    check_base_class_offset(lv, (S1618C24*)(S1618C25*)(S1618C7*), ABISELECT(312,164), "S1618C1");
    /*is_ambiguous_... S1618C23::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S1618C23*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(80,44), "S1618C1");
    check_base_class_offset(lv, (S1618C21*)(S1618C23*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(80,44), "S1618C1");
    check_base_class_offset(lv, (S1618C23*)(S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(80,44), "S1618C1");
    check_base_class_offset(lv, (S1618C22*)(S1618C14*)(S1618C7*), ABISELECT(80,44), "S1618C1");
    check_base_class_offset(lv, (S1618C14*)(S1618C7*), ABISELECT(72,40), "S1618C1");
    /*is_ambiguous_... S1618C25::S1618C6 */ AMB_check_base_class_offset(lv, (S1618C6*)(S1618C25*)(S1618C7*), ABISELECT(96,52), "S1618C1");
    check_base_class_offset(lv, (S1618C25*)(S1618C7*), ABISELECT(96,52), "S1618C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S1618C27*), ABISELECT(432,224), "S1618C1");
    check_base_class_offset(lv, (S1618C27*)(S1618C26*)(S1618C7*), ABISELECT(416,216), "S1618C1");
    check_base_class_offset(lv, (S1618C26*)(S1618C7*), ABISELECT(104,56), "S1618C1");
    check_base_class_offset(lv, (S1618C7*), ABISELECT(32,16), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S1618C21*)(S1618C17*), ABISELECT(440,228), "S1618C1");
    /*is_ambiguous_... S1618C1::S1618C17 */ AMB_check_base_class_offset(lv, (S1618C17*), ABISELECT(440,228), "S1618C1");
    test_class_info(&lv, &cd_S1618C1);
    dp->~S1618C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1618C1(Test_S1618C1, "S1618C1", ABISELECT(448,232));

#else // __cplusplus

extern void _ZN7S1618C1C1Ev();
extern void _ZN7S1618C1D1Ev();
Name_Map name_map_S1618C1[] = {
  NSPAIR(_ZN7S1618C1C1Ev),
  NSPAIR(_ZN7S1618C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C2;
extern VTBL_ENTRY _ZTI7S1618C2[];
extern  VTBL_ENTRY _ZTV7S1618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C2[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S1618C19;
extern VTBL_ENTRY _ZTI8S1618C19[];
extern  VTBL_ENTRY _ZTV8S1618C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C19[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C9;
extern VTBL_ENTRY _ZTI7S1618C9[];
extern  VTBL_ENTRY _ZTV7S1618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C8;
extern VTBL_ENTRY _ZTI7S1618C8[];
extern  VTBL_ENTRY _ZTV7S1618C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C8[];
extern Class_Descriptor cd_S1618C18;
extern VTBL_ENTRY _ZTI8S1618C18[];
extern  VTBL_ENTRY _ZTV8S1618C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C18[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S1618C11;
extern VTBL_ENTRY _ZTI8S1618C11[];
extern  VTBL_ENTRY _ZTV8S1618C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C11[];
extern Class_Descriptor cd_S1618C20;
extern VTBL_ENTRY _ZTI8S1618C20[];
extern  VTBL_ENTRY _ZTV8S1618C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C20[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C17;
extern VTBL_ENTRY _ZTI8S1618C17[];
extern  VTBL_ENTRY _ZTV8S1618C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C17[];
extern Class_Descriptor cd_S1618C4;
extern VTBL_ENTRY _ZTI7S1618C4[];
extern  VTBL_ENTRY _ZTV7S1618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C3;
extern VTBL_ENTRY _ZTI7S1618C3[];
extern  VTBL_ENTRY _ZTV7S1618C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C3[];
extern Class_Descriptor cd_S1618C24;
extern VTBL_ENTRY _ZTI8S1618C24[];
extern  VTBL_ENTRY _ZTV8S1618C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C24[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C23;
extern VTBL_ENTRY _ZTI8S1618C23[];
extern  VTBL_ENTRY _ZTV8S1618C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C23[];
extern Class_Descriptor cd_S1618C22;
extern VTBL_ENTRY _ZTI8S1618C22[];
extern  VTBL_ENTRY _ZTV8S1618C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C22[];
extern Class_Descriptor cd_S1618C14;
extern VTBL_ENTRY _ZTI8S1618C14[];
extern  VTBL_ENTRY _ZTV8S1618C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C14[];
extern Class_Descriptor cd_S1618C6;
extern VTBL_ENTRY _ZTI7S1618C6[];
extern  VTBL_ENTRY _ZTV7S1618C6[];
extern Class_Descriptor cd_S1618C25;
extern VTBL_ENTRY _ZTI8S1618C25[];
extern  VTBL_ENTRY _ZTV8S1618C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C25[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S1618C27;
extern VTBL_ENTRY _ZTI8S1618C27[];
extern  VTBL_ENTRY _ZTV8S1618C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C27[];
extern Class_Descriptor cd_S1618C26;
extern VTBL_ENTRY _ZTI8S1618C26[];
extern  VTBL_ENTRY _ZTV8S1618C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C26[];
extern Class_Descriptor cd_S1618C7;
extern VTBL_ENTRY _ZTI7S1618C7[];
extern  VTBL_ENTRY _ZTV7S1618C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C7[];
extern Class_Descriptor cd_S1618C21;
extern VTBL_ENTRY _ZTI8S1618C21[];
extern  VTBL_ENTRY _ZTV8S1618C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C21[];
extern Class_Descriptor cd_S1618C17;
extern VTBL_ENTRY _ZTI8S1618C17[];
extern  VTBL_ENTRY _ZTV8S1618C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1618C17[];
static Base_Class bases_S1618C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1618C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1618C6,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1618C3,    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
    46, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1618C2,    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
    47, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1618C4,    ABISELECT(112,60), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S1618C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1618C6,    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
    28, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(48,24), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(136,72), //bcp->offset
    120, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1618C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(160,84), //bcp->offset
    134, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1618C2,    ABISELECT(144,76), //bcp->offset
    125, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3619C26,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1618C19,    ABISELECT(232,120), //bcp->offset
    163, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S21216C26_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
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(192,100), //bcp->offset
    160, //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
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(176,92), //bcp->offset
    152, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1618C6,    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
    10, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(264,136), //bcp->offset
    188, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1618C9,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S1618C8,    ABISELECT(248,128), //bcp->offset
    174, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S1618C18,    ABISELECT(168,88), //bcp->offset
    137, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S1618C6,    ABISELECT(296,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
    19, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1618C11,    ABISELECT(296,156), //bcp->offset
    203, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S1618C20,    ABISELECT(288,152), //bcp->offset
    195, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S1618C21,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1618C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S1618C4,    ABISELECT(392,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    190, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(392,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1618C6,    ABISELECT(408,212), //bcp->offset
    232, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1618C3,    ABISELECT(392,204), //bcp->offset
    223, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S1618C24,    ABISELECT(312,164), //bcp->offset
    212, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    185, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S1618C21,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S1618C23,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1618C22,    ABISELECT(80,44), //bcp->offset
    78, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S1618C14,    ABISELECT(72,40), //bcp->offset
    58, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S1618C6,    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
    38, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1618C25,    ABISELECT(96,52), //bcp->offset
    96, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S3223C8_nt,    ABISELECT(432,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S1618C27,    ABISELECT(416,216), //bcp->offset
    235, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    193, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S1618C26,    ABISELECT(104,56), //bcp->offset
    108, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S1618C7,    ABISELECT(32,16), //bcp->offset
    27, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1618C21,    ABISELECT(440,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S1618C17,    ABISELECT(440,228), //bcp->offset
    238, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1618C1[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C1D1Ev();
extern void _ZN7S1618C1D0Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n168_N7S1618C1D1Ev,_ZTv0_n84_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S1618C1D1Ev,_ZThn16_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S1618C1D0Ev,_ZTv0_n84_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S1618C1D0Ev,_ZThn16_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn40_n168_N7S1618C1D1Ev,_ZTvn24_n84_N7S1618C1D1Ev)();
extern void ABISELECT(_ZTvn40_n168_N7S1618C1D0Ev,_ZTvn24_n84_N7S1618C1D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn48_n168_N7S1618C1D1Ev,_ZTvn28_n84_N7S1618C1D1Ev)();
extern void ABISELECT(_ZTvn48_n168_N7S1618C1D0Ev,_ZTvn28_n84_N7S1618C1D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn64_n168_N7S1618C1D1Ev,_ZTvn36_n84_N7S1618C1D1Ev)();
extern void ABISELECT(_ZTvn64_n168_N7S1618C1D0Ev,_ZTvn36_n84_N7S1618C1D0Ev)();
extern void ABISELECT(_ZTvn72_n168_N7S1618C1D1Ev,_ZTvn40_n84_N7S1618C1D1Ev)();
extern void ABISELECT(_ZTvn72_n168_N7S1618C1D0Ev,_ZTvn40_n84_N7S1618C1D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S1618C1D1Ev,_ZTv0_n12_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S1618C1D1Ev,_ZThn72_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C1D0Ev,_ZTv0_n12_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S1618C1D0Ev,_ZThn72_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S1618C1D1Ev,_ZTv0_n24_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S1618C1D1Ev,_ZThn76_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S1618C1D0Ev,_ZTv0_n24_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S1618C1D0Ev,_ZThn76_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N7S1618C1D1Ev,_ZTv0_n48_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S1618C1D1Ev,_ZThn88_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S1618C1D0Ev,_ZTv0_n48_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S1618C1D0Ev,_ZThn88_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N7S1618C1D1Ev,_ZTvn4_n48_N7S1618C1D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N7S1618C1D0Ev,_ZTvn4_n48_N7S1618C1D0Ev)();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S1618C1D1Ev,_ZTv0_n32_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S1618C1D1Ev,_ZThn120_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1618C1D0Ev,_ZTv0_n32_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S1618C1D0Ev,_ZThn120_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S1618C1D1Ev,_ZTv0_n44_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S1618C1D1Ev,_ZThn128_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1618C1D0Ev,_ZTv0_n44_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S1618C1D0Ev,_ZThn128_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S1618C1D1Ev,_ZTv0_n32_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn312_N7S1618C1D1Ev,_ZThn164_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1618C1D0Ev,_ZTv0_n32_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn312_N7S1618C1D0Ev,_ZThn164_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S1618C1D1Ev,_ZTv0_n24_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn392_N7S1618C1D1Ev,_ZThn204_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S1618C1D0Ev,_ZTv0_n24_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn392_N7S1618C1D0Ev,_ZThn204_N7S1618C1D0Ev)() __attribute__((weak));
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n128_N7S1618C1D1Ev,_ZTv0_n64_N7S1618C1D1Ev)();
extern void ABISELECT(_ZThn440_N7S1618C1D1Ev,_ZThn228_N7S1618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1618C1D0Ev,_ZTv0_n64_N7S1618C1D0Ev)();
extern void ABISELECT(_ZThn440_N7S1618C1D0Ev,_ZThn228_N7S1618C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1618C1[] = {
  ABISELECT(440,228),
  ABISELECT(432,224),
  ABISELECT(416,216),
  ABISELECT(392,204),
  ABISELECT(312,164),
  ABISELECT(296,156),
  ABISELECT(288,152),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(168,88),
  ABISELECT(144,76),
  0,
  ABISELECT(136,72),
  ABISELECT(128,68),
  ABISELECT(112,60),
  ABISELECT(32,16),
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C1D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(400,208),
  ABISELECT(384,200),
  ABISELECT(360,188),
  ABISELECT(280,148),
  ABISELECT(264,140),
  ABISELECT(256,136),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(136,72),
  ABISELECT(112,60),
  ABISELECT(-32,-16),
  ABISELECT(104,56),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S1618C1D1Ev,_ZTv0_n84_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S1618C1D0Ev,_ZTv0_n84_N7S1618C1D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(-72,-40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(-72,-40),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n168_N7S1618C1D1Ev,_ZTvn24_n84_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n168_N7S1618C1D0Ev,_ZTvn24_n84_N7S1618C1D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n168_N7S1618C1D1Ev,_ZTvn28_n84_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n168_N7S1618C1D0Ev,_ZTvn28_n84_N7S1618C1D0Ev),
  ABISELECT(32,16),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(-96,-52),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n168_N7S1618C1D1Ev,_ZTvn36_n84_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n168_N7S1618C1D0Ev,_ZTvn36_n84_N7S1618C1D0Ev),
  ABISELECT(328,168),
  ABISELECT(312,160),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n168_N7S1618C1D1Ev,_ZTvn40_n84_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n168_N7S1618C1D0Ev,_ZTvn40_n84_N7S1618C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C1D1Ev,_ZTv0_n12_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C1D0Ev,_ZTv0_n12_N7S1618C1D0Ev),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C1D1Ev,_ZTv0_n24_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C1D0Ev,_ZTv0_n24_N7S1618C1D0Ev),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(24,12),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S1618C1D1Ev,_ZTv0_n48_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S1618C1D0Ev,_ZTv0_n48_N7S1618C1D0Ev),
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S1618C1D1Ev,_ZTvn4_n48_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S1618C1D0Ev,_ZTvn4_n48_N7S1618C1D0Ev),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(-232,-120),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C1D1Ev,_ZTv0_n32_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C1D0Ev,_ZTv0_n32_N7S1618C1D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1618C1D1Ev,_ZTv0_n44_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1618C1D0Ev,_ZTv0_n44_N7S1618C1D0Ev),
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-288,-152),
  ABISELECT(-264,-140),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
  ABISELECT(-312,-164),
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C1D1Ev,_ZTv0_n32_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C1D0Ev,_ZTv0_n32_N7S1618C1D0Ev),
  ABISELECT(-392,-204),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-392,-204),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C1D1Ev,_ZTv0_n24_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C1D0Ev,_ZTv0_n24_N7S1618C1D0Ev),
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  ABISELECT(16,8),
  ABISELECT(-416,-216),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  ABISELECT(-440,-228),
  ABISELECT(-152,-76),
  ABISELECT(-440,-228),
  ABISELECT(-304,-156),
  ABISELECT(-312,-160),
  ABISELECT(-192,-100),
  ABISELECT(-296,-152),
  ABISELECT(-208,-108),
  ABISELECT(-272,-140),
  ABISELECT(-144,-72),
  ABISELECT(-440,-228),
  ABISELECT(-416,-216),
  ABISELECT(-328,-168),
  ABISELECT(-440,-228),
  ABISELECT(-440,-228),
  (VTBL_ENTRY)&(_ZTI7S1618C1[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1618C1D1Ev,_ZTv0_n64_N7S1618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1618C1D0Ev,_ZTv0_n64_N7S1618C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S1618C1[];
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__A__7S1618C1[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__7S1618C1[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__7S1618C1[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C7D1Ev();
extern void _ZN7S1618C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C7__7S1618C1[] = {
  ABISELECT(400,208),
  ABISELECT(384,200),
  ABISELECT(360,188),
  ABISELECT(280,148),
  ABISELECT(264,140),
  ABISELECT(256,136),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(136,72),
  ABISELECT(112,60),
  ABISELECT(-32,-16),
  ABISELECT(104,56),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C7D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C7D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(104,56),
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(80,44),
  ABISELECT(96,52),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C87S1618C7__A2__7S1618C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C87S1618C7__A2__7S1618C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C87S1618C7__7S1618C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C97S1618C87S1618C7__7S1618C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C87S1618C7__7S1618C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZThn104_N7S1618C8D1Ev,_ZThn56_N7S1618C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
extern void ABISELECT(_ZThn104_N7S1618C8D0Ev,_ZThn56_N7S1618C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C87S1618C7__7S1618C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C14D1Ev();
extern void _ZN8S1618C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(-72,-40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(-72,-40),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C14D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C17D1Ev();
extern void _ZN8S1618C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(216,112),
  ABISELECT(-72,-40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(-72,-40),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(224,116),
  ABISELECT(-72,-40),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C218S1618C178S1618C147S1618C7__7S1618C1[] = {
  0,
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C178S1618C147S1618C7__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C17D1Ev,_ZThn48_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C17D0Ev,_ZThn48_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(24,12),
  ABISELECT(-96,-48),
  ABISELECT(-168,-88),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn160_N8S1618C17D1Ev,_ZThn80_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn160_N8S1618C17D0Ev,_ZThn80_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  0,
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn72_N8S1618C17D1Ev,_ZThn36_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn72_N8S1618C17D0Ev,_ZThn36_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn176_N8S1618C17D1Ev,_ZThn88_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn176_N8S1618C17D0Ev,_ZThn88_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-176,-88),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C17D1Ev,_ZThn32_N8S1618C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C17D0Ev,_ZThn32_N8S1618C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(-264,-140),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C178S1618C147S1618C7__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C22D1Ev();
extern void _ZN8S1618C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C22D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C23D1Ev();
extern void _ZN8S1618C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C23D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[] = {
  ABISELECT(216,112),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn232_N8S1618C23D1Ev,_ZThn120_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn232_N8S1618C23D0Ev,_ZThn120_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-232,-120),
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev)();
extern void ABISELECT(_ZThn312_N8S1618C23D1Ev,_ZThn160_N8S1618C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev)();
extern void ABISELECT(_ZThn312_N8S1618C23D0Ev,_ZThn160_N8S1618C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-312,-160),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C23[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn56_N8S1618C22D1Ev,_ZThn28_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn56_N8S1618C22D0Ev,_ZThn28_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S1618C22D1Ev,_ZThn76_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S1618C22D0Ev,_ZThn76_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-152,-76),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C22D1Ev,_ZThn32_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C22D0Ev,_ZThn32_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S1618C22D1Ev,_ZThn84_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S1618C22D0Ev,_ZThn84_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn232_N8S1618C22D1Ev,_ZThn120_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn232_N8S1618C22D0Ev,_ZThn120_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-232,-120),
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev)();
extern void ABISELECT(_ZThn312_N8S1618C22D1Ev,_ZThn160_N8S1618C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev)();
extern void ABISELECT(_ZThn312_N8S1618C22D0Ev,_ZThn160_N8S1618C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-312,-160),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A3__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C228S1618C147S1618C7__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C22[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S1618C14D1Ev,_ZThn48_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S1618C14D0Ev,_ZThn48_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(24,12),
  ABISELECT(-96,-48),
  ABISELECT(-168,-88),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S1618C14D1Ev,_ZThn80_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S1618C14D0Ev,_ZThn80_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C147S1618C7__7S1618C1[] = {
  0,
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S1618C14D1Ev,_ZThn36_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S1618C14D0Ev,_ZThn36_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C14D1Ev,_ZTvn4_n48_N8S1618C14D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C14D0Ev,_ZTvn4_n48_N8S1618C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C14D1Ev,_ZTvn4_n48_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C14D0Ev,_ZTvn4_n48_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn176_N8S1618C14D1Ev,_ZThn88_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn176_N8S1618C14D0Ev,_ZThn88_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-176,-88),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C14D1Ev,_ZThn32_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C14D0Ev,_ZThn32_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(-264,-140),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C147S1618C7__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C14D1Ev,_ZThn4_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C14D0Ev,_ZThn4_N8S1618C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C22__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  ABISELECT(-80,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C14D1Ev,_ZThn4_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C14D0Ev,_ZThn4_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn240_N8S1618C14D1Ev,_ZThn124_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn240_N8S1618C14D0Ev,_ZThn124_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev)();
extern void ABISELECT(_ZThn320_N8S1618C14D1Ev,_ZThn164_N8S1618C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev)();
extern void ABISELECT(_ZThn320_N8S1618C14D0Ev,_ZThn164_N8S1618C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__A2__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-320,-164),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A5__8S1618C147S1618C7__7S1618C1[] = {
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI8S1618C14[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C25D1Ev();
extern void _ZN8S1618C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C257S1618C7__7S1618C1[] = {
  ABISELECT(32,16),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(-96,-52),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C25D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C257S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C257S1618C7__7S1618C1[] = {
  0,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev)();
extern void ABISELECT(_ZThn216_N8S1618C25D1Ev,_ZThn112_N8S1618C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev)();
extern void ABISELECT(_ZThn216_N8S1618C25D0Ev,_ZThn112_N8S1618C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__8S1618C257S1618C7__7S1618C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev)();
extern void ABISELECT(_ZThn296_N8S1618C25D1Ev,_ZThn152_N8S1618C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev)();
extern void ABISELECT(_ZThn296_N8S1618C25D0Ev,_ZThn152_N8S1618C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C257S1618C7__7S1618C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A2__8S1618C257S1618C7__7S1618C1[] = {
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C25[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN8S1618C26D1Ev();
extern void _ZN8S1618C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C267S1618C7__7S1618C1[] = {
  ABISELECT(328,168),
  ABISELECT(312,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C26[0]),
  (VTBL_ENTRY)&_ZN8S1618C26D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C26D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1618C27__8S1618C267S1618C7__7S1618C1[] = {
  ABISELECT(16,8),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S1618C26[0]),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C7__7S1618C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__7S1618C7__7S1618C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C7D1Ev,_ZTv0_n12_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S1618C7D1Ev,_ZThn56_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S1618C7D0Ev,_ZTv0_n12_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S1618C7D0Ev,_ZThn56_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C7__7S1618C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C7D1Ev,_ZTv0_n12_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C7D0Ev,_ZTv0_n12_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S1618C7D1Ev,_ZThn60_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S1618C7D0Ev,_ZThn60_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C2__7S1618C7__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A2__7S1618C7__7S1618C1[] = {
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn40_N7S1618C7D1Ev,_ZThn24_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S1618C7D0Ev,_ZThn24_N7S1618C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C14__7S1618C7__7S1618C1[] = {
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(-72,-40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(72,36),
  ABISELECT(160,80),
  ABISELECT(96,48),
  ABISELECT(224,116),
  ABISELECT(-72,-40),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  ABISELECT(-72,-40),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S1618C7D1Ev,_ZThn24_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S1618C7D0Ev,_ZThn24_N7S1618C7D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N7S1618C7D1Ev,_ZTv0_n48_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S1618C7D1Ev,_ZThn72_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S1618C7D0Ev,_ZTv0_n48_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn136_N7S1618C7D0Ev,_ZThn72_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C18__7S1618C7__7S1618C1[] = {
  ABISELECT(24,12),
  ABISELECT(-136,-72),
  ABISELECT(-168,-88),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S1618C7D1Ev,_ZTv0_n48_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S1618C7D0Ev,_ZTv0_n48_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn200_N7S1618C7D1Ev,_ZThn104_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn200_N7S1618C7D0Ev,_ZThn104_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__7S1618C7__7S1618C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N7S1618C7D1Ev,_ZTvn4_n48_N7S1618C7D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N7S1618C7D0Ev,_ZTvn4_n48_N7S1618C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__7S1618C7__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S1618C7D1Ev,_ZTvn4_n48_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S1618C7D0Ev,_ZTvn4_n48_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A3__7S1618C7__7S1618C1[] = {
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S1618C7D1Ev,_ZTv0_n44_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn216_N7S1618C7D1Ev,_ZThn112_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1618C7D0Ev,_ZTv0_n44_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn216_N7S1618C7D0Ev,_ZThn112_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__A1__7S1618C7__7S1618C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1618C7D1Ev,_ZTv0_n44_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1618C7D0Ev,_ZTv0_n44_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__A1__7S1618C7__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__7S1618C7__7S1618C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(-264,-140),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A2__7S1618C7__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn48_N7S1618C7D1Ev,_ZThn28_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn48_N7S1618C7D0Ev,_ZThn28_N7S1618C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C228S1618C14__7S1618C7__7S1618C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(168,84),
  ABISELECT(64,32),
  ABISELECT(152,76),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(312,160),
  ABISELECT(232,120),
  ABISELECT(216,112),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S1618C7D1Ev,_ZThn28_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S1618C7D0Ev,_ZThn28_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn280_N7S1618C7D1Ev,_ZThn148_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn280_N7S1618C7D0Ev,_ZThn148_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C24__7S1618C7__7S1618C1[] = {
  ABISELECT(-280,-148),
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn360_N7S1618C7D1Ev,_ZThn188_N7S1618C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev)();
extern void ABISELECT(_ZThn360_N7S1618C7D0Ev,_ZThn188_N7S1618C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__A2__7S1618C7__7S1618C1[] = {
  ABISELECT(-360,-188),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-360,-188),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A6__7S1618C7__7S1618C1[] = {
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn64_N7S1618C7D1Ev,_ZThn36_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S1618C7D0Ev,_ZThn36_N7S1618C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C25__7S1618C7__7S1618C1[] = {
  ABISELECT(32,16),
  ABISELECT(296,152),
  ABISELECT(216,112),
  ABISELECT(-96,-52),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1618C7D1Ev,_ZThn36_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1618C7D0Ev,_ZThn36_N7S1618C7D0Ev),
};
extern void ABISELECT(_ZThn72_N7S1618C7D1Ev,_ZThn40_N7S1618C7D1Ev)();
extern void ABISELECT(_ZThn72_N7S1618C7D0Ev,_ZThn40_N7S1618C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C26__7S1618C7__7S1618C1[] = {
  ABISELECT(328,168),
  ABISELECT(312,160),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S1618C7D1Ev,_ZThn40_N7S1618C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S1618C7D0Ev,_ZThn40_N7S1618C7D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1618C27__7S1618C7__7S1618C1[] = {
  ABISELECT(16,8),
  ABISELECT(-384,-200),
  (VTBL_ENTRY)&(_ZTI7S1618C7[0]),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C4__A1__7S1618C1[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C2D1Ev();
extern void _ZN7S1618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C2__A1__7S1618C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C2D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C37S1618C2__A1__7S1618C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C37S1618C2__A3__7S1618C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A3__7S1618C1[] = {
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C37S1618C2__A1__7S1618C1[] = {
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C2__A1__7S1618C1[] = {
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S1618C2[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN8S1618C18D1Ev();
extern void _ZN8S1618C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C18__7S1618C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN8S1618C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C18D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A2__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C38S1618C18__A4__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A4__7S1618C1[] = {
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C38S1618C18__A2__7S1618C1[] = {
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C18__7S1618C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C18__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C18__7S1618C1[] = {
  0,
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C18__7S1618C1[] = {
  ABISELECT(24,12),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D1Ev,_ZTv0_n24_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C18D0Ev,_ZTv0_n24_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__7S1618C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A1__8S1618C18__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D1Ev,_ZThn4_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1618C18D0Ev,_ZThn4_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C18D1Ev,_ZThn40_N8S1618C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C18D0Ev,_ZThn40_N8S1618C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C18__7S1618C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C18__7S1618C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1618C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D1Ev,_ZTv0_n12_N8S1618C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C18D0Ev,_ZTv0_n12_N8S1618C18D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C19D1Ev();
extern void _ZN8S1618C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C19__7S1618C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C19D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C19__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C19__7S1618C1[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C19__7S1618C1[] = {
  ABISELECT(88,44),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D1Ev,_ZTv0_n24_N8S1618C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C19D0Ev,_ZTv0_n24_N8S1618C19D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__7S1618C1[] = {
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1618C19[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C8D1Ev();
extern void _ZN7S1618C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C8__A1__7S1618C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C8D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C97S1618C8__A1__7S1618C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C97S1618C8__A5__7S1618C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A5__7S1618C1[] = {
  0,
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__A1__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__A1__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__A1__7S1618C1[] = {
  0,
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C97S1618C8__A1__7S1618C1[] = {
  0,
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__7S1618C97S1618C8__A1__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__A1__7S1618C97S1618C8__A1__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S1618C9[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__7S1618C8__A1__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C8__A1__7S1618C1[] = {
  0,
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C9__7S1618C8__A1__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S1618C8__A1__7S1618C1[] = {
  ABISELECT(112,56),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S1618C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__7S1618C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(-264,-140),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C20__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C20__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C20__7S1618C1[] = {
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S1618C20[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A2__7S1618C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C11__A2__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__A1__8S1618C11__A2__7S1618C1[] = {
  0,
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S1618C11[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C24D1Ev();
extern void _ZN8S1618C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C24__7S1618C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-312,-164),
  ABISELECT(-288,-152),
  ABISELECT(80,40),
  ABISELECT(-312,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C24D0Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev)();
extern void ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1618C3__8S1618C24__7S1618C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C24__7S1618C1[] = {
  0,
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C3__A1__8S1618C24__7S1618C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1618C24[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN7S1618C3D1Ev();
extern void _ZN7S1618C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C3__A3__7S1618C1[] = {
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1618C3D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C47S1618C3__A6__7S1618C1[] = {
  ABISELECT(-392,-204),
  ABISELECT(-368,-192),
  ABISELECT(-392,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C47S1618C3__A6__7S1618C1[] = {
  0,
  ABISELECT(392,204),
  (VTBL_ENTRY)&(_ZTI7S1618C4[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__7S1618C3__A3__7S1618C1[] = {
  0,
  ABISELECT(392,204),
  (VTBL_ENTRY)&(_ZTI7S1618C3[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1618C27__7S1618C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C27[0]),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C17D1Ev();
extern void _ZN8S1618C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C17__A1__7S1618C1[] = {
  ABISELECT(-152,-76),
  ABISELECT(-440,-228),
  ABISELECT(-304,-156),
  ABISELECT(-312,-160),
  ABISELECT(-192,-100),
  ABISELECT(-296,-152),
  ABISELECT(-208,-108),
  ABISELECT(-272,-140),
  ABISELECT(-144,-72),
  ABISELECT(-440,-228),
  ABISELECT(-416,-216),
  ABISELECT(-328,-168),
  ABISELECT(-440,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1618C17D0Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C218S1618C17__A2__7S1618C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-440,-228),
  ABISELECT(-416,-216),
  ABISELECT(-328,-168),
  ABISELECT(-440,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C218S1618C17__A2__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C218S1618C17__A2__7S1618C1[] = {
  0,
  ABISELECT(440,228),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__8S1618C218S1618C17__A2__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S1618C21[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C18__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(24,12),
  ABISELECT(272,140),
  ABISELECT(-168,-88),
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-56,-28),
  ABISELECT(64,32),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1618C19__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(208,108),
  ABISELECT(-88,-44),
  ABISELECT(-232,-120),
  ABISELECT(-208,-108),
  ABISELECT(-120,-60),
  ABISELECT(-232,-120),
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C4__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  ABISELECT(-112,-60),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C6__8S1618C17__A1__7S1618C1[] = {
  0,
  ABISELECT(440,228),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C2__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(296,152),
  ABISELECT(-144,-76),
  ABISELECT(-120,-64),
  ABISELECT(-144,-76),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C38S1618C18__A1__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D1Ev,_ZTvn4_n48_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N8S1618C17D0Ev,_ZTvn4_n48_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1618C8__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(192,100),
  ABISELECT(16,8),
  ABISELECT(-248,-128),
  ABISELECT(-112,-56),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  ABISELECT(-248,-128),
  ABISELECT(-224,-116),
  ABISELECT(-248,-128),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C117S1618C97S1618C8__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-240,-124),
  ABISELECT(-152,-76),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(304,156),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev),
};
extern void _ZN7S1618C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C20__8S1618C17__A1__7S1618C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(-264,-140),
  ABISELECT(-176,-92),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
};
extern void _ZN7S1618C62v1Ev();
extern void _ZN8S1618C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S1618C11__A1__8S1618C17__A1__7S1618C1[] = {
  0,
  0,
  ABISELECT(-296,-156),
  ABISELECT(-272,-144),
  ABISELECT(-184,-96),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S1618C17[0]),
  (VTBL_ENTRY)&_ZN7S1618C62v1Ev,
  (VTBL_ENTRY)&_ZN8S1618C112v2Ev,
};
static  VTT_ENTRY vtt_S1618C1[] = {
  {&(_ZTV7S1618C1[21]),  21,257},
  {&(_tg__ZTV7S1618C2__A__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C37S1618C2__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C2__A__7S1618C1[5]),  5,8},
  {&(_ZTV7S1618C1[21]),  21,257},
  {&(_ZTV7S1618C1[48]),  48,257},
  {&(_ZTV7S1618C1[119]),  119,257},
  {&(_ZTV7S1618C1[56]),  56,257},
  {&(_ZTV7S1618C1[123]),  123,257},
  {&(_ZTV7S1618C1[131]),  131,257},
  {&(_ZTV7S1618C1[136]),  136,257},
  {&(_ZTV7S1618C1[75]),  75,257},
  {&(_ZTV7S1618C1[150]),  150,257},
  {&(_ZTV7S1618C1[171]),  171,257},
  {&(_ZTV7S1618C1[157]),  157,257},
  {&(_ZTV7S1618C1[162]),  162,257},
  {&(_ZTV7S1618C1[185]),  185,257},
  {&(_ZTV7S1618C1[193]),  193,257},
  {&(_ZTV7S1618C1[202]),  202,257},
  {&(_ZTV7S1618C1[210]),  210,257},
  {&(_ZTV7S1618C1[93]),  93,257},
  {&(_ZTV7S1618C1[220]),  220,257},
  {&(_ZTV7S1618C1[229]),  229,257},
  {&(_ZTV7S1618C1[234]),  234,257},
  {&(_ZTV7S1618C1[105]),  105,257},
  {&(_ZTV7S1618C1[112]),  112,257},
  {&(_ZTV7S1618C1[238]),  238,257},
  {&(_ZTV7S1618C1[254]),  254,257},
  {&(_tg__ZTV7S1618C7__7S1618C1[19]),  19,22},
  {&(_tg__ZTV7S1618C87S1618C7__7S1618C1[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C87S1618C7__7S1618C1[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C87S1618C7__A2__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C87S1618C7__A2__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C87S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C87S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C87S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C97S1618C87S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C87S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C87S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C87S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C87S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C87S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C87S1618C7__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C147S1618C7__7S1618C1[17]),  17,20},
  {&(_tg__ZTV8S1618C178S1618C147S1618C7__7S1618C1[15]),  15,18},
  {&(_tg__ZTV8S1618C218S1618C178S1618C147S1618C7__7S1618C1[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C178S1618C147S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C218S1618C178S1618C147S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C178S1618C147S1618C7__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C18__8S1618C178S1618C147S1618C7__7S1618C1[13]),  13,15},
  {&(_tg__ZTV8S1618C19__8S1618C178S1618C147S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C178S1618C147S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C178S1618C147S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C178S1618C147S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C178S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C178S1618C147S1618C7__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C178S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C178S1618C147S1618C7__7S1618C1[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C178S1618C147S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C178S1618C147S1618C7__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C178S1618C147S1618C7__7S1618C1[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A1__8S1618C178S1618C147S1618C7__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C228S1618C147S1618C7__7S1618C1[15]),  15,18},
  {&(_tg__ZTV8S1618C238S1618C228S1618C147S1618C7__7S1618C1[10]),  10,13},
  {&(_tg__ZTV8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C238S1618C228S1618C147S1618C7__A1__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C24__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C3__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C4__A1__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV8S1618C11__8S1618C238S1618C228S1618C147S1618C7__7S1618C1[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S1618C228S1618C147S1618C7__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C19__8S1618C228S1618C147S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C228S1618C147S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C228S1618C147S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C228S1618C147S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C228S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C228S1618C147S1618C7__7S1618C1[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C228S1618C147S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV8S1618C24__8S1618C228S1618C147S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C3__A1__8S1618C228S1618C147S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A3__8S1618C228S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV8S1618C11__A1__8S1618C228S1618C147S1618C7__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C18__8S1618C147S1618C7__7S1618C1[13]),  13,15},
  {&(_tg__ZTV8S1618C19__8S1618C147S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C147S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C147S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C147S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C147S1618C7__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C147S1618C7__7S1618C1[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C147S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C147S1618C7__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C147S1618C7__7S1618C1[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A1__8S1618C147S1618C7__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C22__8S1618C147S1618C7__7S1618C1[15]),  15,18},
  {&(_tg__ZTV8S1618C24__8S1618C147S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C3__A2__8S1618C147S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A5__8S1618C147S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV8S1618C257S1618C7__7S1618C1[9]),  9,12},
  {&(_tg__ZTV7S1618C4__8S1618C257S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C257S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C24__8S1618C257S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C3__8S1618C257S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A2__8S1618C257S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV8S1618C267S1618C7__7S1618C1[4]),  4,6},
  {&(_tg__ZTV8S1618C27__8S1618C267S1618C7__7S1618C1[3]),  3,3},
  {&(_tg__ZTV7S1618C4__7S1618C7__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C7__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__7S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C7__7S1618C1[3]),  3,5},
  {&(_tg__ZTV7S1618C2__7S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A2__7S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV8S1618C14__7S1618C7__7S1618C1[17]),  17,20},
  {&(_tg__ZTV8S1618C18__7S1618C7__7S1618C1[13]),  13,15},
  {&(_tg__ZTV8S1618C19__7S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C38S1618C18__A1__7S1618C7__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A3__7S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C8__A1__7S1618C7__7S1618C1[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__A1__7S1618C7__7S1618C1[5]),  5,7},
  {&(_tg__ZTV8S1618C20__7S1618C7__7S1618C1[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A2__7S1618C7__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C228S1618C14__7S1618C7__7S1618C1[15]),  15,18},
  {&(_tg__ZTV8S1618C24__7S1618C7__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C3__A2__7S1618C7__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C3__A6__7S1618C7__7S1618C1[2]),  2,3},
  {&(_tg__ZTV8S1618C25__7S1618C7__7S1618C1[9]),  9,12},
  {&(_tg__ZTV8S1618C26__7S1618C7__7S1618C1[4]),  4,6},
  {&(_tg__ZTV8S1618C27__7S1618C7__7S1618C1[3]),  3,3},
  {&(_tg__ZTV7S1618C4__A1__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C4__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__A1__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C37S1618C2__A1__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C37S1618C2__A3__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C37S1618C2__A3__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C37S1618C2__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C2__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C18__7S1618C1[11]),  11,13},
  {&(_tg__ZTV7S1618C38S1618C18__A2__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C38S1618C18__A4__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C38S1618C18__A4__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C38S1618C18__A2__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C19__8S1618C18__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C18__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C18__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C18__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C18__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A1__8S1618C18__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C8__8S1618C18__7S1618C1[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C18__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C18__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C19__7S1618C1[7]),  7,10},
  {&(_tg__ZTV7S1618C4__8S1618C19__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C19__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C19__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C19__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C8__A1__7S1618C1[9]),  9,12},
  {&(_tg__ZTV7S1618C97S1618C8__A1__7S1618C1[7]),  7,8},
  {&(_tg__ZTV7S1618C47S1618C97S1618C8__A5__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C97S1618C8__A5__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__A1__7S1618C1[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C117S1618C97S1618C8__A1__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C117S1618C97S1618C8__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C97S1618C8__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C11__7S1618C97S1618C8__A1__7S1618C1[5]),  5,7},
  {&(_tg__ZTV7S1618C4__A1__7S1618C97S1618C8__A1__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C4__7S1618C8__A1__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C8__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C117S1618C9__7S1618C8__A1__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__7S1618C8__A1__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C20__7S1618C1[7]),  7,8},
  {&(_tg__ZTV8S1618C11__8S1618C20__7S1618C1[7]),  7,9},
  {&(_tg__ZTV7S1618C4__8S1618C20__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C20__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C11__A2__7S1618C1[5]),  5,7},
  {&(_tg__ZTV7S1618C4__8S1618C11__A2__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__A1__8S1618C11__A2__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C24__7S1618C1[7]),  7,10},
  {&(_tg__ZTV7S1618C3__8S1618C24__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C6__8S1618C24__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C67S1618C3__A1__8S1618C24__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C3__A3__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C47S1618C3__A6__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__7S1618C47S1618C3__A6__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C6__7S1618C3__A3__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C27__7S1618C1[3]),  3,3},
  {&(_tg__ZTV8S1618C17__A1__7S1618C1[15]),  15,18},
  {&(_tg__ZTV8S1618C218S1618C17__A2__7S1618C1[7]),  7,8},
  {&(_tg__ZTV7S1618C4__8S1618C218S1618C17__A2__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C218S1618C17__A2__7S1618C1[3]),  3,4},
  {&(_tg__ZTV8S1618C11__8S1618C218S1618C17__A2__7S1618C1[7]),  7,9},
  {&(_tg__ZTV8S1618C18__8S1618C17__A1__7S1618C1[13]),  13,15},
  {&(_tg__ZTV8S1618C19__8S1618C17__A1__7S1618C1[8]),  8,11},
  {&(_tg__ZTV7S1618C4__8S1618C17__A1__7S1618C1[5]),  5,6},
  {&(_tg__ZTV7S1618C6__8S1618C17__A1__7S1618C1[3]),  3,4},
  {&(_tg__ZTV7S1618C2__8S1618C17__A1__7S1618C1[6]),  6,9},
  {&(_tg__ZTV7S1618C67S1618C37S1618C2__A1__8S1618C17__A1__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C38S1618C18__A1__8S1618C17__A1__7S1618C1[5]),  5,8},
  {&(_tg__ZTV7S1618C67S1618C38S1618C18__A2__8S1618C17__A1__7S1618C1[2]),  2,3},
  {&(_tg__ZTV7S1618C8__8S1618C17__A1__7S1618C1[11]),  11,14},
  {&(_tg__ZTV8S1618C117S1618C97S1618C8__8S1618C17__A1__7S1618C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__8S1618C17__A1__7S1618C1[3]),  3,5},
  {&(_tg__ZTV8S1618C20__8S1618C17__A1__7S1618C1[7]),  7,8},
  {&(_tg__ZTV8S1618C11__A1__8S1618C17__A1__7S1618C1[7]),  7,9},
};
extern VTBL_ENTRY _ZTI7S1618C1[];
extern  VTBL_ENTRY _ZTV7S1618C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1618C1[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D0Ev,_ZTv0_n24_N8S1618C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D0Ev,_ZThn40_N8S1618C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C24D1Ev,_ZTv0_n24_N8S1618C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C24D1Ev,_ZThn40_N8S1618C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D0Ev,_ZTv0_n44_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C18D0Ev,_ZThn40_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C18D1Ev,_ZTv0_n44_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1618C18D1Ev,_ZThn40_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D0Ev,_ZTv0_n32_N8S1618C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D0Ev,_ZThn32_N8S1618C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C18D1Ev,_ZTv0_n32_N8S1618C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C18D1Ev,_ZThn32_N8S1618C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1618C7D0Ev,_ZTv0_n44_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1618C7D0Ev,_ZThn112_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1618C7D1Ev,_ZTv0_n44_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1618C7D1Ev,_ZThn112_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1618C7D0Ev,_ZTv0_n32_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S1618C7D0Ev,_ZThn148_N7S1618C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S1618C7D0Ev,_ZThn104_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1618C7D1Ev,_ZTv0_n32_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S1618C7D1Ev,_ZThn148_N7S1618C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S1618C7D1Ev,_ZThn104_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S1618C7D0Ev,_ZTv0_n48_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1618C7D0Ev,_ZThn72_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S1618C7D1Ev,_ZTv0_n48_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1618C7D1Ev,_ZThn72_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S1618C7D0Ev,_ZTv0_n24_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S1618C7D0Ev,_ZThn188_N7S1618C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1618C7D0Ev,_ZThn60_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S1618C7D1Ev,_ZTv0_n24_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S1618C7D1Ev,_ZThn188_N7S1618C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1618C7D1Ev,_ZThn60_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C7D0Ev,_ZTv0_n12_N7S1618C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C7D0Ev,_ZThn56_N7S1618C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C7D1Ev,_ZTv0_n12_N7S1618C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C7D1Ev,_ZThn56_N7S1618C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C25D0Ev,_ZTv0_n24_N8S1618C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C25D0Ev,_ZThn152_N8S1618C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C25D1Ev,_ZTv0_n24_N8S1618C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S1618C25D1Ev,_ZThn152_N8S1618C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C25D0Ev,_ZTv0_n32_N8S1618C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C25D0Ev,_ZThn112_N8S1618C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C25D1Ev,_ZTv0_n32_N8S1618C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S1618C25D1Ev,_ZThn112_N8S1618C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C14D0Ev,_ZTv0_n12_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C14D0Ev,_ZThn32_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C14D1Ev,_ZTv0_n12_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C14D1Ev,_ZThn32_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C14D0Ev,_ZTv0_n44_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C14D0Ev,_ZThn88_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C14D1Ev,_ZTv0_n44_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C14D1Ev,_ZThn88_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C14D0Ev,_ZTv0_n24_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S1618C14D0Ev,_ZThn164_N8S1618C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C14D0Ev,_ZThn36_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C14D1Ev,_ZTv0_n24_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S1618C14D1Ev,_ZThn164_N8S1618C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C14D1Ev,_ZThn36_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C14D0Ev,_ZTv0_n32_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S1618C14D0Ev,_ZThn124_N8S1618C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C14D0Ev,_ZThn80_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C14D1Ev,_ZTv0_n32_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S1618C14D1Ev,_ZThn124_N8S1618C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C14D1Ev,_ZThn80_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C14D0Ev,_ZTv0_n48_N8S1618C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C14D0Ev,_ZThn48_N8S1618C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C14D1Ev,_ZTv0_n48_N8S1618C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C14D1Ev,_ZThn48_N8S1618C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D0Ev,_ZTv0_n44_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C22D0Ev,_ZThn84_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C22D1Ev,_ZTv0_n44_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1618C22D1Ev,_ZThn84_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D0Ev,_ZTv0_n24_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C22D0Ev,_ZThn160_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C22D0Ev,_ZThn32_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C22D1Ev,_ZTv0_n24_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C22D1Ev,_ZThn160_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C22D1Ev,_ZThn32_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D0Ev,_ZTv0_n32_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C22D0Ev,_ZThn120_N8S1618C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1618C22D0Ev,_ZThn76_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C22D1Ev,_ZTv0_n32_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C22D1Ev,_ZThn120_N8S1618C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1618C22D1Ev,_ZThn76_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D0Ev,_ZTv0_n12_N8S1618C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1618C22D0Ev,_ZThn28_N8S1618C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C22D1Ev,_ZTv0_n12_N8S1618C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1618C22D1Ev,_ZThn28_N8S1618C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D0Ev,_ZTv0_n24_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C23D0Ev,_ZThn160_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C23D1Ev,_ZTv0_n24_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S1618C23D1Ev,_ZThn160_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D0Ev,_ZTv0_n32_N8S1618C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C23D0Ev,_ZThn120_N8S1618C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C23D1Ev,_ZTv0_n32_N8S1618C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S1618C23D1Ev,_ZThn120_N8S1618C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D0Ev,_ZTv0_n12_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C17D0Ev,_ZThn32_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S1618C17D1Ev,_ZTv0_n12_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1618C17D1Ev,_ZThn32_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D0Ev,_ZTv0_n44_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C17D0Ev,_ZThn88_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1618C17D1Ev,_ZTv0_n44_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1618C17D1Ev,_ZThn88_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D0Ev,_ZTv0_n24_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C17D0Ev,_ZThn36_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S1618C17D1Ev,_ZTv0_n24_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1618C17D1Ev,_ZThn36_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D0Ev,_ZTv0_n32_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C17D0Ev,_ZThn80_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1618C17D1Ev,_ZTv0_n32_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1618C17D1Ev,_ZThn80_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D0Ev,_ZTv0_n48_N8S1618C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C17D0Ev,_ZThn48_N8S1618C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S1618C17D1Ev,_ZTv0_n48_N8S1618C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1618C17D1Ev,_ZThn48_N8S1618C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D0Ev,_ZTv0_n12_N7S1618C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C8D0Ev,_ZThn56_N7S1618C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C8D1Ev,_ZTv0_n12_N7S1618C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1618C8D1Ev,_ZThn56_N7S1618C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1618C1D0Ev,_ZTv0_n64_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N7S1618C1D0Ev,_ZThn228_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1618C1D1Ev,_ZTv0_n64_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N7S1618C1D1Ev,_ZThn228_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1618C1D0Ev,_ZTv0_n44_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1618C1D0Ev,_ZThn128_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1618C1D1Ev,_ZTv0_n44_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1618C1D1Ev,_ZThn128_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1618C1D0Ev,_ZTv0_n32_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S1618C1D0Ev,_ZThn164_N7S1618C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1618C1D0Ev,_ZThn120_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1618C1D1Ev,_ZTv0_n32_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S1618C1D1Ev,_ZThn164_N7S1618C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1618C1D1Ev,_ZThn120_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S1618C1D0Ev,_ZTv0_n48_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1618C1D0Ev,_ZThn88_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S1618C1D1Ev,_ZTv0_n48_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1618C1D1Ev,_ZThn88_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S1618C1D0Ev,_ZTv0_n24_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S1618C1D0Ev,_ZThn204_N7S1618C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1618C1D0Ev,_ZThn76_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S1618C1D1Ev,_ZTv0_n24_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S1618C1D1Ev,_ZThn204_N7S1618C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1618C1D1Ev,_ZThn76_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C1D0Ev,_ZTv0_n12_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1618C1D0Ev,_ZThn72_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S1618C1D1Ev,_ZTv0_n12_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1618C1D1Ev,_ZThn72_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S1618C1D0Ev,_ZTv0_n84_N7S1618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1618C1D0Ev,_ZThn16_N7S1618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S1618C1D1Ev,_ZTv0_n84_N7S1618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1618C1D1Ev,_ZThn16_N7S1618C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1618C1 = {  "S1618C1", // class name
  bases_S1618C1, 65,
  &(vtc_S1618C1[0]), // expected_vtbl_contents
  &(vtt_S1618C1[0]), // expected_vtt_contents
  ABISELECT(448,232), // object size
  NSPAIRA(_ZTI7S1618C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1618C1),257, //virtual function table var
  21, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1618C1),211, //virtual table table var
  47, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S6103C8C1Ev();
extern void _ZN7S6103C8D1Ev();
Name_Map name_map_S6103C8[] = {
  NSPAIR(_ZN7S6103C8C1Ev),
  NSPAIR(_ZN7S6103C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6103C8[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C8[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
Class_Descriptor cd_S6103C8 = {  "S6103C8", // class name
  0,0,//no base classes
  &(vtc_S6103C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6103C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6103C8),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  S6103C6  : virtual S19894C17_nt , virtual S6103C8 {
  ::S6103C8 s6103c6f0;
  ~S6103C6(); // tgen
  S6103C6(); // tgen
};
//SIG(-1 S6103C6) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S6103C6()
{
  extern Class_Descriptor cd_S6103C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6103C6, buf);
    S6103C6 *dp, &lv = *(dp=new (buf) S6103C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6103C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C6)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S6103C6");
    check_base_class_offset(lv, (S6103C8*), 0, "S6103C6");
    check_field_offset(lv, s6103c6f0, ABISELECT(8,4), "S6103C6.s6103c6f0");
    test_class_info(&lv, &cd_S6103C6);
    dp->~S6103C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C6(Test_S6103C6, "S6103C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6103C6C1Ev();
extern void _ZN7S6103C6D1Ev();
Name_Map name_map_S6103C6[] = {
  NSPAIR(_ZN7S6103C6C1Ev),
  NSPAIR(_ZN7S6103C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
static Base_Class bases_S6103C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C8,    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 _ZTI7S6103C6[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV7S6103C6[];
static  VTT_ENTRY vtt_S6103C6[] = {
  {&(_ZTV7S6103C6[5]),  5,6},
  {&(_ZTV7S6103C6[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
Class_Descriptor cd_S6103C6 = {  "S6103C6", // class name
  bases_S6103C6, 2,
  &(vtc_S6103C6[0]), // expected_vtbl_contents
  &(vtt_S6103C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6103C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6103C6),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6103C6),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  S6103C9  : S6103C8 , S19894C6_nt , virtual S6103C6 {
  virtual void  v2(); // _ZN7S6103C92v2Ev
  ~S6103C9(); // tgen
  S6103C9(); // tgen
};
//SIG(-1 S6103C9) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S6103C9()
{
  extern Class_Descriptor cd_S6103C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6103C9, buf);
    S6103C9 *dp, &lv = *(dp=new (buf) S6103C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6103C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C9)");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*), 0, "S6103C9");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S6103C9");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C9");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(16,8), "S6103C9");
    check_base_class_offset(lv, (S6103C6*), ABISELECT(16,8), "S6103C9");
    test_class_info(&lv, &cd_S6103C9);
    dp->~S6103C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C9(Test_S6103C9, "S6103C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6103C9C1Ev();
extern void _ZN7S6103C9D1Ev();
Name_Map name_map_S6103C9[] = {
  NSPAIR(_ZN7S6103C9C1Ev),
  NSPAIR(_ZN7S6103C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
static Base_Class bases_S6103C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6103C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI7S6103C9[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C9[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV7S6103C9[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C9[] = {
  {&(_ZTV7S6103C9[5]),  5,13},
  {&(_ZTV7S6103C9[12]),  12,13},
  {&(_ZTV7S6103C9[12]),  12,13},
  {&(_tg__ZTV7S6103C6__7S6103C9[5]),  5,6},
  {&(_tg__ZTV7S6103C6__7S6103C9[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
Class_Descriptor cd_S6103C9 = {  "S6103C9", // class name
  bases_S6103C9, 5,
  &(vtc_S6103C9[0]), // expected_vtbl_contents
  &(vtt_S6103C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6103C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6103C9),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6103C9),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C5  : virtual S6103C6 , virtual S6103C9 {
  ~S6103C5(); // tgen
  S6103C5(); // tgen
};
//SIG(-1 S6103C5) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S6103C5()
{
  extern Class_Descriptor cd_S6103C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S6103C5, buf);
    S6103C5 *dp, &lv = *(dp=new (buf) S6103C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S6103C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C5)");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C5");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C5");
    check_base_class_offset(lv, (S6103C6*), ABISELECT(8,4), "S6103C5");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(8,4), "S6103C5");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(24,12), "S6103C5");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(32,16), "S6103C5");
    check_base_class_offset(lv, (S6103C9*), ABISELECT(24,12), "S6103C5");
    test_class_info(&lv, &cd_S6103C5);
    dp->~S6103C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C5(Test_S6103C5, "S6103C5", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S6103C5C1Ev();
extern void _ZN7S6103C5D1Ev();
Name_Map name_map_S6103C5[] = {
  NSPAIR(_ZN7S6103C5C1Ev),
  NSPAIR(_ZN7S6103C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
static Base_Class bases_S6103C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6103C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6103C5[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY vtc_S6103C5[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern VTBL_ENTRY _ZTV7S6103C5[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__7S6103C5[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__7S6103C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__7S6103C5[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C5[] = {
  {&(_ZTV7S6103C5[7]),  7,23},
  {&(_ZTV7S6103C5[13]),  13,23},
  {&(_ZTV7S6103C5[7]),  7,23},
  {&(_ZTV7S6103C5[21]),  21,23},
  {&(_tg__ZTV7S6103C6__7S6103C5[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__7S6103C5[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C5[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__7S6103C5[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__7S6103C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
Class_Descriptor cd_S6103C5 = {  "S6103C5", // class name
  bases_S6103C5, 6,
  &(vtc_S6103C5[0]), // expected_vtbl_contents
  &(vtt_S6103C5[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S6103C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6103C5),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6103C5),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C12  : virtual S19894C17_nt , virtual S19894C6_nt {
  ~S6103C12(); // tgen
  S6103C12(); // tgen
};
//SIG(-1 S6103C12) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S6103C12()
{
  extern Class_Descriptor cd_S6103C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6103C12, buf);
    S6103C12 *dp, &lv = *(dp=new (buf) S6103C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6103C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C12)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S6103C12");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S6103C12");
    test_class_info(&lv, &cd_S6103C12);
    dp->~S6103C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C12(Test_S6103C12, "S6103C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S6103C12C1Ev();
extern void _ZN8S6103C12D1Ev();
Name_Map name_map_S6103C12[] = {
  NSPAIR(_ZN8S6103C12C1Ev),
  NSPAIR(_ZN8S6103C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S6103C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S6103C12[];
static  VTBL_ENTRY vtc_S6103C12[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern VTBL_ENTRY _ZTV8S6103C12[];
static  VTT_ENTRY vtt_S6103C12[] = {
  {&(_ZTV8S6103C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
Class_Descriptor cd_S6103C12 = {  "S6103C12", // class name
  bases_S6103C12, 2,
  &(vtc_S6103C12[0]), // expected_vtbl_contents
  &(vtt_S6103C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S6103C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6103C12),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C12),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  S6103C4  : virtual S6103C5 , S6103C6 , S19894C17_nt , S3619C26 , S6103C12 {
  virtual  ~S6103C4(); // _ZN7S6103C4D2Ev
  S6103C4(); // tgen
};
//SIG(-1 S6103C4) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S6103C4()
{
  extern Class_Descriptor cd_S6103C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S6103C4, buf);
    S6103C4 *dp, &lv = *(dp=new (buf) S6103C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S6103C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C4)");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(48,24), "S6103C4");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(48,24), "S6103C4");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*), ABISELECT(48,24), "S6103C4");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(24,12), "S6103C4");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(24,12), "S6103C4");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(32,16), "S6103C4");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(32,16), "S6103C4");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(48,24), "S6103C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(56,28), "S6103C4");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(48,24), "S6103C4");
    check_base_class_offset(lv, (S6103C5*), ABISELECT(24,12), "S6103C4");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*), 0, "S6103C4");
    /*is_ambiguous_... S6103C4::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S6103C4");
    check_base_class_offset(lv, (S3619C26*), 0, "S6103C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*), ABISELECT(64,32), "S6103C4");
    check_base_class_offset(lv, (S6103C12*), ABISELECT(16,8), "S6103C4");
    test_class_info(&lv, &cd_S6103C4);
    dp->~S6103C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C4(Test_S6103C4, "S6103C4", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S6103C4C1Ev();
extern void _ZN7S6103C4D2Ev();
Name_Map name_map_S6103C4[] = {
  NSPAIR(_ZN7S6103C4C1Ev),
  NSPAIR(_ZN7S6103C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
static Base_Class bases_S6103C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C8,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6103C5,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6103C12,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI7S6103C4[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY vtc_S6103C4[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern VTBL_ENTRY _ZTV7S6103C4[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A__7S6103C4[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__A__7S6103C4[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C4[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C4[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__7S6103C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__7S6103C4[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__7S6103C4[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C4[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__7S6103C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__7S6103C4[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C4[] = {
  {&(_ZTV7S6103C4[9]),  9,39},
  {&(_tg__ZTV7S6103C6__A__7S6103C4[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__A__7S6103C4[3]),  3,4},
  {&(_tg__ZTV8S6103C12__7S6103C4[4]),  4,4},
  {&(_ZTV7S6103C4[23]),  23,39},
  {&(_ZTV7S6103C4[29]),  29,39},
  {&(_ZTV7S6103C4[23]),  23,39},
  {&(_ZTV7S6103C4[37]),  37,39},
  {&(_ZTV7S6103C4[16]),  16,39},
  {&(_tg__ZTV7S6103C5__7S6103C4[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__7S6103C4[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C4[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C5__7S6103C4[7]),  7,9},
  {&(_tg__ZTV7S6103C6__7S6103C4[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__7S6103C4[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C4[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__7S6103C4[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__7S6103C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
Class_Descriptor cd_S6103C4 = {  "S6103C4", // class name
  bases_S6103C4, 12,
  &(vtc_S6103C4[0]), // expected_vtbl_contents
  &(vtt_S6103C4[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S6103C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6103C4),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6103C4),18, //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  S6103C3  : S6103C4 , virtual S21216C26_nt {
  virtual  ~S6103C3(); // _ZN7S6103C3D2Ev
  S6103C3(); // tgen
};
//SIG(-1 S6103C3) C1{ BC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC6 BC8{ m Fp} VBC4 v2}} BC4 BC5 BC9{ m} BC10{ VBC5 VBC8} vd} VBC11{ vd m} vd}


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

static void Test_S6103C3()
{
  extern Class_Descriptor cd_S6103C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S6103C3, buf);
    S6103C3 *dp, &lv = *(dp=new (buf) S6103C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S6103C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C3)");
    /*is_ambiguous_... S6103C3::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(48,24), "S6103C3");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C4*), ABISELECT(48,24), "S6103C3");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*)(S6103C4*), ABISELECT(48,24), "S6103C3");
    /*is_ambiguous_... S6103C3::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(24,12), "S6103C3");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C4*), ABISELECT(24,12), "S6103C3");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(32,16), "S6103C3");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(32,16), "S6103C3");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(48,24), "S6103C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(56,28), "S6103C3");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(48,24), "S6103C3");
    check_base_class_offset(lv, (S6103C5*)(S6103C4*), ABISELECT(24,12), "S6103C3");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C4*), 0, "S6103C3");
    /*is_ambiguous_... S6103C4::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C4*), 0, "S6103C3");
    check_base_class_offset(lv, (S3619C26*)(S6103C4*), 0, "S6103C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*)(S6103C4*), ABISELECT(64,32), "S6103C3");
    check_base_class_offset(lv, (S6103C12*)(S6103C4*), ABISELECT(16,8), "S6103C3");
    check_base_class_offset(lv, (S6103C4*), 0, "S6103C3");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(72,36), "S6103C3");
    test_class_info(&lv, &cd_S6103C3);
    dp->~S6103C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C3(Test_S6103C3, "S6103C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S6103C3C1Ev();
extern void _ZN7S6103C3D2Ev();
Name_Map name_map_S6103C3[] = {
  NSPAIR(_ZN7S6103C3C1Ev),
  NSPAIR(_ZN7S6103C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
extern Class_Descriptor cd_S6103C4;
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S6103C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C8,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(48,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6103C5,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6103C6,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6103C12,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6103C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(72,36), //bcp->offset
    40, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6103C3[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C3D1Ev();
extern void _ZN7S6103C3D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S6103C3D1Ev,_ZTv0_n12_N7S6103C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S6103C3D1Ev,_ZThn36_N7S6103C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6103C3D0Ev,_ZTv0_n12_N7S6103C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S6103C3D0Ev,_ZThn36_N7S6103C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6103C3[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C3D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6103C3D1Ev,_ZTv0_n12_N7S6103C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6103C3D0Ev,_ZTv0_n12_N7S6103C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S6103C3[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C4__7S6103C3[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C67S6103C4__A1__7S6103C3[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C67S6103C4__A1__7S6103C3[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__7S6103C3[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C4__7S6103C3[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C4__7S6103C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C4__7S6103C3[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C4__7S6103C3[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C3[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__7S6103C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__7S6103C3[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__7S6103C3[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C3[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__7S6103C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__7S6103C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C3[] = {
  {&(_ZTV7S6103C3[10]),  10,45},
  {&(_tg__ZTV7S6103C4__7S6103C3[9]),  9,12},
  {&(_tg__ZTV7S6103C67S6103C4__A1__7S6103C3[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C67S6103C4__A1__7S6103C3[3]),  3,4},
  {&(_tg__ZTV8S6103C127S6103C4__7S6103C3[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C4__7S6103C3[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C4__7S6103C3[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C4__7S6103C3[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C4__7S6103C3[7]),  7,9},
  {&(_tg__ZTV8S6103C12__7S6103C4__7S6103C3[4]),  4,4},
  {&(_ZTV7S6103C3[24]),  24,45},
  {&(_ZTV7S6103C3[30]),  30,45},
  {&(_ZTV7S6103C3[24]),  24,45},
  {&(_ZTV7S6103C3[38]),  38,45},
  {&(_ZTV7S6103C3[17]),  17,45},
  {&(_ZTV7S6103C3[43]),  43,45},
  {&(_tg__ZTV7S6103C5__7S6103C3[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__7S6103C3[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C3[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C5__7S6103C3[7]),  7,9},
  {&(_tg__ZTV7S6103C6__7S6103C3[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__7S6103C3[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C3[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__7S6103C3[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__7S6103C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6103C3[];
extern  VTBL_ENTRY _ZTV7S6103C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C3[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6103C3D0Ev,_ZTv0_n12_N7S6103C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6103C3D0Ev,_ZThn36_N7S6103C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6103C3D1Ev,_ZTv0_n12_N7S6103C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6103C3D1Ev,_ZThn36_N7S6103C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C3 = {  "S6103C3", // class name
  bases_S6103C3, 14,
  &(vtc_S6103C3[0]), // expected_vtbl_contents
  &(vtt_S6103C3[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S6103C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6103C3),45, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6103C3),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C14  : S6103C6 , S19894C17_nt , S6103C8 {
  virtual  ~S6103C14(); // _ZN8S6103C14D2Ev
  S6103C14(); // tgen
};
//SIG(-1 S6103C14) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S6103C14()
{
  extern Class_Descriptor cd_S6103C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6103C14, buf);
    S6103C14 *dp, &lv = *(dp=new (buf) S6103C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6103C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C14)");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(24,12), "S6103C14");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C14");
    check_base_class_offset(lv, (S6103C6*), 0, "S6103C14");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S6103C14");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*), ABISELECT(16,8), "S6103C14");
    test_class_info(&lv, &cd_S6103C14);
    dp->~S6103C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C14(Test_S6103C14, "S6103C14", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S6103C14C1Ev();
extern void _ZN8S6103C14D2Ev();
Name_Map name_map_S6103C14[] = {
  NSPAIR(_ZN8S6103C14C1Ev),
  NSPAIR(_ZN8S6103C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
static Base_Class bases_S6103C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C8,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C14[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C14[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C14[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C14[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C14[] = {
  {&(_ZTV8S6103C14[5]),  5,11},
  {&(_tg__ZTV7S6103C6__8S6103C14[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C14[5]),  5,6},
  {&(_ZTV8S6103C14[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
Class_Descriptor cd_S6103C14 = {  "S6103C14", // class name
  bases_S6103C14, 5,
  &(vtc_S6103C14[0]), // expected_vtbl_contents
  &(vtt_S6103C14[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S6103C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6103C14),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C14),4, //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  S6103C17  : S6103C14 {
  ~S6103C17(); // tgen
  S6103C17(); // tgen
};
//SIG(-1 S6103C17) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S6103C17()
{
  extern Class_Descriptor cd_S6103C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6103C17, buf);
    S6103C17 *dp, &lv = *(dp=new (buf) S6103C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6103C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C17)");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), ABISELECT(24,12), "S6103C17");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), 0, "S6103C17");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*), 0, "S6103C17");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), 0, "S6103C17");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(16,8), "S6103C17");
    check_base_class_offset(lv, (S6103C14*), 0, "S6103C17");
    test_class_info(&lv, &cd_S6103C17);
    dp->~S6103C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C17(Test_S6103C17, "S6103C17", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S6103C17C1Ev();
extern void _ZN8S6103C17D1Ev();
Name_Map name_map_S6103C17[] = {
  NSPAIR(_ZN8S6103C17C1Ev),
  NSPAIR(_ZN8S6103C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
static Base_Class bases_S6103C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6103C8,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C17[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C17[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C17[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C17[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__8S6103C17[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C17[] = {
  {&(_ZTV8S6103C17[5]),  5,11},
  {&(_tg__ZTV8S6103C14__8S6103C17[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__8S6103C17[5]),  5,6},
  {&(_tg__ZTV7S6103C68S6103C14__8S6103C17[5]),  5,6},
  {&(_tg__ZTV8S6103C14__8S6103C17[5]),  5,8},
  {&(_ZTV8S6103C17[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
Class_Descriptor cd_S6103C17 = {  "S6103C17", // class name
  bases_S6103C17, 6,
  &(vtc_S6103C17[0]), // expected_vtbl_contents
  &(vtt_S6103C17[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S6103C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S6103C17),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C17),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  S6103C16  : S19894C6_nt , S3619C26 , virtual S6103C6 , virtual S6103C17 {
  ~S6103C16(); // tgen
  S6103C16(); // tgen
};
//SIG(-1 S6103C16) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S6103C16()
{
  extern Class_Descriptor cd_S6103C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S6103C16, buf);
    S6103C16 *dp, &lv = *(dp=new (buf) S6103C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S6103C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C16)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S6103C16");
    check_base_class_offset(lv, (S3619C26*), 0, "S6103C16");
    /*is_ambiguous_... S6103C16::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C16");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*)(S6103C17*), 0, "S6103C16");
    /*is_ambiguous_... S6103C16::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C16");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*)(S6103C17*), 0, "S6103C16");
    /*is_ambiguous_... S6103C16::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*), ABISELECT(16,8), "S6103C16");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(32,16), "S6103C16");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*)(S6103C17*), ABISELECT(32,16), "S6103C16");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*)(S6103C17*), ABISELECT(48,24), "S6103C16");
    check_base_class_offset(lv, (S6103C14*)(S6103C17*), ABISELECT(32,16), "S6103C16");
    check_base_class_offset(lv, (S6103C17*), ABISELECT(32,16), "S6103C16");
    test_class_info(&lv, &cd_S6103C16);
    dp->~S6103C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C16(Test_S6103C16, "S6103C16", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S6103C16C1Ev();
extern void _ZN8S6103C16D1Ev();
Name_Map name_map_S6103C16[] = {
  NSPAIR(_ZN8S6103C16C1Ev),
  NSPAIR(_ZN8S6103C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C17;
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
static Base_Class bases_S6103C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6103C8,    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
    4, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S6103C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6103C17,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C16[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S6103C16D1Ev,_ZThn16_N8S6103C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S6103C16D0Ev,_ZThn16_N8S6103C16D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C16[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C16[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__8S6103C16[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C148S6103C17__8S6103C16[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C16[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C16[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C16[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C17__8S6103C16[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C16[] = {
  {&(_ZTV8S6103C16[7]),  7,28},
  {&(_ZTV8S6103C16[15]),  15,28},
  {&(_ZTV8S6103C16[7]),  7,28},
  {&(_ZTV8S6103C16[22]),  22,28},
  {&(_ZTV8S6103C16[27]),  27,28},
  {&(_tg__ZTV7S6103C6__8S6103C16[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__8S6103C16[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C16[5]),  5,8},
  {&(_tg__ZTV8S6103C148S6103C17__8S6103C16[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C16[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C16[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C16[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C17__8S6103C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6103C16D0Ev,_ZThn16_N8S6103C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6103C16D1Ev,_ZThn16_N8S6103C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C16 = {  "S6103C16", // class name
  bases_S6103C16, 10,
  &(vtc_S6103C16[0]), // expected_vtbl_contents
  &(vtt_S6103C16[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S6103C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6103C16),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C16),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C18  : virtual S6103C14 , virtual S19894C6_nt {
  void *s6103c18f0[9];
  ~S6103C18(); // tgen
  S6103C18(); // tgen
};
//SIG(-1 S6103C18) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S6103C18()
{
  extern Class_Descriptor cd_S6103C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S6103C18, buf);
    S6103C18 *dp, &lv = *(dp=new (buf) S6103C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S6103C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C18)");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), 0, "S6103C18");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), 0, "S6103C18");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(80,40), "S6103C18");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(80,40), "S6103C18");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(96,48), "S6103C18");
    check_base_class_offset(lv, (S6103C14*), ABISELECT(80,40), "S6103C18");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S6103C18");
    check_field_offset(lv, s6103c18f0, ABISELECT(8,4), "S6103C18.s6103c18f0");
    test_class_info(&lv, &cd_S6103C18);
    dp->~S6103C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C18(Test_S6103C18, "S6103C18", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S6103C18C1Ev();
extern void _ZN8S6103C18D1Ev();
Name_Map name_map_S6103C18[] = {
  NSPAIR(_ZN8S6103C18C1Ev),
  NSPAIR(_ZN8S6103C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S6103C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6103C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C18[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C18[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C18[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__8S6103C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__8S6103C18[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__8S6103C18[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C18[] = {
  {&(_ZTV8S6103C18[7]),  7,22},
  {&(_ZTV8S6103C18[16]),  16,22},
  {&(_ZTV8S6103C18[7]),  7,22},
  {&(_ZTV8S6103C18[21]),  21,22},
  {&(_tg__ZTV8S6103C14__8S6103C18[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__8S6103C18[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__8S6103C18[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__8S6103C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C18 = {  "S6103C18", // class name
  bases_S6103C18, 7,
  &(vtc_S6103C18[0]), // expected_vtbl_contents
  &(vtt_S6103C18[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S6103C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6103C18),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C18),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C22  : S6103C6 , virtual S19894C6_nt , S6103C9 {
  int s6103c22f0;
  ~S6103C22(); // tgen
  S6103C22(); // tgen
};
//SIG(-1 S6103C22) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S6103C22()
{
  extern Class_Descriptor cd_S6103C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S6103C22, buf);
    S6103C22 *dp, &lv = *(dp=new (buf) S6103C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S6103C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C22)");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C22");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C22");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C22");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C22");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*), 0, "S6103C22");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S6103C22");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(16,8), "S6103C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(24,12), "S6103C22");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(48,24), "S6103C22");
    check_base_class_offset(lv, (S6103C9*), ABISELECT(16,8), "S6103C22");
    check_field_offset(lv, s6103c22f0, ABISELECT(32,16), "S6103C22.s6103c22f0");
    test_class_info(&lv, &cd_S6103C22);
    dp->~S6103C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C22(Test_S6103C22, "S6103C22", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S6103C22C1Ev();
extern void _ZN8S6103C22D1Ev();
Name_Map name_map_S6103C22[] = {
  NSPAIR(_ZN8S6103C22C1Ev),
  NSPAIR(_ZN8S6103C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
static Base_Class bases_S6103C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6103C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C8,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6103C6,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6103C9,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C22[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C22[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C22[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A__8S6103C22[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__8S6103C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__8S6103C22[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__A1__8S6103C22[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C22[] = {
  {&(_ZTV8S6103C22[7]),  7,21},
  {&(_tg__ZTV7S6103C6__A__8S6103C22[5]),  5,6},
  {&(_tg__ZTV7S6103C6__A__8S6103C22[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C22[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__8S6103C22[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__8S6103C22[3]),  3,4},
  {&(_ZTV8S6103C22[7]),  7,21},
  {&(_ZTV8S6103C22[13]),  13,21},
  {&(_ZTV8S6103C22[20]),  20,21},
  {&(_tg__ZTV7S6103C6__A1__8S6103C22[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__A1__8S6103C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
Class_Descriptor cd_S6103C22 = {  "S6103C22", // class name
  bases_S6103C22, 8,
  &(vtc_S6103C22[0]), // expected_vtbl_contents
  &(vtt_S6103C22[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S6103C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6103C22),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C22),11, //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  S6103C21  : virtual S6103C6 , S6103C22 , virtual S21216C26_nt , S19894C17_nt , virtual S3619C26 {
  ::S19894C17_nt s6103c21f0;
  virtual  ~S6103C21(); // _ZN8S6103C21D2Ev
  S6103C21(); // tgen
};
//SIG(-1 S6103C21) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S6103C21()
{
  extern Class_Descriptor cd_S6103C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S6103C21, buf);
    S6103C21 *dp, &lv = *(dp=new (buf) S6103C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S6103C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C21)");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(56,32), "S6103C21");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C22*), ABISELECT(56,32), "S6103C21");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(40,24), "S6103C21");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C22*), ABISELECT(40,24), "S6103C21");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*), ABISELECT(40,24), "S6103C21");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*)(S6103C22*), ABISELECT(40,24), "S6103C21");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C22*), 0, "S6103C21");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C22*), ABISELECT(56,32), "S6103C21");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*)(S6103C22*), ABISELECT(16,8), "S6103C21");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*)(S6103C22*), ABISELECT(24,12), "S6103C21");
    check_base_class_offset(lv, (S6103C9*)(S6103C22*), ABISELECT(16,8), "S6103C21");
    check_base_class_offset(lv, (S6103C22*), 0, "S6103C21");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(64,36), "S6103C21");
    /*is_ambiguous_... S6103C21::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S6103C21");
    check_base_class_offset(lv, (S3619C26*), 0, "S6103C21");
    check_field_offset(lv, s6103c21f0, ABISELECT(36,20), "S6103C21.s6103c21f0");
    test_class_info(&lv, &cd_S6103C21);
    dp->~S6103C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C21(Test_S6103C21, "S6103C21", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S6103C21C1Ev();
extern void _ZN8S6103C21D2Ev();
Name_Map name_map_S6103C21[] = {
  NSPAIR(_ZN8S6103C21C1Ev),
  NSPAIR(_ZN8S6103C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C22;
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
static Base_Class bases_S6103C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6103C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S6103C21[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C21D1Ev();
extern void _ZN8S6103C21D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev)();
extern void ABISELECT(_ZThn64_N8S6103C21D1Ev,_ZThn36_N8S6103C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev)();
extern void ABISELECT(_ZThn64_N8S6103C21D0Ev,_ZThn36_N8S6103C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6103C21[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S6103C21[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C22__8S6103C21[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C22__A1__8S6103C21[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C22__A1__8S6103C21[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C22__8S6103C21[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C98S6103C22__8S6103C21[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C22__8S6103C21[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C22__8S6103C21[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C21[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C21[] = {
  {&(_ZTV8S6103C21[9]),  9,30},
  {&(_tg__ZTV8S6103C22__8S6103C21[7]),  7,8},
  {&(_tg__ZTV7S6103C68S6103C22__A1__8S6103C21[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C22__A1__8S6103C21[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C22__8S6103C21[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C22__8S6103C21[5]),  5,6},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C22__8S6103C21[5]),  5,6},
  {&(_tg__ZTV7S6103C6__A1__8S6103C22__8S6103C21[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C22__8S6103C21[5]),  5,7},
  {&(_tg__ZTV7S6103C6__A1__8S6103C22__8S6103C21[5]),  5,6},
  {&(_ZTV8S6103C21[24]),  24,30},
  {&(_ZTV8S6103C21[24]),  24,30},
  {&(_ZTV8S6103C21[17]),  17,30},
  {&(_ZTV8S6103C21[28]),  28,30},
  {&(_tg__ZTV7S6103C6__8S6103C21[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C21[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S6103C21[];
extern  VTBL_ENTRY _ZTV8S6103C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C21[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C21D0Ev,_ZThn36_N8S6103C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C21D1Ev,_ZThn36_N8S6103C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C21 = {  "S6103C21", // class name
  bases_S6103C21, 12,
  &(vtc_S6103C21[0]), // expected_vtbl_contents
  &(vtt_S6103C21[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S6103C21),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6103C21),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C21),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C23  : virtual S6103C18 , S19894C17_nt , S6103C5 {
  void *s6103c23f0;
  virtual  ~S6103C23(); // _ZN8S6103C23D2Ev
  S6103C23(); // tgen
};
//SIG(-1 S6103C23) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S6103C23()
{
  extern Class_Descriptor cd_S6103C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S6103C23, buf);
    S6103C23 *dp, &lv = *(dp=new (buf) S6103C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S6103C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C23)");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), ABISELECT(120,60), "S6103C23");
    /*is_ambiguous_... S6103C23::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(120,60), "S6103C23");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), ABISELECT(16,8), "S6103C23");
    /*is_ambiguous_... S6103C23::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(16,8), "S6103C23");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(96,48), "S6103C23");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(96,48), "S6103C23");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(112,56), "S6103C23");
    check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(96,48), "S6103C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(120,60), "S6103C23");
    check_base_class_offset(lv, (S6103C18*), ABISELECT(16,8), "S6103C23");
    /*is_ambiguous_... S6103C23::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S6103C23");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(128,64), "S6103C23");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(128,64), "S6103C23");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(144,72), "S6103C23");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(152,76), "S6103C23");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(144,72), "S6103C23");
    check_base_class_offset(lv, (S6103C5*), 0, "S6103C23");
    check_field_offset(lv, s6103c23f0, ABISELECT(8,4), "S6103C23.s6103c23f0");
    test_class_info(&lv, &cd_S6103C23);
    dp->~S6103C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C23(Test_S6103C23, "S6103C23", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S6103C23C1Ev();
extern void _ZN8S6103C23D2Ev();
Name_Map name_map_S6103C23[] = {
  NSPAIR(_ZN8S6103C23C1Ev),
  NSPAIR(_ZN8S6103C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
static Base_Class bases_S6103C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C6,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6103C8,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6103C5,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C23[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C23D1Ev,_ZThn8_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C23D0Ev,_ZThn8_N8S6103C23D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn96_N8S6103C23D1Ev,_ZThn48_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn96_N8S6103C23D0Ev,_ZThn48_N8S6103C23D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY vtc_S6103C23[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern VTBL_ENTRY _ZTV8S6103C23[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__8S6103C23[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__8S6103C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C5__8S6103C23[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__8S6103C23[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C23[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__8S6103C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C23[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__8S6103C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__8S6103C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__8S6103C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__A1__8S6103C23[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C23[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__8S6103C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__8S6103C23[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C23[] = {
  {&(_ZTV8S6103C23[10]),  10,51},
  {&(_tg__ZTV7S6103C5__8S6103C23[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__8S6103C23[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C5__8S6103C23[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C5__8S6103C23[7]),  7,9},
  {&(_ZTV8S6103C23[21]),  21,51},
  {&(_ZTV8S6103C23[30]),  30,51},
  {&(_ZTV8S6103C23[21]),  21,51},
  {&(_ZTV8S6103C23[35]),  35,51},
  {&(_ZTV8S6103C23[41]),  41,51},
  {&(_ZTV8S6103C23[49]),  49,51},
  {&(_tg__ZTV8S6103C18__8S6103C23[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__8S6103C23[6]),  6,9},
  {&(_tg__ZTV8S6103C18__8S6103C23[7]),  7,10},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C23[2]),  2,3},
  {&(_tg__ZTV8S6103C14__8S6103C23[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__8S6103C23[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__8S6103C23[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__8S6103C23[3]),  3,4},
  {&(_tg__ZTV7S6103C6__A1__8S6103C23[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__A1__8S6103C23[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C23[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__8S6103C23[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__8S6103C23[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C23D0Ev,_ZThn48_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C23D1Ev,_ZThn48_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C23D0Ev,_ZThn8_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C23D1Ev,_ZThn8_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C23 = {  "S6103C23", // class name
  bases_S6103C23, 14,
  &(vtc_S6103C23[0]), // expected_vtbl_contents
  &(vtt_S6103C23[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S6103C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6103C23),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C23),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C20  : virtual S21216C26_nt , virtual S6103C16 , virtual S6103C21 , S6103C23 {
  virtual  ~S6103C20(); // _ZN8S6103C20D2Ev
  S6103C20(); // tgen
};
//SIG(-1 S6103C20) C1{ VBC2{ vd m} VBC3{ BC4{ m Fp} BC5{ m} VBC6{ VBC7{ m} VBC8{ v1} FC8} VBC9{ BC10{ BC6 BC7 BC8 vd}}} VBC11{ VBC6 BC12{ BC6 VBC4 BC13{ BC8 BC4 VBC6 v2} Fi} VBC2 BC7 VBC5 vd FC7} BC14{ VBC15{ VBC10 VBC4 Fp[9]} BC7 BC16{ VBC6 VBC13} vd Fp} vd}


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

static void Test_S6103C20()
{
  extern Class_Descriptor cd_S6103C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S6103C20, buf);
    S6103C20 *dp, &lv = *(dp=new (buf) S6103C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S6103C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C20)");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S6103C20");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C21*), ABISELECT(16,8), "S6103C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*), ABISELECT(32,16), "S6103C20");
    check_base_class_offset(lv, (S3619C26*)(S6103C16*), ABISELECT(24,12), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(56,28), "S6103C20");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(56,28), "S6103C20");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(56,28), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), ABISELECT(56,28), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(24,12), "S6103C20");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(24,12), "S6103C20");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(24,12), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), ABISELECT(24,12), "S6103C20");
    /*is_ambiguous_... S6103C16::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*), ABISELECT(40,20), "S6103C20");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C21*), ABISELECT(40,20), "S6103C20");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(40,20), "S6103C20");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*), ABISELECT(40,20), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(40,20), "S6103C20");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(64,32), "S6103C20");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*)(S6103C17*), ABISELECT(64,32), "S6103C20");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*)(S6103C17*), ABISELECT(80,40), "S6103C20");
    check_base_class_offset(lv, (S6103C14*)(S6103C17*), ABISELECT(64,32), "S6103C20");
    check_base_class_offset(lv, (S6103C17*)(S6103C16*), ABISELECT(64,32), "S6103C20");
    check_base_class_offset(lv, (S6103C16*), ABISELECT(24,12), "S6103C20");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(88,44), "S6103C20");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C22*)(S6103C21*), ABISELECT(128,68), "S6103C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(128,68), "S6103C20");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(104,52), "S6103C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(112,56), "S6103C20");
    check_base_class_offset(lv, (S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(104,52), "S6103C20");
    check_base_class_offset(lv, (S6103C22*)(S6103C21*), ABISELECT(88,44), "S6103C20");
    /*is_ambiguous_... S6103C21::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C21*), ABISELECT(88,44), "S6103C20");
    check_base_class_offset(lv, (S3619C26*)(S6103C21*), 0, "S6103C20");
    check_base_class_offset(lv, (S6103C21*), ABISELECT(88,44), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(216,112), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(216,112), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(232,120), "S6103C20");
    check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(216,112), "S6103C20");
    check_base_class_offset(lv, (S6103C18*)(S6103C23*), ABISELECT(136,72), "S6103C20");
    /*is_ambiguous_... S6103C23::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*), 0, "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(240,124), "S6103C20");
    /*is_ambiguous_... S6103C20::S6103C9 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(248,128), "S6103C20");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*), ABISELECT(240,124), "S6103C20");
    check_base_class_offset(lv, (S6103C5*)(S6103C23*), 0, "S6103C20");
    check_base_class_offset(lv, (S6103C23*), 0, "S6103C20");
    test_class_info(&lv, &cd_S6103C20);
    dp->~S6103C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C20(Test_S6103C20, "S6103C20", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN8S6103C20C1Ev();
extern void _ZN8S6103C20D2Ev();
Name_Map name_map_S6103C20[] = {
  NSPAIR(_ZN8S6103C20C1Ev),
  NSPAIR(_ZN8S6103C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C17;
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C22;
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C21;
extern VTBL_ENTRY _ZTI8S6103C21[];
extern  VTBL_ENTRY _ZTV8S6103C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C21[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
static Base_Class bases_S6103C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(24,12), //bcp->offset
    -1, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(40,20), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(80,40), //bcp->offset
    49, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6103C17,    ABISELECT(64,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6103C16,    ABISELECT(24,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(104,52), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6103C22,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S6103C21,    ABISELECT(88,44), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C6,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(232,120), //bcp->offset
    93, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(216,112), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(136,72), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(240,124), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S6103C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6103C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C20[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C20D1Ev,_ZThn8_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C20D0Ev,_ZThn8_N8S6103C20D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn24_N8S6103C20D1Ev,_ZThn12_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn24_N8S6103C20D0Ev,_ZThn12_N8S6103C20D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S6103C20D1Ev,_ZThn32_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S6103C20D0Ev,_ZThn32_N8S6103C20D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn88_N8S6103C20D1Ev,_ZThn44_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn88_N8S6103C20D0Ev,_ZThn44_N8S6103C20D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn136_N8S6103C20D1Ev,_ZThn72_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn136_N8S6103C20D0Ev,_ZThn72_N8S6103C20D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn216_N8S6103C20D1Ev,_ZThn112_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn216_N8S6103C20D0Ev,_ZThn112_N8S6103C20D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY vtc_S6103C20[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern VTBL_ENTRY _ZTV8S6103C20[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C23__8S6103C20[] = {
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C23__8S6103C20[] = {
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C23__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C23__8S6103C20[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C23__8S6103C20[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S6103C23D1Ev,_ZThn72_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S6103C23D0Ev,_ZThn72_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C23__8S6103C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn216_N8S6103C23D1Ev,_ZThn112_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn216_N8S6103C23D0Ev,_ZThn112_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C23__8S6103C20[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C23__8S6103C20[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C23__8S6103C20[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C23__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C23__8S6103C20[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C20[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZThn40_N8S6103C16D1Ev,_ZThn20_N8S6103C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
extern void ABISELECT(_ZThn40_N8S6103C16D0Ev,_ZThn20_N8S6103C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16__8S6103C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__8S6103C20[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__8S6103C20[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C148S6103C17__8S6103C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C20[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C20[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C17__8S6103C20[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C21D1Ev();
extern void _ZN8S6103C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C20[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C228S6103C21__8S6103C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C228S6103C21__A2__8S6103C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A2__8S6103C20[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__8S6103C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C20[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C21__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C21__8S6103C20[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C21__8S6103C20[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__8S6103C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__8S6103C20[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C20[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C20[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__A3__8S6103C20[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__A3__8S6103C20[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__A1__8S6103C20[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C20[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__A1__8S6103C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__A1__8S6103C20[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C20[] = {
  {&(_ZTV8S6103C20[15]),  15,105},
  {&(_tg__ZTV8S6103C23__8S6103C20[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C23__8S6103C20[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C23__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C23__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C23__8S6103C20[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C23__8S6103C20[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C23__8S6103C20[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C23__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C23__8S6103C20[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C23__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C23__8S6103C20[7]),  7,9},
  {&(_ZTV8S6103C20[21]),  21,105},
  {&(_ZTV8S6103C20[31]),  31,105},
  {&(_ZTV8S6103C20[39]),  39,105},
  {&(_ZTV8S6103C20[31]),  31,105},
  {&(_ZTV8S6103C20[46]),  46,105},
  {&(_ZTV8S6103C20[51]),  51,105},
  {&(_ZTV8S6103C20[63]),  63,105},
  {&(_ZTV8S6103C20[71]),  71,105},
  {&(_ZTV8S6103C20[81]),  81,105},
  {&(_ZTV8S6103C20[90]),  90,105},
  {&(_ZTV8S6103C20[95]),  95,105},
  {&(_ZTV8S6103C20[103]),  103,105},
  {&(_tg__ZTV8S6103C16__8S6103C20[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C16__8S6103C20[5]),  5,6},
  {&(_tg__ZTV8S6103C16__8S6103C20[7]),  7,10},
  {&(_tg__ZTV8S6103C17__8S6103C16__8S6103C20[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__8S6103C20[2]),  2,3},
  {&(_tg__ZTV7S6103C6__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__8S6103C20[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C20[5]),  5,8},
  {&(_tg__ZTV8S6103C148S6103C17__8S6103C20[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C17__8S6103C20[3]),  3,4},
  {&(_tg__ZTV8S6103C21__8S6103C20[9]),  9,12},
  {&(_tg__ZTV8S6103C228S6103C21__8S6103C20[7]),  7,8},
  {&(_tg__ZTV7S6103C68S6103C228S6103C21__A2__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A2__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C20[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C20[5]),  5,7},
  {&(_tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C21__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C21__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C20[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S6103C21__8S6103C20[3]),  3,5},
  {&(_tg__ZTV8S6103C18__8S6103C20[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__8S6103C20[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C20[2]),  2,3},
  {&(_tg__ZTV8S6103C14__A1__8S6103C20[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__A3__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__A3__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__A1__8S6103C20[3]),  3,4},
  {&(_tg__ZTV7S6103C9__A1__8S6103C20[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__A1__8S6103C20[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__A1__8S6103C20[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C16D0Ev,_ZThn20_N8S6103C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C16D1Ev,_ZThn20_N8S6103C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C23D0Ev,_ZThn112_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C23D1Ev,_ZThn112_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C23D0Ev,_ZThn72_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C23D1Ev,_ZThn72_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6103C20D0Ev,_ZThn44_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6103C20D1Ev,_ZThn44_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C20D0Ev,_ZThn112_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C20D0Ev,_ZThn32_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C20D1Ev,_ZThn112_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C20D1Ev,_ZThn32_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C20D0Ev,_ZThn72_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C20D0Ev,_ZThn12_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C20D1Ev,_ZThn72_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C20D1Ev,_ZThn12_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C20D0Ev,_ZThn8_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C20D1Ev,_ZThn8_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C20 = {  "S6103C20", // class name
  bases_S6103C20, 32,
  &(vtc_S6103C20[0]), // expected_vtbl_contents
  &(vtt_S6103C20[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI8S6103C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6103C20),105, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C20),62, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C24  : S6103C20 , virtual S6103C4 {
  virtual  ~S6103C24(); // _ZN8S6103C24D2Ev
  S6103C24(); // tgen
};
//SIG(-1 S6103C24) C1{ BC2{ VBC3{ vd m} VBC4{ BC5{ m Fp} BC6{ m} VBC7{ VBC8{ m} VBC9{ v1} FC9} VBC10{ BC11{ BC7 BC8 BC9 vd}}} VBC12{ VBC7 BC13{ BC7 VBC5 BC14{ BC9 BC5 VBC7 v2} Fi} VBC3 BC8 VBC6 vd FC8} BC15{ VBC16{ VBC11 VBC5 Fp[9]} BC8 BC17{ VBC7 VBC14} vd Fp} vd} VBC18{ VBC17 BC7 BC8 BC6 BC19{ VBC8 VBC5} vd} vd}


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

static void Test_S6103C24()
{
  extern Class_Descriptor cd_S6103C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,38)];
    init_test(&cd_S6103C24, buf);
    S6103C24 *dp, &lv = *(dp=new (buf) S6103C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,148), "sizeof(S6103C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C24)");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*), ABISELECT(16,8), "S6103C24");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C21*), ABISELECT(16,8), "S6103C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*), ABISELECT(32,16), "S6103C24");
    check_base_class_offset(lv, (S3619C26*)(S6103C16*), ABISELECT(24,12), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(56,28), "S6103C24");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(56,28), "S6103C24");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(56,28), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), ABISELECT(56,28), "S6103C24");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C4*), ABISELECT(56,28), "S6103C24");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*)(S6103C4*), ABISELECT(56,28), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(24,12), "S6103C24");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(24,12), "S6103C24");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(24,12), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), ABISELECT(24,12), "S6103C24");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C4*), ABISELECT(24,12), "S6103C24");
    /*is_ambiguous_... S6103C16::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*), ABISELECT(40,20), "S6103C24");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C21*), ABISELECT(40,20), "S6103C24");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(40,20), "S6103C24");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*), ABISELECT(40,20), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(40,20), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(40,20), "S6103C24");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(64,32), "S6103C24");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*)(S6103C17*), ABISELECT(64,32), "S6103C24");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*)(S6103C17*), ABISELECT(80,40), "S6103C24");
    check_base_class_offset(lv, (S6103C14*)(S6103C17*), ABISELECT(64,32), "S6103C24");
    check_base_class_offset(lv, (S6103C17*)(S6103C16*), ABISELECT(64,32), "S6103C24");
    check_base_class_offset(lv, (S6103C16*)(S6103C20*), ABISELECT(24,12), "S6103C24");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(88,44), "S6103C24");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C22*)(S6103C21*), ABISELECT(128,68), "S6103C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(128,68), "S6103C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*)(S6103C4*), ABISELECT(128,68), "S6103C24");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(104,52), "S6103C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(112,56), "S6103C24");
    check_base_class_offset(lv, (S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(104,52), "S6103C24");
    check_base_class_offset(lv, (S6103C22*)(S6103C21*), ABISELECT(88,44), "S6103C24");
    /*is_ambiguous_... S6103C21::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C21*), ABISELECT(88,44), "S6103C24");
    check_base_class_offset(lv, (S3619C26*)(S6103C21*), 0, "S6103C24");
    check_base_class_offset(lv, (S6103C21*)(S6103C20*), ABISELECT(88,44), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(216,112), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(216,112), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(232,120), "S6103C24");
    check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(216,112), "S6103C24");
    check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*), ABISELECT(136,72), "S6103C24");
    /*is_ambiguous_... S6103C23::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*), 0, "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(240,124), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C9 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(248,128), "S6103C24");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*), ABISELECT(240,124), "S6103C24");
    /*is_ambiguous_... S6103C24::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(240,124), "S6103C24");
    check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*), 0, "S6103C24");
    check_base_class_offset(lv, (S6103C23*)(S6103C20*), 0, "S6103C24");
    check_base_class_offset(lv, (S6103C20*), 0, "S6103C24");
    check_base_class_offset(lv, (S6103C5*)(S6103C4*), ABISELECT(280,144), "S6103C24");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C4*), ABISELECT(256,132), "S6103C24");
    /*is_ambiguous_... S6103C4::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C4*), ABISELECT(256,132), "S6103C24");
    check_base_class_offset(lv, (S3619C26*)(S6103C4*), ABISELECT(256,132), "S6103C24");
    check_base_class_offset(lv, (S6103C12*)(S6103C4*), ABISELECT(272,140), "S6103C24");
    check_base_class_offset(lv, (S6103C4*), ABISELECT(256,132), "S6103C24");
    test_class_info(&lv, &cd_S6103C24);
    dp->~S6103C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C24(Test_S6103C24, "S6103C24", ABISELECT(288,148));

#else // __cplusplus

extern void _ZN8S6103C24C1Ev();
extern void _ZN8S6103C24D2Ev();
Name_Map name_map_S6103C24[] = {
  NSPAIR(_ZN8S6103C24C1Ev),
  NSPAIR(_ZN8S6103C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C17;
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C22;
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C21;
extern VTBL_ENTRY _ZTI8S6103C21[];
extern  VTBL_ENTRY _ZTV8S6103C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C21[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
extern Class_Descriptor cd_S6103C4;
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
static Base_Class bases_S6103C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //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
    20, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(40,20), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(80,40), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6103C17,    ABISELECT(64,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6103C16,    ABISELECT(24,12), //bcp->offset
    25, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(104,52), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6103C22,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S6103C21,    ABISELECT(88,44), //bcp->offset
    54, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(232,120), //bcp->offset
    95, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(216,112), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(136,72), //bcp->offset
    75, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(240,124), //bcp->offset
    98, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S6103C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6103C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6103C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C5,    ABISELECT(280,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S6103C12,    ABISELECT(272,140), //bcp->offset
    120, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S6103C4,    ABISELECT(256,132), //bcp->offset
    107, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C24[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C24D1Ev();
extern void _ZN8S6103C24D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn24_N8S6103C24D1Ev,_ZThn12_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn24_N8S6103C24D0Ev,_ZThn12_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn64_N8S6103C24D1Ev,_ZThn32_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn64_N8S6103C24D0Ev,_ZThn32_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn88_N8S6103C24D1Ev,_ZThn44_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn88_N8S6103C24D0Ev,_ZThn44_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn136_N8S6103C24D1Ev,_ZThn72_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn136_N8S6103C24D0Ev,_ZThn72_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn216_N8S6103C24D1Ev,_ZThn112_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn216_N8S6103C24D0Ev,_ZThn112_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn256_N8S6103C24D1Ev,_ZThn132_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn256_N8S6103C24D0Ev,_ZThn132_N8S6103C24D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C24[] = {
  ABISELECT(280,144),
  ABISELECT(256,132),
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-256,-132),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-216,-112),
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev),
  ABISELECT(-144,-72),
  ABISELECT(-216,-112),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  ABISELECT(-40,-20),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-256,-132),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C24[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C20__8S6103C24[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C20__8S6103C24[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C20__8S6103C24[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S6103C23D1Ev,_ZThn72_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S6103C23D0Ev,_ZThn72_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn216_N8S6103C23D1Ev,_ZThn112_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn216_N8S6103C23D0Ev,_ZThn112_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C20__8S6103C24[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C20__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C20__8S6103C24[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C20D1Ev,_ZThn8_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C20D0Ev,_ZThn8_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C20__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn24_N8S6103C20D1Ev,_ZThn12_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn24_N8S6103C20D0Ev,_ZThn12_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C20__8S6103C24[] = {
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C20__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S6103C20D1Ev,_ZThn32_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S6103C20D0Ev,_ZThn32_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C20__8S6103C24[] = {
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C20__8S6103C24[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn88_N8S6103C20D1Ev,_ZThn44_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn88_N8S6103C20D0Ev,_ZThn44_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C20__8S6103C24[] = {
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C20__8S6103C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn136_N8S6103C20D1Ev,_ZThn72_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn136_N8S6103C20D0Ev,_ZThn72_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C20__8S6103C24[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn216_N8S6103C20D1Ev,_ZThn112_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn216_N8S6103C20D0Ev,_ZThn112_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C20__8S6103C24[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C20__8S6103C24[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C20__8S6103C24[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C24[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZThn40_N8S6103C16D1Ev,_ZThn20_N8S6103C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
extern void ABISELECT(_ZThn40_N8S6103C16D0Ev,_ZThn20_N8S6103C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16__8S6103C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__8S6103C24[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__8S6103C24[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C148S6103C17__8S6103C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C24[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C24[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C17__8S6103C24[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C21D1Ev();
extern void _ZN8S6103C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C24[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C228S6103C21__8S6103C24[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C228S6103C21__A2__8S6103C24[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A2__8S6103C24[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__8S6103C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C24[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C21__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C21__8S6103C24[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C21__8S6103C24[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__8S6103C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__8S6103C24[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C24[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C24[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__A3__8S6103C24[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__A3__8S6103C24[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__A1__8S6103C24[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C24[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__A1__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__A1__8S6103C24[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C24[] = {
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-216,-112),
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C67S6103C4__A4__8S6103C24[] = {
  ABISELECT(-232,-120),
  ABISELECT(-200,-104),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C67S6103C4__A4__8S6103C24[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C24[] = {
  ABISELECT(-144,-72),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C4__8S6103C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-256,-132),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C4__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C4__8S6103C24[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C4__8S6103C24[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C4__8S6103C24[] = {
  ABISELECT(-144,-72),
  ABISELECT(-216,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A1__8S6103C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__A1__8S6103C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C5__A1__8S6103C24[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__A1__8S6103C24[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTT_ENTRY vtt_S6103C24[] = {
  {&(_ZTV8S6103C24[17]),  17,132},
  {&(_tg__ZTV8S6103C20__8S6103C24[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C20__8S6103C24[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C20__8S6103C24[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C20__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C20__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C20__8S6103C24[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C20__8S6103C24[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C20__8S6103C24[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C20__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C20__8S6103C24[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C20__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C20__8S6103C24[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C20__8S6103C24[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C20__8S6103C24[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C20__8S6103C24[5]),  5,6},
  {&(_tg__ZTV8S6103C16__8S6103C20__8S6103C24[8]),  8,11},
  {&(_tg__ZTV8S6103C17__8S6103C20__8S6103C24[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C20__8S6103C24[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C20__8S6103C24[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C20__8S6103C24[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C20__8S6103C24[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C20__8S6103C24[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C20__8S6103C24[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C20__8S6103C24[7]),  7,9},
  {&(_ZTV8S6103C24[23]),  23,132},
  {&(_ZTV8S6103C24[33]),  33,132},
  {&(_ZTV8S6103C24[41]),  41,132},
  {&(_ZTV8S6103C24[33]),  33,132},
  {&(_ZTV8S6103C24[48]),  48,132},
  {&(_ZTV8S6103C24[53]),  53,132},
  {&(_ZTV8S6103C24[65]),  65,132},
  {&(_ZTV8S6103C24[73]),  73,132},
  {&(_ZTV8S6103C24[83]),  83,132},
  {&(_ZTV8S6103C24[92]),  92,132},
  {&(_ZTV8S6103C24[97]),  97,132},
  {&(_ZTV8S6103C24[105]),  105,132},
  {&(_ZTV8S6103C24[117]),  117,132},
  {&(_ZTV8S6103C24[131]),  131,132},
  {&(_ZTV8S6103C24[124]),  124,132},
  {&(_tg__ZTV8S6103C16__8S6103C24[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C16__8S6103C24[5]),  5,6},
  {&(_tg__ZTV8S6103C16__8S6103C24[7]),  7,10},
  {&(_tg__ZTV8S6103C17__8S6103C16__8S6103C24[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__8S6103C24[2]),  2,3},
  {&(_tg__ZTV7S6103C6__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__8S6103C24[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C24[5]),  5,8},
  {&(_tg__ZTV8S6103C148S6103C17__8S6103C24[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C17__8S6103C24[3]),  3,4},
  {&(_tg__ZTV8S6103C21__8S6103C24[9]),  9,12},
  {&(_tg__ZTV8S6103C228S6103C21__8S6103C24[7]),  7,8},
  {&(_tg__ZTV7S6103C68S6103C228S6103C21__A2__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A2__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C24[5]),  5,7},
  {&(_tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C21__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C21__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C24[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S6103C21__8S6103C24[3]),  3,5},
  {&(_tg__ZTV8S6103C18__8S6103C24[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__8S6103C24[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C24[2]),  2,3},
  {&(_tg__ZTV8S6103C14__A1__8S6103C24[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__A3__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__A3__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__A1__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C9__A1__8S6103C24[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__A1__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__A1__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C4__8S6103C24[9]),  9,12},
  {&(_tg__ZTV7S6103C67S6103C4__A4__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C67S6103C4__A4__8S6103C24[3]),  3,4},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C24[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C4__8S6103C24[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C4__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C4__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C4__8S6103C24[7]),  7,9},
  {&(_tg__ZTV8S6103C12__7S6103C4__8S6103C24[4]),  4,4},
  {&(_tg__ZTV7S6103C5__A1__8S6103C24[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__A1__8S6103C24[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C5__A1__8S6103C24[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C5__A1__8S6103C24[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S6103C24[];
extern  VTBL_ENTRY _ZTV8S6103C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C24[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C16D0Ev,_ZThn20_N8S6103C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C16D1Ev,_ZThn20_N8S6103C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6103C20D0Ev,_ZThn44_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6103C20D1Ev,_ZThn44_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C20D0Ev,_ZThn112_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C20D0Ev,_ZThn32_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C20D1Ev,_ZThn112_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C20D1Ev,_ZThn32_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C20D0Ev,_ZThn72_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C20D0Ev,_ZThn12_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C20D1Ev,_ZThn72_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C20D1Ev,_ZThn12_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C20D0Ev,_ZThn8_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C20D1Ev,_ZThn8_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C23D0Ev,_ZThn112_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C23D1Ev,_ZThn112_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C23D0Ev,_ZThn72_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C23D1Ev,_ZThn72_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6103C24D0Ev,_ZThn132_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6103C24D1Ev,_ZThn132_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6103C24D0Ev,_ZThn44_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6103C24D1Ev,_ZThn44_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C24D0Ev,_ZThn112_N8S6103C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C24D0Ev,_ZThn32_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C24D1Ev,_ZThn112_N8S6103C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C24D1Ev,_ZThn32_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C24D0Ev,_ZThn72_N8S6103C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C24D0Ev,_ZThn12_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C24D1Ev,_ZThn72_N8S6103C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C24D1Ev,_ZThn12_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C24 = {  "S6103C24", // class name
  bases_S6103C24, 39,
  &(vtc_S6103C24[0]), // expected_vtbl_contents
  &(vtt_S6103C24[0]), // expected_vtt_contents
  ABISELECT(288,148), // object size
  NSPAIRA(_ZTI8S6103C24),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6103C24),132, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C24),91, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C26  : virtual S3619C26 , virtual S6103C6 , S6103C8 , virtual S6103C18 {
  virtual  ~S6103C26(); // _ZN8S6103C26D2Ev
  S6103C26(); // tgen
};
//SIG(-1 S6103C26) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ v1} FC5} BC5 VBC6{ VBC7{ BC3 BC4 BC5 vd} VBC8{ m Fp} Fp[9]} vd}


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

static void Test_S6103C26()
{
  extern Class_Descriptor cd_S6103C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S6103C26, buf);
    S6103C26 *dp, &lv = *(dp=new (buf) S6103C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S6103C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C26)");
    check_base_class_offset(lv, (S3619C26*), 0, "S6103C26");
    /*is_ambiguous_... S6103C26::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C26");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), 0, "S6103C26");
    /*is_ambiguous_... S6103C26::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(8,4), "S6103C26");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), ABISELECT(8,4), "S6103C26");
    /*is_ambiguous_... S6103C26::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*), ABISELECT(8,4), "S6103C26");
    /*is_ambiguous_... S6103C26::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*), 0, "S6103C26");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(104,52), "S6103C26");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(104,52), "S6103C26");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(120,60), "S6103C26");
    check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(104,52), "S6103C26");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(128,64), "S6103C26");
    check_base_class_offset(lv, (S6103C18*), ABISELECT(24,12), "S6103C26");
    test_class_info(&lv, &cd_S6103C26);
    dp->~S6103C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C26(Test_S6103C26, "S6103C26", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN8S6103C26C1Ev();
extern void _ZN8S6103C26D2Ev();
Name_Map name_map_S6103C26[] = {
  NSPAIR(_ZN8S6103C26C1Ev),
  NSPAIR(_ZN8S6103C26D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
static Base_Class bases_S6103C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6103C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C6,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(120,60), //bcp->offset
    38, //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
    8, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(104,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C26[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C26D1Ev();
extern void _ZN8S6103C26D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev)();
extern void ABISELECT(_ZThn24_N8S6103C26D1Ev,_ZThn12_N8S6103C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev)();
extern void ABISELECT(_ZThn24_N8S6103C26D0Ev,_ZThn12_N8S6103C26D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev)();
extern void ABISELECT(_ZThn104_N8S6103C26D1Ev,_ZThn52_N8S6103C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev)();
extern void ABISELECT(_ZThn104_N8S6103C26D0Ev,_ZThn52_N8S6103C26D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY vtc_S6103C26[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6103C26[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C26[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C26[] = {
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__8S6103C26[] = {
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__8S6103C26[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C26[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C26[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__A1__8S6103C26[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__A1__8S6103C26[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__8S6103C26[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C26[] = {
  {&(_ZTV8S6103C26[9]),  9,41},
  {&(_ZTV8S6103C26[17]),  17,41},
  {&(_ZTV8S6103C26[17]),  17,41},
  {&(_ZTV8S6103C26[26]),  26,41},
  {&(_ZTV8S6103C26[35]),  35,41},
  {&(_ZTV8S6103C26[40]),  40,41},
  {&(_tg__ZTV7S6103C6__8S6103C26[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C26[5]),  5,6},
  {&(_tg__ZTV8S6103C18__8S6103C26[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__8S6103C26[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__8S6103C26[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C26[2]),  2,3},
  {&(_tg__ZTV8S6103C14__8S6103C26[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__A1__8S6103C26[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__A1__8S6103C26[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__8S6103C26[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6103C26[];
extern  VTBL_ENTRY _ZTV8S6103C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C26[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6103C26D0Ev,_ZThn52_N8S6103C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6103C26D1Ev,_ZThn52_N8S6103C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C26D0Ev,_ZThn12_N8S6103C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C26D1Ev,_ZThn12_N8S6103C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C26 = {  "S6103C26", // class name
  bases_S6103C26, 11,
  &(vtc_S6103C26[0]), // expected_vtbl_contents
  &(vtt_S6103C26[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI8S6103C26),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6103C26),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C26),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C19  : S6103C5 , S6103C20 , virtual S6103C24 , S3619C16 , virtual S6103C26 {
  ~S6103C19(); // tgen
  S6103C19(); // tgen
};
//SIG(-1 S6103C19) C1{ BC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC8{ VBC9{ vd m} VBC10{ BC7 BC11{ m} VBC3 VBC12{ BC13{ BC3 BC4 BC5 vd}}} VBC14{ VBC3 BC15{ BC3 VBC7 BC6 Fi} VBC9 BC4 VBC11 vd FC4} BC16{ VBC17{ VBC13 VBC7 Fp[9]} BC4 BC2 vd Fp} vd} VBC18{ BC8 VBC19{ VBC2 BC3 BC4 BC11 BC20{ VBC4 VBC7} vd} vd} BC21{ m} VBC22{ VBC11 VBC3 BC5 VBC17 vd}}


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

static void Test_S6103C19()
{
  extern Class_Descriptor cd_S6103C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,41)];
    init_test(&cd_S6103C19, buf);
    S6103C19 *dp, &lv = *(dp=new (buf) S6103C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,160), "sizeof(S6103C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C19)");
    /*is_ambiguous_... S6103C19::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C19");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*)(S6103C17*), 0, "S6103C19");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C22*)(S6103C21*), 0, "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), 0, "S6103C19");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C4*), 0, "S6103C19");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*)(S6103C4*), 0, "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C19");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*)(S6103C17*), 0, "S6103C19");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C22*)(S6103C21*), 0, "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), 0, "S6103C19");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C4*), 0, "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C16::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C21*), ABISELECT(24,12), "S6103C19");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*), ABISELECT(24,12), "S6103C19");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C26::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C26*), ABISELECT(24,12), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(40,20), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C9 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(48,24), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(40,20), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*), ABISELECT(40,20), "S6103C19");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(40,20), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(40,20), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C5*), 0, "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*), ABISELECT(56,28), "S6103C19");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C21*), ABISELECT(56,28), "S6103C19");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*)(S6103C24*), ABISELECT(56,28), "S6103C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*), ABISELECT(72,36), "S6103C19");
    check_base_class_offset(lv, (S3619C26*)(S6103C16*), ABISELECT(64,32), "S6103C19");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(80,40), "S6103C19");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*)(S6103C17*), ABISELECT(80,40), "S6103C19");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*)(S6103C17*), ABISELECT(96,48), "S6103C19");
    check_base_class_offset(lv, (S6103C14*)(S6103C17*), ABISELECT(80,40), "S6103C19");
    check_base_class_offset(lv, (S6103C17*)(S6103C16*), ABISELECT(80,40), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C16*)(S6103C20*), ABISELECT(64,32), "S6103C19");
    check_base_class_offset(lv, (S6103C16*)(S6103C20*)(S6103C24*), ABISELECT(64,32), "S6103C19");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(104,52), "S6103C19");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C22*)(S6103C21*), ABISELECT(144,76), "S6103C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(144,76), "S6103C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*)(S6103C4*), ABISELECT(144,76), "S6103C19");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(120,60), "S6103C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(128,64), "S6103C19");
    check_base_class_offset(lv, (S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(120,60), "S6103C19");
    check_base_class_offset(lv, (S6103C22*)(S6103C21*), ABISELECT(104,52), "S6103C19");
    /*is_ambiguous_... S6103C21::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C21*), ABISELECT(104,52), "S6103C19");
    check_base_class_offset(lv, (S3619C26*)(S6103C21*), 0, "S6103C19");
    check_base_class_offset(lv, (S3619C26*)(S6103C26*), 0, "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C21*)(S6103C20*), ABISELECT(104,52), "S6103C19");
    check_base_class_offset(lv, (S6103C21*)(S6103C20*)(S6103C24*), ABISELECT(104,52), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(232,120), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(232,120), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(248,128), "S6103C19");
    check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(232,120), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*), ABISELECT(152,80), "S6103C19");
    check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(152,80), "S6103C19");
    check_base_class_offset(lv, (S6103C18*)(S6103C26*), ABISELECT(152,80), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*), ABISELECT(8,4), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*), ABISELECT(8,4), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C23*)(S6103C20*), ABISELECT(8,4), "S6103C19");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C20*), ABISELECT(8,4), "S6103C19");
    /*is_ambiguous_... S6103C23::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(256,132), "S6103C19");
    check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(256,132), "S6103C19");
    check_base_class_offset(lv, (S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(256,132), "S6103C19");
    check_base_class_offset(lv, (S6103C20*)(S6103C24*), ABISELECT(256,132), "S6103C19");
    check_base_class_offset(lv, (S6103C5*)(S6103C4*), ABISELECT(296,152), "S6103C19");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C4*), ABISELECT(272,140), "S6103C19");
    /*is_ambiguous_... S6103C4::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C4*), ABISELECT(272,140), "S6103C19");
    check_base_class_offset(lv, (S3619C26*)(S6103C4*), ABISELECT(272,140), "S6103C19");
    check_base_class_offset(lv, (S6103C12*)(S6103C4*), ABISELECT(288,148), "S6103C19");
    check_base_class_offset(lv, (S6103C4*)(S6103C24*), ABISELECT(272,140), "S6103C19");
    check_base_class_offset(lv, (S6103C24*), ABISELECT(256,132), "S6103C19");
    check_base_class_offset(lv, (S3619C16*), 0, "S6103C19");
    /*is_ambiguous_... S6103C26::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C26*), ABISELECT(304,156), "S6103C19");
    check_base_class_offset(lv, (S6103C26*), ABISELECT(304,156), "S6103C19");
    test_class_info(&lv, &cd_S6103C19);
    dp->~S6103C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C19(Test_S6103C19, "S6103C19", ABISELECT(312,160));

#else // __cplusplus

extern void _ZN8S6103C19C1Ev();
extern void _ZN8S6103C19D1Ev();
Name_Map name_map_S6103C19[] = {
  NSPAIR(_ZN8S6103C19C1Ev),
  NSPAIR(_ZN8S6103C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C17;
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C22;
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C21;
extern VTBL_ENTRY _ZTI8S6103C21[];
extern  VTBL_ENTRY _ZTV8S6103C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C21[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
extern Class_Descriptor cd_S6103C4;
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
extern Class_Descriptor cd_S6103C24;
extern VTBL_ENTRY _ZTI8S6103C24[];
extern  VTBL_ENTRY _ZTV8S6103C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C24[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C26;
extern VTBL_ENTRY _ZTI8S6103C26[];
extern  VTBL_ENTRY _ZTV8S6103C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C26[];
static Base_Class bases_S6103C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6103C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(24,12), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(40,20), //bcp->offset
    46, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6103C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    55, //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
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6103C6,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(96,48), //bcp->offset
    80, //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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6103C17,    ABISELECT(80,40), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6103C16,    ABISELECT(64,32), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(120,60), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6103C22,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6103C21,    ABISELECT(104,52), //bcp->offset
    83, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(248,128), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(232,120), //bcp->offset
    115, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(152,80), //bcp->offset
    104, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6103C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6103C23,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6103C20,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6103C23,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6103C20,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(296,152), //bcp->offset
    165, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S6103C12,    ABISELECT(288,148), //bcp->offset
    161, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S6103C4,    ABISELECT(272,140), //bcp->offset
    148, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S6103C24,    ABISELECT(256,132), //bcp->offset
    127, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C8,    ABISELECT(304,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
    28, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S6103C26,    ABISELECT(304,156), //bcp->offset
    173, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C19[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C19D1Ev();
extern void _ZN8S6103C19D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZThn8_N8S6103C19D1Ev,_ZThn4_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6103C19D0Ev,_ZThn4_N8S6103C19D0Ev)();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn56_N8S6103C19D1Ev,_ZThn28_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn56_N8S6103C19D0Ev,_ZThn28_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S6103C19D1Ev,_ZThn32_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S6103C19D0Ev,_ZThn32_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C19D1Ev,_ZThn40_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C19D0Ev,_ZThn40_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn104_N8S6103C19D1Ev,_ZThn52_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn104_N8S6103C19D0Ev,_ZThn52_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn152_N8S6103C19D1Ev,_ZThn80_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn152_N8S6103C19D0Ev,_ZThn80_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn232_N8S6103C19D1Ev,_ZThn120_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn232_N8S6103C19D0Ev,_ZThn120_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn256_N8S6103C19D1Ev,_ZThn132_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn256_N8S6103C19D0Ev,_ZThn132_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn272_N8S6103C19D1Ev,_ZThn140_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn272_N8S6103C19D0Ev,_ZThn140_N8S6103C19D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn304_N8S6103C19D1Ev,_ZThn156_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn304_N8S6103C19D0Ev,_ZThn156_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6103C19[] = {
  ABISELECT(304,156),
  ABISELECT(296,152),
  ABISELECT(272,140),
  ABISELECT(256,132),
  ABISELECT(232,120),
  ABISELECT(152,80),
  0,
  ABISELECT(144,76),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C19D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(136,72),
  ABISELECT(224,116),
  ABISELECT(144,76),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6103C19D1Ev,_ZThn4_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6103C19D0Ev,_ZThn4_N8S6103C19D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-256,-132),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-256,-132),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-200,-104),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev),
  ABISELECT(-272,-140),
  ABISELECT(-128,-64),
  ABISELECT(-232,-120),
  ABISELECT(-248,-128),
  ABISELECT(24,12),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev),
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-304,-156),
  0,
  ABISELECT(-160,-80),
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-304,-156),
  ABISELECT(-304,-156),
  ABISELECT(-280,-144),
  ABISELECT(-304,-156),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S6103C19[];
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A__8S6103C19[] = {
  ABISELECT(40,20),
  0,
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__A__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__A__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C20__8S6103C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(136,72),
  ABISELECT(224,116),
  ABISELECT(144,76),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C20__8S6103C19[] = {
  ABISELECT(136,72),
  ABISELECT(224,116),
  ABISELECT(144,76),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C20__A1__8S6103C19[] = {
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C20__A1__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C20__A1__8S6103C19[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C20__A1__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn144_N8S6103C23D1Ev,_ZThn76_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn144_N8S6103C23D0Ev,_ZThn76_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C20__8S6103C19[] = {
  ABISELECT(-144,-76),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn224_N8S6103C23D1Ev,_ZThn116_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn224_N8S6103C23D0Ev,_ZThn116_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C20__8S6103C19[] = {
  ABISELECT(-224,-116),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C20__8S6103C19[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C20__8S6103C19[] = {
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C20__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C20__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S6103C20D1Ev,_ZThn24_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S6103C20D0Ev,_ZThn24_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C20__8S6103C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn56_N8S6103C20D1Ev,_ZThn28_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn56_N8S6103C20D0Ev,_ZThn28_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C20__8S6103C19[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C20__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C20__8S6103C19[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn72_N8S6103C20D1Ev,_ZThn36_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn72_N8S6103C20D0Ev,_ZThn36_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C20__8S6103C19[] = {
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C20__8S6103C19[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S6103C20D1Ev,_ZThn48_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S6103C20D0Ev,_ZThn48_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C20__8S6103C19[] = {
  ABISELECT(-96,-48),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C20__8S6103C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn144_N8S6103C20D1Ev,_ZThn76_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn144_N8S6103C20D0Ev,_ZThn76_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C20__8S6103C19[] = {
  ABISELECT(-144,-76),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn224_N8S6103C20D1Ev,_ZThn116_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn224_N8S6103C20D0Ev,_ZThn116_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C20__8S6103C19[] = {
  ABISELECT(-224,-116),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C20__8S6103C19[] = {
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C20__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__8S6103C19[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C19[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__8S6103C19[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C19[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C16__8S6103C19[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C16D1Ev,_ZThn8_N8S6103C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C16D0Ev,_ZThn8_N8S6103C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16__8S6103C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__8S6103C19[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C148S6103C17__8S6103C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C19[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C19[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C17__8S6103C19[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C21D1Ev();
extern void _ZN8S6103C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C228S6103C21__8S6103C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C228S6103C21__A2__8S6103C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A2__8S6103C19[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__A1__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__A1__8S6103C19[] = {
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C19[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C21__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C21__8S6103C19[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C21__8S6103C19[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__8S6103C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__8S6103C19[] = {
  0,
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C19[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C19[] = {
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__A3__8S6103C19[] = {
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__A3__8S6103C19[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__A1__8S6103C19[] = {
  0,
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C24D1Ev();
extern void _ZN8S6103C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C24__8S6103C19[] = {
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-256,-132),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-200,-104),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(-256,-132),
  ABISELECT(-152,-80),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-200,-104),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[] = {
  ABISELECT(-216,-112),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-232,-120),
  ABISELECT(-256,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C208S6103C24__A1__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(200,104),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(192,100),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C208S6103C24__A1__8S6103C19[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(176,92),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(152,80),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C24__A1__8S6103C19[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C208S6103C24__A1__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C24__8S6103C19[] = {
  ABISELECT(200,104),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C24__8S6103C19[] = {
  ABISELECT(192,100),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C24__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C24__8S6103C19[] = {
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C24__8S6103C19[] = {
  ABISELECT(176,92),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C24__8S6103C19[] = {
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C24__8S6103C19[] = {
  ABISELECT(152,80),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(40,24),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24__8S6103C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C24__8S6103C19[] = {
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C24__8S6103C19[] = {
  ABISELECT(24,12),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C24__8S6103C19[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C24__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C24__8S6103C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-232,-120),
  ABISELECT(-248,-128),
  ABISELECT(24,12),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A1__8S6103C24__8S6103C19[] = {
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C24__8S6103C19[] = {
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C19[] = {
  ABISELECT(-128,-64),
  ABISELECT(-232,-120),
  ABISELECT(-248,-128),
  ABISELECT(24,12),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C67S6103C4__A4__8S6103C19[] = {
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C67S6103C4__A4__8S6103C19[] = {
  0,
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C19[] = {
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C4__8S6103C19[] = {
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C4__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C4__8S6103C19[] = {
  0,
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C4__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C4__8S6103C19[] = {
  ABISELECT(-144,-72),
  ABISELECT(-288,-148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A3__8S6103C19[] = {
  ABISELECT(-256,-132),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-272,-140),
  ABISELECT(-296,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__A3__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C5__A3__8S6103C19[] = {
  0,
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__A3__8S6103C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C26D1Ev();
extern void _ZN8S6103C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C26__8S6103C19[] = {
  ABISELECT(-160,-80),
  ABISELECT(-72,-36),
  ABISELECT(-152,-76),
  ABISELECT(-304,-156),
  ABISELECT(-304,-156),
  ABISELECT(-280,-144),
  ABISELECT(-304,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C26__8S6103C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C26__8S6103C19[] = {
  0,
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C26__8S6103C19[] = {
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(80,40),
  ABISELECT(-152,-80),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C26__8S6103C19[] = {
  ABISELECT(72,36),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A2__8S6103C26__8S6103C19[] = {
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C19[] = {
  {&(_ZTV8S6103C19[19]),  19,187},
  {&(_tg__ZTV7S6103C5__A__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__A__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C5__A__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C5__A__8S6103C19[7]),  7,9},
  {&(_tg__ZTV8S6103C20__8S6103C19[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C20__8S6103C19[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C20__A1__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C20__A1__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C20__A1__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C20__A1__8S6103C19[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C20__8S6103C19[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C20__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C20__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C20__8S6103C19[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C20__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C20__8S6103C19[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C20__8S6103C19[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C20__8S6103C19[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C20__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C20__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C20__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C20__8S6103C19[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C20__8S6103C19[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C20__8S6103C19[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C20__8S6103C19[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C20__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C20__8S6103C19[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C20__8S6103C19[7]),  7,9},
  {&(_ZTV8S6103C19[45]),  45,187},
  {&(_ZTV8S6103C19[19]),  19,187},
  {&(_ZTV8S6103C19[53]),  53,187},
  {&(_ZTV8S6103C19[37]),  37,187},
  {&(_ZTV8S6103C19[58]),  58,187},
  {&(_ZTV8S6103C19[68]),  68,187},
  {&(_ZTV8S6103C19[77]),  77,187},
  {&(_ZTV8S6103C19[82]),  82,187},
  {&(_ZTV8S6103C19[94]),  94,187},
  {&(_ZTV8S6103C19[102]),  102,187},
  {&(_ZTV8S6103C19[112]),  112,187},
  {&(_ZTV8S6103C19[121]),  121,187},
  {&(_ZTV8S6103C19[126]),  126,187},
  {&(_ZTV8S6103C19[145]),  145,187},
  {&(_ZTV8S6103C19[158]),  158,187},
  {&(_ZTV8S6103C19[172]),  172,187},
  {&(_ZTV8S6103C19[165]),  165,187},
  {&(_ZTV8S6103C19[184]),  184,187},
  {&(_tg__ZTV7S6103C6__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C19[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C16__8S6103C19[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C16__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C16__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C16__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__8S6103C19[2]),  2,3},
  {&(_tg__ZTV8S6103C17__8S6103C19[5]),  5,8},
  {&(_tg__ZTV8S6103C148S6103C17__8S6103C19[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C17__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C21__8S6103C19[9]),  9,12},
  {&(_tg__ZTV8S6103C228S6103C21__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C68S6103C228S6103C21__A2__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A2__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C19[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__A1__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__A1__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C19[5]),  5,7},
  {&(_tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C21__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C21__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C19[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S6103C21__8S6103C19[3]),  3,5},
  {&(_tg__ZTV8S6103C18__8S6103C19[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__8S6103C19[2]),  2,3},
  {&(_tg__ZTV8S6103C14__A1__8S6103C19[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__A3__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__A3__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__A1__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C24__8S6103C19[17]),  17,20},
  {&(_tg__ZTV8S6103C208S6103C24__A1__8S6103C19[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C208S6103C24__A1__8S6103C19[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C19[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C208S6103C24__A1__8S6103C19[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C208S6103C24__A1__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C208S6103C24__A1__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C24__A1__8S6103C19[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C24__A1__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C208S6103C24__A1__8S6103C19[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C208S6103C24__A1__8S6103C19[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C208S6103C24__A1__8S6103C19[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C208S6103C24__A1__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C208S6103C24__A1__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C208S6103C24__A1__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C24__A1__8S6103C19[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C208S6103C24__A1__8S6103C19[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C24__A1__8S6103C19[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C208S6103C24__A1__8S6103C19[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C208S6103C24__A1__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C24__A1__8S6103C19[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C208S6103C24__A1__8S6103C19[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C24__8S6103C19[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C24__8S6103C19[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C24__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C24__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C24__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C24__8S6103C19[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C24__8S6103C19[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24__8S6103C19[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C24__8S6103C19[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C24__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C24__8S6103C19[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C24__8S6103C19[7]),  7,9},
  {&(_tg__ZTV7S6103C4__8S6103C24__8S6103C19[10]),  10,13},
  {&(_tg__ZTV7S6103C5__A1__8S6103C24__8S6103C19[7]),  7,8},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C24__8S6103C19[4]),  4,4},
  {&(_tg__ZTV7S6103C4__8S6103C19[9]),  9,12},
  {&(_tg__ZTV7S6103C67S6103C4__A4__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C67S6103C4__A4__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C19[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C4__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C4__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C4__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C4__8S6103C19[7]),  7,9},
  {&(_tg__ZTV8S6103C12__7S6103C4__8S6103C19[4]),  4,4},
  {&(_tg__ZTV7S6103C5__A3__8S6103C19[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__A3__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C5__A3__8S6103C19[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C5__A3__8S6103C19[7]),  7,9},
  {&(_tg__ZTV8S6103C26__8S6103C19[9]),  9,12},
  {&(_tg__ZTV7S6103C6__8S6103C26__8S6103C19[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C26__8S6103C19[3]),  3,4},
  {&(_tg__ZTV8S6103C18__8S6103C26__8S6103C19[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C26__8S6103C19[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A2__8S6103C26__8S6103C19[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S6103C19[];
extern  VTBL_ENTRY _ZTV8S6103C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C19[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D0Ev,_ZThn40_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C18D1Ev,_ZThn40_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C16D0Ev,_ZThn8_N8S6103C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C16D1Ev,_ZThn8_N8S6103C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C20D0Ev,_ZThn48_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C20D1Ev,_ZThn48_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S6103C20D0Ev,_ZThn116_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6103C20D0Ev,_ZThn36_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S6103C20D1Ev,_ZThn116_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6103C20D1Ev,_ZThn36_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6103C20D0Ev,_ZThn76_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6103C20D0Ev,_ZThn28_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6103C20D1Ev,_ZThn76_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6103C20D1Ev,_ZThn28_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6103C20D0Ev,_ZThn24_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6103C20D1Ev,_ZThn24_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S6103C23D0Ev,_ZThn116_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S6103C23D1Ev,_ZThn116_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6103C23D0Ev,_ZThn76_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6103C23D1Ev,_ZThn76_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6103C19D0Ev,_ZThn140_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6103C19D1Ev,_ZThn140_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6103C19D0Ev,_ZThn132_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6103C19D1Ev,_ZThn132_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S6103C19D0Ev,_ZThn156_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6103C19D0Ev,_ZThn52_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S6103C19D1Ev,_ZThn156_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6103C19D1Ev,_ZThn52_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S6103C19D0Ev,_ZThn120_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C19D0Ev,_ZThn40_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S6103C19D1Ev,_ZThn120_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C19D1Ev,_ZThn40_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6103C19D0Ev,_ZThn80_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C19D0Ev,_ZThn32_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6103C19D1Ev,_ZThn80_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C19D1Ev,_ZThn32_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6103C19D0Ev,_ZThn28_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6103C19D1Ev,_ZThn28_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C19 = {  "S6103C19", // class name
  bases_S6103C19, 48,
  &(vtc_S6103C19[0]), // expected_vtbl_contents
  &(vtt_S6103C19[0]), // expected_vtt_contents
  ABISELECT(312,160), // object size
  NSPAIRA(_ZTI8S6103C19),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6103C19),187, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C19),144, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C15  : S6103C16 , S6103C18 , virtual S6103C19 {
  virtual  ~S6103C15(); // _ZN8S6103C15D2Ev
  S6103C15(); // tgen
};
//SIG(-1 S6103C15) C1{ BC2{ BC3{ m Fp} BC4{ m} VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC9{ BC5 BC6 BC7 vd}}} BC10{ VBC9 VBC3 Fp[9]} VBC11{ BC12{ VBC5 VBC13{ BC7 BC3 VBC5 v2}} BC14{ VBC15{ vd m} VBC2 VBC16{ VBC5 BC17{ BC5 VBC3 BC13 Fi} VBC15 BC6 VBC4 vd FC6} BC18{ VBC10 BC6 BC12 vd Fp} vd} VBC19{ BC14 VBC20{ VBC12 BC5 BC6 BC4 BC21{ VBC6 VBC3} vd} vd} BC22{ m} VBC23{ VBC4 VBC5 BC7 VBC10 vd}} vd}


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

static void Test_S6103C15()
{
  extern Class_Descriptor cd_S6103C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,53)];
    init_test(&cd_S6103C15, buf);
    S6103C15 *dp, &lv = *(dp=new (buf) S6103C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,208), "sizeof(S6103C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C15)");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*), ABISELECT(8,4), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S3619C26*)(S6103C16*), 0, "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), 0, "S6103C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*)(S6103C17*), 0, "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), 0, "S6103C15");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C22*)(S6103C21*), 0, "S6103C15");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C4*), 0, "S6103C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*)(S6103C4*), 0, "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), 0, "S6103C15");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*)(S6103C17*), 0, "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), 0, "S6103C15");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C22*)(S6103C21*), 0, "S6103C15");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C4*), 0, "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C19*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C21*), ABISELECT(96,48), "S6103C15");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(96,48), "S6103C15");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(96,48), "S6103C15");
    /*is_ambiguous_... S6103C26::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C26*), ABISELECT(96,48), "S6103C15");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(112,56), "S6103C15");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*)(S6103C17*), ABISELECT(112,56), "S6103C15");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*)(S6103C17*), ABISELECT(128,64), "S6103C15");
    check_base_class_offset(lv, (S6103C14*)(S6103C17*), ABISELECT(112,56), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C17*)(S6103C16*), ABISELECT(112,56), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C17*)(S6103C16*), ABISELECT(112,56), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C16*), 0, "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(136,68), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(136,68), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(152,76), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(136,68), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(136,68), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(160,80), "S6103C15");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C22*)(S6103C21*), ABISELECT(160,80), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(160,80), "S6103C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*)(S6103C4*), ABISELECT(160,80), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S6103C18*), ABISELECT(16,8), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(192,96), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C9 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(200,100), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C19*), ABISELECT(192,96), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(192,96), "S6103C15");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(192,96), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(192,96), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C5*)(S6103C19*), ABISELECT(168,84), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*)(S6103C19*), ABISELECT(208,104), "S6103C15");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C21*), ABISELECT(208,104), "S6103C15");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*)(S6103C24*), ABISELECT(208,104), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*), ABISELECT(224,112), "S6103C15");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S3619C26*)(S6103C16*), ABISELECT(216,108), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C16*)(S6103C20*)(S6103C19*), ABISELECT(216,108), "S6103C15");
    check_base_class_offset(lv, (S6103C16*)(S6103C20*)(S6103C24*), ABISELECT(216,108), "S6103C15");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(232,116), "S6103C15");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(248,124), "S6103C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(256,128), "S6103C15");
    check_base_class_offset(lv, (S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(248,124), "S6103C15");
    check_base_class_offset(lv, (S6103C22*)(S6103C21*), ABISELECT(232,116), "S6103C15");
    /*is_ambiguous_... S6103C21::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C21*), ABISELECT(232,116), "S6103C15");
    check_base_class_offset(lv, (S3619C26*)(S6103C21*), ABISELECT(269,137), "S6103C15");
    check_base_class_offset(lv, (S3619C26*)(S6103C26*), ABISELECT(269,137), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C21*)(S6103C20*)(S6103C19*), ABISELECT(232,116), "S6103C15");
    check_base_class_offset(lv, (S6103C21*)(S6103C20*)(S6103C24*), ABISELECT(232,116), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(272,140), "S6103C15");
    check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(272,140), "S6103C15");
    check_base_class_offset(lv, (S6103C18*)(S6103C26*), ABISELECT(272,140), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(176,88), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(176,88), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(176,88), "S6103C15");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C20*)(S6103C19*), ABISELECT(176,88), "S6103C15");
    /*is_ambiguous_... S6103C23::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(352,180), "S6103C15");
    check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(352,180), "S6103C15");
    check_base_class_offset(lv, (S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(352,180), "S6103C15");
    check_base_class_offset(lv, (S6103C20*)(S6103C24*), ABISELECT(352,180), "S6103C15");
    check_base_class_offset(lv, (S6103C5*)(S6103C4*), ABISELECT(392,200), "S6103C15");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C4*), ABISELECT(368,188), "S6103C15");
    /*is_ambiguous_... S6103C4::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C4*), ABISELECT(368,188), "S6103C15");
    check_base_class_offset(lv, (S3619C26*)(S6103C4*), ABISELECT(368,188), "S6103C15");
    check_base_class_offset(lv, (S6103C12*)(S6103C4*), ABISELECT(384,196), "S6103C15");
    check_base_class_offset(lv, (S6103C4*)(S6103C24*), ABISELECT(368,188), "S6103C15");
    check_base_class_offset(lv, (S6103C24*)(S6103C19*), ABISELECT(352,180), "S6103C15");
    check_base_class_offset(lv, (S3619C16*)(S6103C19*), ABISELECT(168,84), "S6103C15");
    /*is_ambiguous_... S6103C26::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C26*), ABISELECT(400,204), "S6103C15");
    check_base_class_offset(lv, (S6103C26*)(S6103C19*), ABISELECT(400,204), "S6103C15");
    check_base_class_offset(lv, (S6103C19*), ABISELECT(168,84), "S6103C15");
    test_class_info(&lv, &cd_S6103C15);
    dp->~S6103C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C15(Test_S6103C15, "S6103C15", ABISELECT(408,208));

#else // __cplusplus

extern void _ZN8S6103C15C1Ev();
extern void _ZN8S6103C15D2Ev();
Name_Map name_map_S6103C15[] = {
  NSPAIR(_ZN8S6103C15C1Ev),
  NSPAIR(_ZN8S6103C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C17;
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C22;
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C21;
extern VTBL_ENTRY _ZTI8S6103C21[];
extern  VTBL_ENTRY _ZTV8S6103C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C21[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
extern Class_Descriptor cd_S6103C4;
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
extern Class_Descriptor cd_S6103C24;
extern VTBL_ENTRY _ZTI8S6103C24[];
extern  VTBL_ENTRY _ZTV8S6103C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C24[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C26;
extern VTBL_ENTRY _ZTI8S6103C26[];
extern  VTBL_ENTRY _ZTV8S6103C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C26[];
extern Class_Descriptor cd_S6103C19;
extern VTBL_ENTRY _ZTI8S6103C19[];
extern  VTBL_ENTRY _ZTV8S6103C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C19[];
static Base_Class bases_S6103C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6103C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(96,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(128,64), //bcp->offset
    48, //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6103C17,    ABISELECT(112,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6103C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C6,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(152,76), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(136,68), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C8,    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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(200,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(192,96), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S6103C5,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(208,104), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(224,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
    24, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(216,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6103C16,    ABISELECT(216,108), //bcp->offset
    118, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(248,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
    15, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(248,124), //bcp->offset
    143, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6103C22,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(269,137), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S6103C21,    ABISELECT(232,116), //bcp->offset
    129, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(272,140), //bcp->offset
    150, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6103C23,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6103C20,    ABISELECT(176,88), //bcp->offset
    86, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6103C23,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S6103C20,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(392,200), //bcp->offset
    199, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S6103C12,    ABISELECT(384,196), //bcp->offset
    195, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S6103C4,    ABISELECT(368,188), //bcp->offset
    182, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S6103C24,    ABISELECT(352,180), //bcp->offset
    161, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S3619C16,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(400,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
    28, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S6103C26,    ABISELECT(400,204), //bcp->offset
    207, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S6103C19,    ABISELECT(168,84), //bcp->offset
    63, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6103C15[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C15D1Ev();
extern void _ZN8S6103C15D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZThn16_N8S6103C15D1Ev,_ZThn8_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C15D0Ev,_ZThn8_N8S6103C15D0Ev)();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S6103C15D1Ev,_ZThn56_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S6103C15D0Ev,_ZThn56_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn136_N8S6103C15D1Ev,_ZThn68_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn136_N8S6103C15D0Ev,_ZThn68_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n160_N8S6103C15D1Ev,_ZTv0_n80_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn168_N8S6103C15D1Ev,_ZThn84_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S6103C15D0Ev,_ZTv0_n80_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn168_N8S6103C15D0Ev,_ZThn84_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTvn8_n160_N8S6103C15D1Ev,_ZTvn4_n80_N8S6103C15D1Ev)();
extern void ABISELECT(_ZTvn8_n160_N8S6103C15D0Ev,_ZTvn4_n80_N8S6103C15D0Ev)();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S6103C15D1Ev,_ZTv0_n12_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn208_N8S6103C15D1Ev,_ZThn104_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C15D0Ev,_ZTv0_n12_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn208_N8S6103C15D0Ev,_ZThn104_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn216_N8S6103C15D1Ev,_ZThn108_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn216_N8S6103C15D0Ev,_ZThn108_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn232_N8S6103C15D1Ev,_ZThn116_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn232_N8S6103C15D0Ev,_ZThn116_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn272_N8S6103C15D1Ev,_ZThn140_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn272_N8S6103C15D0Ev,_ZThn140_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n144_N8S6103C15D1Ev,_ZTv0_n72_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn352_N8S6103C15D1Ev,_ZThn180_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S6103C15D0Ev,_ZTv0_n72_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn352_N8S6103C15D0Ev,_ZThn180_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C15D1Ev,_ZTv0_n40_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn368_N8S6103C15D1Ev,_ZThn188_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C15D0Ev,_ZTv0_n40_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn368_N8S6103C15D0Ev,_ZThn188_N8S6103C15D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn400_N8S6103C15D1Ev,_ZThn204_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn400_N8S6103C15D0Ev,_ZThn204_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6103C15[] = {
  ABISELECT(400,204),
  ABISELECT(392,200),
  ABISELECT(368,188),
  ABISELECT(352,180),
  ABISELECT(272,140),
  ABISELECT(269,137),
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(208,104),
  ABISELECT(192,96),
  ABISELECT(168,84),
  ABISELECT(160,80),
  ABISELECT(136,68),
  ABISELECT(112,56),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C15D0Ev,
  ABISELECT(144,72),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(120,60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6103C15D1Ev,_ZThn8_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6103C15D0Ev,_ZThn8_N8S6103C15D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-168,-84),
  ABISELECT(232,120),
  ABISELECT(224,116),
  ABISELECT(200,104),
  ABISELECT(184,96),
  ABISELECT(-32,-16),
  ABISELECT(104,56),
  ABISELECT(101,53),
  ABISELECT(-8,-4),
  ABISELECT(64,32),
  ABISELECT(-56,-28),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-72,-36),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S6103C15D1Ev,_ZTv0_n80_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S6103C15D0Ev,_ZTv0_n80_N8S6103C15D0Ev),
  ABISELECT(93,49),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(96,52),
  ABISELECT(16,8),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-80,-40),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n160_N8S6103C15D1Ev,_ZTvn4_n80_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n160_N8S6103C15D0Ev,_ZTvn4_n80_N8S6103C15D0Ev),
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C15D1Ev,_ZTv0_n12_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C15D0Ev,_ZTv0_n12_N8S6103C15D0Ev),
  ABISELECT(-216,-108),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  ABISELECT(-120,-60),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev),
  ABISELECT(-232,-116),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-24,-12),
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev),
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-272,-140),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev),
  ABISELECT(-352,-180),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-240,-124),
  ABISELECT(-136,-72),
  ABISELECT(-144,-76),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-160,-84),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  ABISELECT(-256,-132),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C15D1Ev,_ZTv0_n72_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C15D0Ev,_ZTv0_n72_N8S6103C15D0Ev),
  ABISELECT(-368,-188),
  ABISELECT(-208,-108),
  ABISELECT(-176,-92),
  ABISELECT(-272,-140),
  ABISELECT(24,12),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C15D1Ev,_ZTv0_n40_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C15D0Ev,_ZTv0_n40_N8S6103C15D0Ev),
  ABISELECT(-224,-116),
  ABISELECT(-384,-196),
  ABISELECT(-384,-196),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  ABISELECT(-200,-104),
  ABISELECT(-392,-200),
  ABISELECT(-392,-200),
  ABISELECT(-296,-152),
  ABISELECT(-392,-200),
  ABISELECT(-392,-200),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-400,-204),
  0,
  ABISELECT(-240,-124),
  ABISELECT(-264,-136),
  ABISELECT(-128,-64),
  ABISELECT(-400,-204),
  ABISELECT(-400,-204),
  ABISELECT(-304,-156),
  ABISELECT(-131,-67),
  ABISELECT(-400,-204),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S6103C15[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C16__A__8S6103C15[] = {
  ABISELECT(112,56),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16__A__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZThn112_N8S6103C16D1Ev,_ZThn56_N8S6103C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
extern void ABISELECT(_ZThn112_N8S6103C16D0Ev,_ZThn56_N8S6103C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16__A__8S6103C15[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__A__8S6103C15[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__A__8S6103C15[] = {
  ABISELECT(144,72),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(120,60),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S6103C18D1Ev,_ZThn60_N8S6103C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S6103C18D0Ev,_ZThn60_N8S6103C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__A__8S6103C15[] = {
  ABISELECT(-120,-60),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__A__8S6103C15[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__A__8S6103C15[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__8S6103C15[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C15[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C148S6103C17__8S6103C15[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C15[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C15[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C15[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C17__8S6103C15[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C15[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__A2__8S6103C15[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__A2__8S6103C15[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__A1__8S6103C15[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C19D1Ev();
extern void _ZN8S6103C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C19__8S6103C15[] = {
  ABISELECT(232,120),
  ABISELECT(224,116),
  ABISELECT(200,104),
  ABISELECT(184,96),
  ABISELECT(-32,-16),
  ABISELECT(104,56),
  ABISELECT(101,53),
  ABISELECT(-8,-4),
  ABISELECT(64,32),
  ABISELECT(-56,-28),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-72,-36),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C19D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C19__8S6103C15[] = {
  ABISELECT(24,12),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-72,-36),
  ABISELECT(-168,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C19__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C19__8S6103C15[] = {
  0,
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C19__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(93,49),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(96,52),
  ABISELECT(16,8),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-80,-40),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(96,52),
  ABISELECT(16,8),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-80,-40),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[] = {
  ABISELECT(16,8),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-80,-40),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn96_N8S6103C23D1Ev,_ZThn52_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn96_N8S6103C23D0Ev,_ZThn52_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(40,20),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C208S6103C19__8S6103C15[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C208S6103C19__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn32_N8S6103C20D1Ev,_ZThn16_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn32_N8S6103C20D0Ev,_ZThn16_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S6103C20D1Ev,_ZThn20_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S6103C20D0Ev,_ZThn20_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-40,-20),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  ABISELECT(-120,-60),
  ABISELECT(-216,-108),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C208S6103C19__8S6103C15[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(64,32),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn56_N8S6103C20D1Ev,_ZThn28_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn56_N8S6103C20D0Ev,_ZThn28_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-24,-12),
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S6103C20D1Ev,_ZThn52_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S6103C20D0Ev,_ZThn52_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(40,20),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C19__8S6103C15[] = {
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C208S6103C19__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C19__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C19__8S6103C15[] = {
  0,
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C19__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZThn8_N8S6103C19D1Ev,_ZThn4_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6103C19D0Ev,_ZThn4_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C20__8S6103C19__8S6103C15[] = {
  ABISELECT(93,49),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(96,52),
  ABISELECT(16,8),
  ABISELECT(-176,-88),
  ABISELECT(-176,-88),
  ABISELECT(-80,-40),
  ABISELECT(-176,-88),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6103C19D1Ev,_ZThn4_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6103C19D0Ev,_ZThn4_N8S6103C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S6103C19D1Ev,_ZThn20_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S6103C19D0Ev,_ZThn20_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C19__8S6103C15[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S6103C19D1Ev,_ZThn24_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S6103C19D0Ev,_ZThn24_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C19__8S6103C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  ABISELECT(-120,-60),
  ABISELECT(-216,-108),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C19__8S6103C15[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A2__8S6103C19__8S6103C15[] = {
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S6103C19D1Ev,_ZThn32_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S6103C19D0Ev,_ZThn32_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C19__8S6103C15[] = {
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-24,-12),
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C19__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn104_N8S6103C19D1Ev,_ZThn56_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn104_N8S6103C19D0Ev,_ZThn56_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C19__8S6103C15[] = {
  ABISELECT(-104,-56),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C19__8S6103C15[] = {
  ABISELECT(32,16),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A4__8S6103C19__8S6103C15[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn184_N8S6103C19D1Ev,_ZThn96_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn184_N8S6103C19D0Ev,_ZThn96_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C24__8S6103C19__8S6103C15[] = {
  ABISELECT(-184,-96),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-240,-124),
  ABISELECT(-136,-72),
  ABISELECT(-144,-76),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-160,-84),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  ABISELECT(-256,-132),
  ABISELECT(-352,-180),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn200_N8S6103C19D1Ev,_ZThn104_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn200_N8S6103C19D0Ev,_ZThn104_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C19__8S6103C15[] = {
  ABISELECT(-200,-104),
  ABISELECT(-208,-108),
  ABISELECT(-176,-92),
  ABISELECT(-272,-140),
  ABISELECT(24,12),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A3__8S6103C19__8S6103C15[] = {
  ABISELECT(-200,-104),
  ABISELECT(-392,-200),
  ABISELECT(-392,-200),
  ABISELECT(-296,-152),
  ABISELECT(-392,-200),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C19__8S6103C15[] = {
  ABISELECT(-224,-116),
  ABISELECT(-384,-196),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn232_N8S6103C19D1Ev,_ZThn120_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn232_N8S6103C19D0Ev,_ZThn120_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C26__8S6103C19__8S6103C15[] = {
  ABISELECT(-232,-120),
  0,
  ABISELECT(-240,-124),
  ABISELECT(-264,-136),
  ABISELECT(-128,-64),
  ABISELECT(-400,-204),
  ABISELECT(-400,-204),
  ABISELECT(-304,-156),
  ABISELECT(-131,-67),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C15[] = {
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__8S6103C15[] = {
  0,
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C16__A1__8S6103C15[] = {
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  ABISELECT(-120,-60),
  ABISELECT(-216,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16__A1__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C16__A1__8S6103C15[] = {
  0,
  ABISELECT(216,108),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16__A1__8S6103C15[] = {
  ABISELECT(104,52),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__A1__8S6103C15[] = {
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C21D1Ev();
extern void _ZN8S6103C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C15[] = {
  ABISELECT(37,21),
  ABISELECT(-24,-12),
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C228S6103C21__8S6103C15[] = {
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C228S6103C21__A3__8S6103C15[] = {
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A3__8S6103C15[] = {
  0,
  ABISELECT(232,116),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__A1__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__A1__8S6103C15[] = {
  0,
  ABISELECT(248,124),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C15[] = {
  0,
  ABISELECT(232,116),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C21__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C21__8S6103C15[] = {
  0,
  ABISELECT(232,116),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C21__8S6103C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__A1__8S6103C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__A1__8S6103C15[] = {
  ABISELECT(136,72),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__A1__8S6103C15[] = {
  0,
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__A1__8S6103C15[] = {
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C24D1Ev();
extern void _ZN8S6103C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C24__8S6103C15[] = {
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-240,-124),
  ABISELECT(-136,-72),
  ABISELECT(-144,-76),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-160,-84),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  ABISELECT(-256,-132),
  ABISELECT(-352,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-240,-124),
  ABISELECT(-136,-72),
  ABISELECT(-144,-76),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-160,-84),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  ABISELECT(-256,-132),
  ABISELECT(-352,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-160,-84),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  ABISELECT(-256,-132),
  ABISELECT(-352,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[] = {
  ABISELECT(-160,-84),
  ABISELECT(-352,-180),
  ABISELECT(-352,-180),
  ABISELECT(-256,-132),
  ABISELECT(-352,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[] = {
  0,
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  0,
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C208S6103C24__A1__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(136,72),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  ABISELECT(-120,-60),
  ABISELECT(-216,-108),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C208S6103C24__A1__8S6103C15[] = {
  0,
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(240,124),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(120,64),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-24,-12),
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C24__A1__8S6103C15[] = {
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C208S6103C24__A1__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C24__8S6103C15[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C24__8S6103C15[] = {
  ABISELECT(136,72),
  ABISELECT(-104,-52),
  ABISELECT(-216,-108),
  ABISELECT(-216,-108),
  ABISELECT(-120,-60),
  ABISELECT(-216,-108),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C24__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C24__8S6103C15[] = {
  0,
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C24__8S6103C15[] = {
  ABISELECT(240,124),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C24__8S6103C15[] = {
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C24__8S6103C15[] = {
  ABISELECT(120,64),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-24,-12),
  ABISELECT(-136,-68),
  ABISELECT(-72,-36),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(-232,-116),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24__8S6103C15[] = {
  ABISELECT(-248,-124),
  ABISELECT(-248,-124),
  ABISELECT(-152,-76),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C24__8S6103C15[] = {
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C24__8S6103C15[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C24__8S6103C15[] = {
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C24__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C24__8S6103C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-208,-108),
  ABISELECT(-176,-92),
  ABISELECT(-272,-140),
  ABISELECT(24,12),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A1__8S6103C24__8S6103C15[] = {
  ABISELECT(-200,-104),
  ABISELECT(-392,-200),
  ABISELECT(-392,-200),
  ABISELECT(-296,-152),
  ABISELECT(-392,-200),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C24__8S6103C15[] = {
  ABISELECT(-224,-116),
  ABISELECT(-384,-196),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C15[] = {
  ABISELECT(-208,-108),
  ABISELECT(-176,-92),
  ABISELECT(-272,-140),
  ABISELECT(24,12),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C67S6103C4__A4__8S6103C15[] = {
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  ABISELECT(-368,-188),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C67S6103C4__A4__8S6103C15[] = {
  0,
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C15[] = {
  ABISELECT(-224,-116),
  ABISELECT(-384,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C4__8S6103C15[] = {
  ABISELECT(-200,-104),
  ABISELECT(-392,-200),
  ABISELECT(-392,-200),
  ABISELECT(-296,-152),
  ABISELECT(-392,-200),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C4__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C4__8S6103C15[] = {
  0,
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C4__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C4__8S6103C15[] = {
  ABISELECT(-224,-116),
  ABISELECT(-384,-196),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A3__8S6103C15[] = {
  ABISELECT(-200,-104),
  ABISELECT(-392,-200),
  ABISELECT(-392,-200),
  ABISELECT(-296,-152),
  ABISELECT(-392,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__A3__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C5__A3__8S6103C15[] = {
  0,
  ABISELECT(392,200),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__A3__8S6103C15[] = {
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-96,-48),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C26D1Ev();
extern void _ZN8S6103C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C26__8S6103C15[] = {
  ABISELECT(-240,-124),
  ABISELECT(-264,-136),
  ABISELECT(-128,-64),
  ABISELECT(-400,-204),
  ABISELECT(-400,-204),
  ABISELECT(-304,-156),
  ABISELECT(-131,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C26__8S6103C15[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C26__8S6103C15[] = {
  0,
  ABISELECT(400,204),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C26__8S6103C15[] = {
  ABISELECT(128,64),
  ABISELECT(-112,-60),
  ABISELECT(-272,-140),
  ABISELECT(-272,-140),
  ABISELECT(-136,-72),
  ABISELECT(-272,-140),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C26__8S6103C15[] = {
  ABISELECT(264,136),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A2__8S6103C26__8S6103C15[] = {
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C15[] = {
  {&(_ZTV8S6103C15[20]),  20,221},
  {&(_tg__ZTV8S6103C16__A__8S6103C15[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C16__A__8S6103C15[5]),  5,6},
  {&(_tg__ZTV8S6103C16__A__8S6103C15[7]),  7,10},
  {&(_tg__ZTV8S6103C17__8S6103C16__A__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__A__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C18__A__8S6103C15[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__A__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__A__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__A__8S6103C15[2]),  2,3},
  {&(_ZTV8S6103C15[38]),  38,221},
  {&(_ZTV8S6103C15[20]),  20,221},
  {&(_ZTV8S6103C15[45]),  45,221},
  {&(_ZTV8S6103C15[50]),  50,221},
  {&(_ZTV8S6103C15[30]),  30,221},
  {&(_ZTV8S6103C15[57]),  57,221},
  {&(_ZTV8S6103C15[62]),  62,221},
  {&(_ZTV8S6103C15[83]),  83,221},
  {&(_ZTV8S6103C15[111]),  111,221},
  {&(_ZTV8S6103C15[101]),  101,221},
  {&(_ZTV8S6103C15[116]),  116,221},
  {&(_ZTV8S6103C15[126]),  126,221},
  {&(_ZTV8S6103C15[140]),  140,221},
  {&(_ZTV8S6103C15[148]),  148,221},
  {&(_ZTV8S6103C15[158]),  158,221},
  {&(_ZTV8S6103C15[179]),  179,221},
  {&(_ZTV8S6103C15[192]),  192,221},
  {&(_ZTV8S6103C15[206]),  206,221},
  {&(_ZTV8S6103C15[199]),  199,221},
  {&(_ZTV8S6103C15[218]),  218,221},
  {&(_tg__ZTV7S6103C6__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C15[5]),  5,8},
  {&(_tg__ZTV8S6103C148S6103C17__8S6103C15[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C148S6103C17__A1__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C148S6103C17__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C17__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C14__A1__8S6103C15[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__A2__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__A2__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C19__8S6103C15[19]),  19,22},
  {&(_tg__ZTV7S6103C58S6103C19__8S6103C15[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C19__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C19__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C19__8S6103C15[7]),  7,9},
  {&(_tg__ZTV8S6103C208S6103C19__8S6103C15[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C208S6103C19__8S6103C15[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C19__A1__8S6103C15[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C208S6103C19__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C208S6103C19__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C208S6103C19__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C19__8S6103C15[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C19__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C208S6103C19__8S6103C15[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C208S6103C19__8S6103C15[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C208S6103C19__8S6103C15[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C208S6103C19__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C208S6103C19__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C208S6103C19__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C19__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C208S6103C19__8S6103C15[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C19__8S6103C15[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C208S6103C19__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C208S6103C19__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C19__8S6103C15[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C208S6103C19__8S6103C15[7]),  7,9},
  {&(_tg__ZTV7S6103C6__8S6103C19__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C19__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C19__8S6103C15[7]),  7,9},
  {&(_tg__ZTV8S6103C20__8S6103C19__8S6103C15[15]),  15,18},
  {&(_tg__ZTV12S21216C26_nt__8S6103C19__8S6103C15[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C19__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C17__8S6103C19__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A2__8S6103C19__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C19__8S6103C15[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C19__8S6103C15[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C19__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C19__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A4__8S6103C19__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C24__8S6103C19__8S6103C15[18]),  18,21},
  {&(_tg__ZTV7S6103C4__8S6103C19__8S6103C15[10]),  10,13},
  {&(_tg__ZTV7S6103C5__A3__8S6103C19__8S6103C15[7]),  7,8},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C19__8S6103C15[4]),  4,4},
  {&(_tg__ZTV8S6103C26__8S6103C19__8S6103C15[11]),  11,14},
  {&(_tg__ZTV7S6103C9__8S6103C15[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C16__A1__8S6103C15[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C16__A1__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C16__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C16__A1__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__A1__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C15[9]),  9,12},
  {&(_tg__ZTV8S6103C228S6103C21__8S6103C15[7]),  7,8},
  {&(_tg__ZTV7S6103C68S6103C228S6103C21__A3__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A3__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C15[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__A1__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C228S6103C21__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C228S6103C21__8S6103C15[5]),  5,7},
  {&(_tg__ZTV7S6103C6__A1__8S6103C228S6103C21__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C21__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C21__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C22__8S6103C21__8S6103C15[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S6103C21__8S6103C15[3]),  3,5},
  {&(_tg__ZTV8S6103C18__A1__8S6103C15[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__A1__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__A1__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C24__8S6103C15[17]),  17,20},
  {&(_tg__ZTV8S6103C208S6103C24__A1__8S6103C15[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C208S6103C24__A1__8S6103C15[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C24__A2__8S6103C15[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C208S6103C24__A1__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C208S6103C24__A1__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C208S6103C24__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C24__A1__8S6103C15[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C24__A1__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C208S6103C24__A1__8S6103C15[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C208S6103C24__A1__8S6103C15[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C208S6103C24__A1__8S6103C15[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C208S6103C24__A1__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C208S6103C24__A1__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C208S6103C24__A1__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C24__A1__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C208S6103C24__A1__8S6103C15[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C24__A1__8S6103C15[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C208S6103C24__A1__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C208S6103C24__A1__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C24__A1__8S6103C15[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C208S6103C24__A1__8S6103C15[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C24__8S6103C15[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C24__8S6103C15[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C24__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C24__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C24__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C24__8S6103C15[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C24__8S6103C15[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24__8S6103C15[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C24__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C24__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C24__8S6103C15[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C24__8S6103C15[7]),  7,9},
  {&(_tg__ZTV7S6103C4__8S6103C24__8S6103C15[10]),  10,13},
  {&(_tg__ZTV7S6103C5__A1__8S6103C24__8S6103C15[7]),  7,8},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C24__8S6103C15[4]),  4,4},
  {&(_tg__ZTV7S6103C4__8S6103C15[9]),  9,12},
  {&(_tg__ZTV7S6103C67S6103C4__A4__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C67S6103C4__A4__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C15[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C4__8S6103C15[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C4__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C4__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C4__8S6103C15[7]),  7,9},
  {&(_tg__ZTV8S6103C12__7S6103C4__8S6103C15[4]),  4,4},
  {&(_tg__ZTV7S6103C5__A3__8S6103C15[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__A3__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C5__A3__8S6103C15[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C5__A3__8S6103C15[7]),  7,9},
  {&(_tg__ZTV8S6103C26__8S6103C15[9]),  9,12},
  {&(_tg__ZTV7S6103C6__8S6103C26__8S6103C15[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C26__8S6103C15[3]),  3,4},
  {&(_tg__ZTV8S6103C18__8S6103C26__8S6103C15[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C26__8S6103C15[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A2__8S6103C26__8S6103C15[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S6103C15[];
extern  VTBL_ENTRY _ZTV8S6103C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C15[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S6103C19D0Ev,_ZThn104_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S6103C19D1Ev,_ZThn104_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S6103C19D0Ev,_ZThn96_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S6103C19D1Ev,_ZThn96_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S6103C19D0Ev,_ZThn120_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C19D0Ev,_ZThn32_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S6103C19D1Ev,_ZThn120_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6103C19D1Ev,_ZThn32_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6103C19D0Ev,_ZThn56_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6103C19D0Ev,_ZThn24_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6103C19D1Ev,_ZThn56_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6103C19D1Ev,_ZThn24_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C19D0Ev,_ZThn20_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C19D1Ev,_ZThn20_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6103C20D0Ev,_ZThn28_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6103C20D1Ev,_ZThn28_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C20D0Ev,_ZThn52_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C20D0Ev,_ZThn20_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C20D1Ev,_ZThn52_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C20D1Ev,_ZThn20_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6103C20D0Ev,_ZThn16_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6103C20D1Ev,_ZThn16_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C23D0Ev,_ZThn52_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C23D1Ev,_ZThn52_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6103C18D0Ev,_ZThn60_N8S6103C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6103C18D1Ev,_ZThn60_N8S6103C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6103C16D0Ev,_ZThn56_N8S6103C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6103C16D1Ev,_ZThn56_N8S6103C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C15D0Ev,_ZTv0_n40_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S6103C15D0Ev,_ZThn188_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C15D1Ev,_ZTv0_n40_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S6103C15D1Ev,_ZThn188_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C15D0Ev,_ZTv0_n72_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S6103C15D0Ev,_ZThn180_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C15D1Ev,_ZTv0_n72_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S6103C15D1Ev,_ZThn180_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S6103C15D0Ev,_ZThn204_N8S6103C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S6103C15D0Ev,_ZThn116_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S6103C15D1Ev,_ZThn204_N8S6103C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S6103C15D1Ev,_ZThn116_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6103C15D0Ev,_ZThn140_N8S6103C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C15D0Ev,_ZThn108_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6103C15D1Ev,_ZThn140_N8S6103C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6103C15D1Ev,_ZThn108_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C15D0Ev,_ZTv0_n12_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S6103C15D0Ev,_ZThn104_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6103C15D1Ev,_ZTv0_n12_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S6103C15D1Ev,_ZThn104_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S6103C15D0Ev,_ZTv0_n80_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6103C15D0Ev,_ZThn84_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S6103C15D1Ev,_ZTv0_n80_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6103C15D1Ev,_ZThn84_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C15D0Ev,_ZThn68_N8S6103C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6103C15D0Ev,_ZThn56_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6103C15D1Ev,_ZThn68_N8S6103C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6103C15D1Ev,_ZThn56_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C15 = {  "S6103C15", // class name
  bases_S6103C15, 53,
  &(vtc_S6103C15[0]), // expected_vtbl_contents
  &(vtt_S6103C15[0]), // expected_vtt_contents
  ABISELECT(408,208), // object size
  NSPAIRA(_ZTI8S6103C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6103C15),221, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6103C15),174, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6103C1  : S19894C34 , S6103C3 , virtual S6103C14 , virtual S6103C15 {
  int s6103c1f0;
  virtual  ~S6103C1(); // _ZN7S6103C1D2Ev
  S6103C1(); // tgen
};
//SIG(1 S6103C1) C1{ BC2{ m} BC3{ BC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ v1} FC8} VBC9{ BC8 BC10{ m Fp} VBC6 v2}} BC6 BC7 BC11{ m} BC12{ VBC7 VBC10} vd} VBC13{ vd m} vd} VBC14{ BC6 BC7 BC8 vd} VBC15{ BC16{ BC10 BC11 VBC6 VBC17{ BC14}} BC18{ VBC14 VBC10 Fp[9]} VBC19{ BC5 BC20{ VBC13 VBC16 VBC21{ VBC6 BC22{ BC6 VBC10 BC9 Fi} VBC13 BC7 VBC11 vd FC7} BC23{ VBC18 BC7 BC5 vd Fp} vd} VBC24{ BC20 VBC4 vd} BC25{ m} VBC26{ VBC11 VBC6 BC8 VBC18 vd}} vd} vd Fi}


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

static void Test_S6103C1()
{
  extern Class_Descriptor cd_S6103C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(56,57)];
    init_test(&cd_S6103C1, buf);
    S6103C1 *dp, &lv = *(dp=new (buf) S6103C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(440,224), "sizeof(S6103C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6103C1)");
    check_base_class_offset(lv, (S19894C34*), 0, "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C4*)(S6103C3*), ABISELECT(56,28), "S6103C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*)(S6103C4*)(S6103C3*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*), ABISELECT(56,28), "S6103C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C6*)(S6103C4*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C12*)(S6103C4*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C4*)(S6103C3*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*), ABISELECT(32,16), "S6103C1");
    check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C6*)(S6103C4*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C9*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*)(S6103C15*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C19*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C16*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C21::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C21*), ABISELECT(40,20), "S6103C1");
    check_base_class_offset(lv, (S6103C6*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(40,20), "S6103C1");
    check_base_class_offset(lv, (S6103C6*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C26::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C26*), ABISELECT(40,20), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C9 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C9 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*), ABISELECT(64,32), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C19*), ABISELECT(56,28), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(56,28), "S6103C1");
    check_base_class_offset(lv, (S6103C9*)(S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(56,28), "S6103C1");
    check_base_class_offset(lv, (S6103C5*)(S6103C4*)(S6103C3*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S6103C5*)(S6103C4*), ABISELECT(32,16), "S6103C1");
    /*is_ambiguous_... S6103C4::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C4*)(S6103C3*), 0, "S6103C1");
    /*is_ambiguous_... S6103C4::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C4*)(S6103C3*), 0, "S6103C1");
    check_base_class_offset(lv, (S3619C26*)(S6103C4*)(S6103C3*), 0, "S6103C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*)(S6103C4*)(S6103C3*), ABISELECT(72,36), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*)(S6103C15*), ABISELECT(72,36), "S6103C1");
    /*is_ambiguous_... S6103C22::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C22*)(S6103C21*), ABISELECT(72,36), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C18 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C18*), ABISELECT(72,36), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C12*)(S6103C4*), ABISELECT(72,36), "S6103C1");
    check_base_class_offset(lv, (S6103C12*)(S6103C4*)(S6103C3*), ABISELECT(16,8), "S6103C1");
    check_base_class_offset(lv, (S6103C4*)(S6103C3*), 0, "S6103C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C3*), ABISELECT(80,40), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*)(S6103C19*), ABISELECT(80,40), "S6103C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C21*), ABISELECT(80,40), "S6103C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S6103C20*)(S6103C24*), ABISELECT(80,40), "S6103C1");
    check_base_class_offset(lv, (S6103C3*), 0, "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C14*), ABISELECT(88,44), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C14 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*), ABISELECT(88,44), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*), ABISELECT(104,52), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C14 */ AMB_check_base_class_offset(lv, (S6103C14*), ABISELECT(88,44), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S6103C14*)(S6103C18*)(S6103C15*), ABISELECT(88,44), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C18 */ AMB_check_base_class_offset(lv, (S6103C14*)(S6103C18*), ABISELECT(88,44), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*)(S6103C15*), ABISELECT(120,60), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S3619C26*)(S6103C16*)(S6103C15*), ABISELECT(112,56), "S6103C1");
    check_base_class_offset(lv, (S6103C6*)(S6103C14*)(S6103C17*), ABISELECT(208,104), "S6103C1");
    /*is_ambiguous_... S6103C14::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C14*)(S6103C17*), ABISELECT(208,104), "S6103C1");
    /*is_ambiguous_... S6103C14::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C14*)(S6103C17*), ABISELECT(224,112), "S6103C1");
    check_base_class_offset(lv, (S6103C14*)(S6103C17*), ABISELECT(208,104), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C17*)(S6103C16*)(S6103C15*), ABISELECT(208,104), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C17*)(S6103C16*), ABISELECT(208,104), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C16 */ AMB_check_base_class_offset(lv, (S6103C16*)(S6103C15*), ABISELECT(112,56), "S6103C1");
    /*is_ambiguous_... S6103C15::S6103C18 */ AMB_check_base_class_offset(lv, (S6103C18*)(S6103C15*), ABISELECT(128,64), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C5 */ AMB_check_base_class_offset(lv, (S6103C5*)(S6103C19*), ABISELECT(232,116), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C16 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S6103C16*), ABISELECT(264,132), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C16 */ AMB_check_base_class_offset(lv, (S3619C26*)(S6103C16*), ABISELECT(256,128), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C16*)(S6103C20*)(S6103C19*), ABISELECT(256,128), "S6103C1");
    check_base_class_offset(lv, (S6103C16*)(S6103C20*)(S6103C24*), ABISELECT(256,128), "S6103C1");
    /*is_ambiguous_... S6103C22::S6103C6 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C22*)(S6103C21*), ABISELECT(272,136), "S6103C1");
    /*is_ambiguous_... S6103C9::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(288,144), "S6103C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(296,148), "S6103C1");
    check_base_class_offset(lv, (S6103C9*)(S6103C22*)(S6103C21*), ABISELECT(288,144), "S6103C1");
    check_base_class_offset(lv, (S6103C22*)(S6103C21*), ABISELECT(272,136), "S6103C1");
    /*is_ambiguous_... S6103C21::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C21*), ABISELECT(272,136), "S6103C1");
    check_base_class_offset(lv, (S3619C26*)(S6103C21*), ABISELECT(309,157), "S6103C1");
    check_base_class_offset(lv, (S3619C26*)(S6103C26*), ABISELECT(309,157), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C21*)(S6103C20*)(S6103C19*), ABISELECT(272,136), "S6103C1");
    check_base_class_offset(lv, (S6103C21*)(S6103C20*)(S6103C24*), ABISELECT(272,136), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(312,160), "S6103C1");
    check_base_class_offset(lv, (S6103C18*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(312,160), "S6103C1");
    check_base_class_offset(lv, (S6103C18*)(S6103C26*), ABISELECT(312,160), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(240,120), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(240,120), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C23*)(S6103C20*)(S6103C19*), ABISELECT(240,120), "S6103C1");
    /*is_ambiguous_... S6103C19::S6103C20 */ AMB_check_base_class_offset(lv, (S6103C20*)(S6103C19*), ABISELECT(240,120), "S6103C1");
    /*is_ambiguous_... S6103C23::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(392,200), "S6103C1");
    check_base_class_offset(lv, (S6103C5*)(S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(392,200), "S6103C1");
    check_base_class_offset(lv, (S6103C23*)(S6103C20*)(S6103C24*), ABISELECT(392,200), "S6103C1");
    check_base_class_offset(lv, (S6103C20*)(S6103C24*), ABISELECT(392,200), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S6103C6*)(S6103C4*), ABISELECT(408,208), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S6103C4*), ABISELECT(408,208), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S3619C26*)(S6103C4*), ABISELECT(408,208), "S6103C1");
    /*is_ambiguous_... S6103C1::S6103C4 */ AMB_check_base_class_offset(lv, (S6103C12*)(S6103C4*), ABISELECT(424,216), "S6103C1");
    check_base_class_offset(lv, (S6103C4*)(S6103C24*), ABISELECT(408,208), "S6103C1");
    check_base_class_offset(lv, (S6103C24*)(S6103C19*), ABISELECT(392,200), "S6103C1");
    check_base_class_offset(lv, (S3619C16*)(S6103C19*), ABISELECT(232,116), "S6103C1");
    /*is_ambiguous_... S6103C26::S6103C8 */ AMB_check_base_class_offset(lv, (S6103C8*)(S6103C26*), ABISELECT(432,220), "S6103C1");
    check_base_class_offset(lv, (S6103C26*)(S6103C19*), ABISELECT(432,220), "S6103C1");
    check_base_class_offset(lv, (S6103C19*)(S6103C15*), ABISELECT(232,116), "S6103C1");
    check_base_class_offset(lv, (S6103C15*), ABISELECT(112,56), "S6103C1");
    check_field_offset(lv, s6103c1f0, ABISELECT(24,12), "S6103C1.s6103c1f0");
    test_class_info(&lv, &cd_S6103C1);
    dp->~S6103C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6103C1(Test_S6103C1, "S6103C1", ABISELECT(440,224));

#else // __cplusplus

extern void _ZN7S6103C1C1Ev();
extern void _ZN7S6103C1D2Ev();
Name_Map name_map_S6103C1[] = {
  NSPAIR(_ZN7S6103C1C1Ev),
  NSPAIR(_ZN7S6103C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
extern Class_Descriptor cd_S6103C4;
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S6103C3;
extern VTBL_ENTRY _ZTI7S6103C3[];
extern  VTBL_ENTRY _ZTV7S6103C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C3[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C14;
extern VTBL_ENTRY _ZTI8S6103C14[];
extern  VTBL_ENTRY _ZTV8S6103C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C14[];
extern Class_Descriptor cd_S6103C17;
extern VTBL_ENTRY _ZTI8S6103C17[];
extern  VTBL_ENTRY _ZTV8S6103C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C17[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C16;
extern VTBL_ENTRY _ZTI8S6103C16[];
extern  VTBL_ENTRY _ZTV8S6103C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C16[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S6103C9;
extern VTBL_ENTRY _ZTI7S6103C9[];
extern  VTBL_ENTRY _ZTV7S6103C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C9[];
extern Class_Descriptor cd_S6103C22;
extern VTBL_ENTRY _ZTI8S6103C22[];
extern  VTBL_ENTRY _ZTV8S6103C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C22[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C21;
extern VTBL_ENTRY _ZTI8S6103C21[];
extern  VTBL_ENTRY _ZTV8S6103C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C21[];
extern Class_Descriptor cd_S6103C18;
extern VTBL_ENTRY _ZTI8S6103C18[];
extern  VTBL_ENTRY _ZTV8S6103C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C18[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S6103C5;
extern VTBL_ENTRY _ZTI7S6103C5[];
extern  VTBL_ENTRY _ZTV7S6103C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C5[];
extern Class_Descriptor cd_S6103C23;
extern VTBL_ENTRY _ZTI8S6103C23[];
extern  VTBL_ENTRY _ZTV8S6103C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C23[];
extern Class_Descriptor cd_S6103C20;
extern VTBL_ENTRY _ZTI8S6103C20[];
extern  VTBL_ENTRY _ZTV8S6103C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C20[];
extern Class_Descriptor cd_S6103C6;
extern VTBL_ENTRY _ZTI7S6103C6[];
extern  VTBL_ENTRY _ZTV7S6103C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C6[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S6103C12;
extern VTBL_ENTRY _ZTI8S6103C12[];
extern  VTBL_ENTRY _ZTV8S6103C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C12[];
extern Class_Descriptor cd_S6103C4;
extern VTBL_ENTRY _ZTI7S6103C4[];
extern  VTBL_ENTRY _ZTV7S6103C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C4[];
extern Class_Descriptor cd_S6103C24;
extern VTBL_ENTRY _ZTI8S6103C24[];
extern  VTBL_ENTRY _ZTV8S6103C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C24[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S6103C8;
extern VTBL_ENTRY _ZTI7S6103C8[];
extern  VTBL_ENTRY _ZTV7S6103C8[];
extern Class_Descriptor cd_S6103C26;
extern VTBL_ENTRY _ZTI8S6103C26[];
extern  VTBL_ENTRY _ZTV8S6103C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C26[];
extern Class_Descriptor cd_S6103C19;
extern VTBL_ENTRY _ZTI8S6103C19[];
extern  VTBL_ENTRY _ZTV8S6103C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C19[];
extern Class_Descriptor cd_S6103C15;
extern VTBL_ENTRY _ZTI8S6103C15[];
extern  VTBL_ENTRY _ZTV8S6103C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6103C15[];
static Base_Class bases_S6103C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(40,20), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6103C8,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(56,28), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6103C5,    ABISELECT(32,16), //bcp->offset
    28, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6103C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6103C12,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6103C4,    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
    40, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(80,40), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6103C3,    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
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6103C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(104,52), //bcp->offset
    65, //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(88,44), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6103C6,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(224,112), //bcp->offset
    111, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6103C14,    ABISELECT(208,104), //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
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S6103C17,    ABISELECT(208,104), //bcp->offset
    102, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S6103C16,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S6103C18,    ABISELECT(128,64), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(264,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6103C16,    ABISELECT(256,128), //bcp->offset
    155, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S6103C6,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(296,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6103C9,    ABISELECT(288,144), //bcp->offset
    180, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6103C22,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(309,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S6103C21,    ABISELECT(272,136), //bcp->offset
    166, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S6103C18,    ABISELECT(312,160), //bcp->offset
    187, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(240,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
    44, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(240,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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_S6103C23,    ABISELECT(240,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S6103C20,    ABISELECT(240,120), //bcp->offset
    137, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(392,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S6103C5,    ABISELECT(392,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S6103C23,    ABISELECT(392,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S6103C20,    ABISELECT(392,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S6103C6,    ABISELECT(408,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    200, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(408,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(408,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S6103C12,    ABISELECT(424,216), //bcp->offset
    232, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S6103C4,    ABISELECT(408,208), //bcp->offset
    219, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    199, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S6103C24,    ABISELECT(392,200), //bcp->offset
    198, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S3619C16,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S6103C8,    ABISELECT(432,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
    28, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S6103C26,    ABISELECT(432,220), //bcp->offset
    236, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S6103C19,    ABISELECT(232,116), //bcp->offset
    114, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S6103C15,    ABISELECT(112,56), //bcp->offset
    68, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6103C1[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C1D1Ev();
extern void _ZN7S6103C1D0Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S6103C1D1Ev,_ZTv0_n12_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S6103C1D1Ev,_ZThn40_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6103C1D0Ev,_ZTv0_n12_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S6103C1D0Ev,_ZThn40_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6103C1D1Ev,_ZTv0_n24_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S6103C1D1Ev,_ZThn44_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6103C1D0Ev,_ZTv0_n24_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S6103C1D0Ev,_ZThn44_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n168_N7S6103C1D1Ev,_ZTv0_n84_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S6103C1D1Ev,_ZThn56_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6103C1D0Ev,_ZTv0_n84_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S6103C1D0Ev,_ZThn56_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTvn16_n168_N7S6103C1D1Ev,_ZTvn8_n84_N7S6103C1D1Ev)();
extern void ABISELECT(_ZTvn16_n168_N7S6103C1D0Ev,_ZTvn8_n84_N7S6103C1D0Ev)();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6103C1D1Ev,_ZTv0_n24_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S6103C1D1Ev,_ZThn104_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6103C1D0Ev,_ZTv0_n24_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S6103C1D0Ev,_ZThn104_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n160_N7S6103C1D1Ev,_ZTv0_n80_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S6103C1D1Ev,_ZThn116_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N7S6103C1D0Ev,_ZTv0_n80_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S6103C1D0Ev,_ZThn116_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTvn8_n160_N7S6103C1D1Ev,_ZTvn4_n80_N7S6103C1D1Ev)();
extern void ABISELECT(_ZTvn8_n160_N7S6103C1D0Ev,_ZTvn4_n80_N7S6103C1D0Ev)();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S6103C1D1Ev,_ZTv0_n32_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S6103C1D1Ev,_ZThn128_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6103C1D0Ev,_ZTv0_n32_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S6103C1D0Ev,_ZThn128_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S6103C1D1Ev,_ZTv0_n44_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S6103C1D1Ev,_ZThn136_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6103C1D0Ev,_ZTv0_n44_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S6103C1D0Ev,_ZThn136_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S6103C1D1Ev,_ZTv0_n32_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn312_N7S6103C1D1Ev,_ZThn160_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6103C1D0Ev,_ZTv0_n32_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn312_N7S6103C1D0Ev,_ZThn160_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n144_N7S6103C1D1Ev,_ZTv0_n72_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn392_N7S6103C1D1Ev,_ZThn200_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S6103C1D0Ev,_ZTv0_n72_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn392_N7S6103C1D0Ev,_ZThn200_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N7S6103C1D1Ev,_ZTv0_n40_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S6103C1D1Ev,_ZThn208_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6103C1D0Ev,_ZTv0_n40_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S6103C1D0Ev,_ZThn208_N7S6103C1D0Ev)() __attribute__((weak));
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S6103C1D1Ev,_ZTv0_n44_N7S6103C1D1Ev)();
extern void ABISELECT(_ZThn432_N7S6103C1D1Ev,_ZThn220_N7S6103C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6103C1D0Ev,_ZTv0_n44_N7S6103C1D0Ev)();
extern void ABISELECT(_ZThn432_N7S6103C1D0Ev,_ZThn220_N7S6103C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6103C1[] = {
  ABISELECT(432,220),
  ABISELECT(408,208),
  ABISELECT(392,200),
  ABISELECT(312,160),
  ABISELECT(309,157),
  ABISELECT(272,136),
  ABISELECT(256,128),
  ABISELECT(232,116),
  ABISELECT(208,104),
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(80,40),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C1D0Ev,
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6103C1D1Ev,_ZTv0_n12_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6103C1D0Ev,_ZTv0_n12_N7S6103C1D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6103C1D1Ev,_ZTv0_n24_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6103C1D0Ev,_ZTv0_n24_N7S6103C1D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(320,164),
  ABISELECT(-80,-40),
  ABISELECT(296,152),
  ABISELECT(280,144),
  ABISELECT(200,104),
  ABISELECT(197,101),
  ABISELECT(160,80),
  ABISELECT(144,72),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(120,60),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6103C1D1Ev,_ZTv0_n84_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6103C1D0Ev,_ZTv0_n84_N7S6103C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n168_N7S6103C1D1Ev,_ZTvn8_n84_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n168_N7S6103C1D0Ev,_ZTvn8_n84_N7S6103C1D0Ev),
  ABISELECT(-208,-104),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6103C1D1Ev,_ZTv0_n24_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6103C1D0Ev,_ZTv0_n24_N7S6103C1D0Ev),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  ABISELECT(-232,-116),
  ABISELECT(200,104),
  ABISELECT(-200,-100),
  ABISELECT(176,92),
  ABISELECT(160,84),
  ABISELECT(-144,-72),
  ABISELECT(80,44),
  ABISELECT(77,41),
  ABISELECT(-160,-80),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-200,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-200,-100),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N7S6103C1D1Ev,_ZTv0_n80_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N7S6103C1D0Ev,_ZTv0_n80_N7S6103C1D0Ev),
  ABISELECT(69,37),
  ABISELECT(32,16),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-160,-80),
  ABISELECT(-168,-84),
  ABISELECT(-152,-76),
  ABISELECT(72,40),
  ABISELECT(-184,-92),
  ABISELECT(-208,-104),
  ABISELECT(-184,-92),
  ABISELECT(-200,-100),
  ABISELECT(-208,-104),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n160_N7S6103C1D1Ev,_ZTvn4_n80_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n160_N7S6103C1D0Ev,_ZTvn4_n80_N7S6103C1D0Ev),
  ABISELECT(-256,-128),
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6103C1D1Ev,_ZTv0_n32_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6103C1D0Ev,_ZTv0_n32_N7S6103C1D0Ev),
  ABISELECT(-272,-136),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6103C1D1Ev,_ZTv0_n44_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6103C1D0Ev,_ZTv0_n44_N7S6103C1D0Ev),
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
  ABISELECT(-312,-160),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6103C1D1Ev,_ZTv0_n32_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6103C1D0Ev,_ZTv0_n32_N7S6103C1D0Ev),
  ABISELECT(-392,-200),
  ABISELECT(-360,-184),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-136,-72),
  ABISELECT(-312,-160),
  ABISELECT(-320,-164),
  ABISELECT(-304,-156),
  ABISELECT(-80,-40),
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  ABISELECT(-392,-200),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S6103C1D1Ev,_ZTv0_n72_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S6103C1D0Ev,_ZTv0_n72_N7S6103C1D0Ev),
  ABISELECT(-408,-208),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-376,-192),
  ABISELECT(-376,-192),
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-408,-208),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6103C1D1Ev,_ZTv0_n40_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6103C1D0Ev,_ZTv0_n40_N7S6103C1D0Ev),
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-424,-216),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  ABISELECT(-432,-220),
  0,
  ABISELECT(-360,-184),
  ABISELECT(-344,-176),
  ABISELECT(-120,-60),
  ABISELECT(-400,-204),
  ABISELECT(-376,-192),
  ABISELECT(-392,-200),
  ABISELECT(-123,-63),
  ABISELECT(-432,-220),
  (VTBL_ENTRY)&(_ZTI7S6103C1[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6103C1D1Ev,_ZTv0_n44_N7S6103C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6103C1D0Ev,_ZTv0_n44_N7S6103C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6103C1[];
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C3D1Ev();
extern void _ZN7S6103C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C3__7S6103C1[] = {
  ABISELECT(80,40),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C3D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C47S6103C3__7S6103C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C67S6103C47S6103C3__A1__7S6103C1[] = {
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C67S6103C47S6103C3__A1__7S6103C1[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C47S6103C3__7S6103C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C47S6103C3__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C47S6103C3__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C47S6103C3__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C47S6103C3__7S6103C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C3__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C3__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C3__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__7S6103C3__7S6103C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
};
extern void ABISELECT(_ZTv0_n24_N7S6103C3D1Ev,_ZTv0_n12_N7S6103C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S6103C3D1Ev,_ZThn40_N7S6103C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6103C3D0Ev,_ZTv0_n12_N7S6103C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S6103C3D0Ev,_ZThn40_N7S6103C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S6103C3__7S6103C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S6103C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6103C3D1Ev,_ZTv0_n12_N7S6103C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6103C3D0Ev,_ZTv0_n12_N7S6103C3D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C5__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C5__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C6__7S6103C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C9__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C9__7S6103C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C14__7S6103C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C14__A2__7S6103C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C14__A2__7S6103C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C14__7S6103C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C15D1Ev();
extern void _ZN8S6103C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C15__7S6103C1[] = {
  ABISELECT(320,164),
  ABISELECT(-80,-40),
  ABISELECT(296,152),
  ABISELECT(280,144),
  ABISELECT(200,104),
  ABISELECT(197,101),
  ABISELECT(160,80),
  ABISELECT(144,72),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(120,60),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C15D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C168S6103C15__7S6103C1[] = {
  ABISELECT(96,48),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C168S6103C15__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C168S6103C15__7S6103C1[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S6103C16D1Ev,_ZThn48_N8S6103C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S6103C16D0Ev,_ZThn48_N8S6103C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C168S6103C15__7S6103C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C168S6103C15__7S6103C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C188S6103C15__7S6103C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C188S6103C15__7S6103C1[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C188S6103C15__7S6103C1[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C188S6103C15__7S6103C1[] = {
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C15__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A3__8S6103C15__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S6103C15D1Ev,_ZThn48_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S6103C15D0Ev,_ZThn48_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C15__7S6103C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C15__7S6103C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZThn16_N8S6103C15D1Ev,_ZThn8_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C15D0Ev,_ZThn8_N8S6103C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__A__8S6103C15__7S6103C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6103C15D1Ev,_ZThn8_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6103C15D0Ev,_ZThn8_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C15__7S6103C1[] = {
  ABISELECT(24,12),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A2__8S6103C15__7S6103C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n160_N8S6103C15D1Ev,_ZTv0_n80_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn120_N8S6103C15D1Ev,_ZThn60_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S6103C15D0Ev,_ZTv0_n80_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn120_N8S6103C15D0Ev,_ZThn60_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C19__8S6103C15__7S6103C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(200,104),
  ABISELECT(-200,-100),
  ABISELECT(176,92),
  ABISELECT(160,84),
  ABISELECT(-144,-72),
  ABISELECT(80,44),
  ABISELECT(77,41),
  ABISELECT(-160,-80),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-200,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-200,-100),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S6103C15D1Ev,_ZTv0_n80_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S6103C15D0Ev,_ZTv0_n80_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C15__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTvn8_n160_N8S6103C15D1Ev,_ZTvn4_n80_N8S6103C15D1Ev)();
extern void ABISELECT(_ZTvn8_n160_N8S6103C15D0Ev,_ZTvn4_n80_N8S6103C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C208S6103C19__8S6103C15__7S6103C1[] = {
  ABISELECT(69,37),
  ABISELECT(32,16),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-160,-80),
  ABISELECT(-168,-84),
  ABISELECT(-152,-76),
  ABISELECT(72,40),
  ABISELECT(-184,-92),
  ABISELECT(-208,-104),
  ABISELECT(-184,-92),
  ABISELECT(-200,-100),
  ABISELECT(-208,-104),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n160_N8S6103C15D1Ev,_ZTvn4_n80_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n160_N8S6103C15D0Ev,_ZTvn4_n80_N8S6103C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6103C15D1Ev,_ZTv0_n12_N8S6103C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C15D0Ev,_ZTv0_n12_N8S6103C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C15__7S6103C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C15D1Ev,_ZTv0_n12_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C15D0Ev,_ZTv0_n12_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S6103C15D1Ev,_ZThn72_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S6103C15D0Ev,_ZThn72_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__A1__8S6103C15__7S6103C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S6103C15D1Ev,_ZThn80_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S6103C15D0Ev,_ZThn80_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C15__7S6103C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C15__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn200_N8S6103C15D1Ev,_ZThn104_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn200_N8S6103C15D0Ev,_ZThn104_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__A1__8S6103C15__7S6103C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n144_N8S6103C15D1Ev,_ZTv0_n72_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn280_N8S6103C15D1Ev,_ZThn144_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S6103C15D0Ev,_ZTv0_n72_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn280_N8S6103C15D0Ev,_ZThn144_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C24__8S6103C15__7S6103C1[] = {
  ABISELECT(-280,-144),
  ABISELECT(-360,-184),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-136,-72),
  ABISELECT(-312,-160),
  ABISELECT(-320,-164),
  ABISELECT(-304,-156),
  ABISELECT(-80,-40),
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C15D1Ev,_ZTv0_n72_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C15D0Ev,_ZTv0_n72_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C15D1Ev,_ZTv0_n40_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn296_N8S6103C15D1Ev,_ZThn152_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C15D0Ev,_ZTv0_n40_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn296_N8S6103C15D0Ev,_ZThn152_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C15__7S6103C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-376,-192),
  ABISELECT(-376,-192),
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C15D1Ev,_ZTv0_n40_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C15D0Ev,_ZTv0_n40_N8S6103C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C15__7S6103C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev)();
extern void ABISELECT(_ZThn320_N8S6103C15D1Ev,_ZThn164_N8S6103C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev)();
extern void ABISELECT(_ZThn320_N8S6103C15D0Ev,_ZThn164_N8S6103C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C26__8S6103C15__7S6103C1[] = {
  ABISELECT(-320,-164),
  0,
  ABISELECT(-360,-184),
  ABISELECT(-344,-176),
  ABISELECT(-120,-60),
  ABISELECT(-400,-204),
  ABISELECT(-376,-192),
  ABISELECT(-392,-200),
  ABISELECT(-123,-63),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S6103C15[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C17D1Ev();
extern void _ZN8S6103C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C17__7S6103C1[] = {
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C17D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C14D1Ev();
extern void _ZN8S6103C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C148S6103C17__A1__7S6103C1[] = {
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C14D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C148S6103C17__A3__7S6103C1[] = {
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A3__7S6103C1[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C148S6103C17__A1__7S6103C1[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6103C14[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C17__7S6103C1[] = {
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6103C17[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C19D1Ev();
extern void _ZN8S6103C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C19__7S6103C1[] = {
  ABISELECT(200,104),
  ABISELECT(-200,-100),
  ABISELECT(176,92),
  ABISELECT(160,84),
  ABISELECT(-144,-72),
  ABISELECT(80,44),
  ABISELECT(77,41),
  ABISELECT(-160,-80),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(-200,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-200,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C19D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C19__A1__7S6103C1[] = {
  ABISELECT(-176,-88),
  ABISELECT(-200,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-200,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C19__A1__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C19__A1__7S6103C1[] = {
  0,
  ABISELECT(200,100),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C19__A1__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(69,37),
  ABISELECT(32,16),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-160,-80),
  ABISELECT(-168,-84),
  ABISELECT(-152,-76),
  ABISELECT(72,40),
  ABISELECT(-184,-92),
  ABISELECT(-208,-104),
  ABISELECT(-184,-92),
  ABISELECT(-200,-100),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(-152,-76),
  ABISELECT(72,40),
  ABISELECT(-184,-92),
  ABISELECT(-208,-104),
  ABISELECT(-184,-92),
  ABISELECT(-200,-100),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-208,-104),
  ABISELECT(-184,-92),
  ABISELECT(-200,-100),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(200,100),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZThn72_N8S6103C23D1Ev,_ZThn40_N8S6103C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
extern void ABISELECT(_ZThn72_N8S6103C23D0Ev,_ZThn40_N8S6103C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(152,76),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C208S6103C19__7S6103C1[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(200,100),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C208S6103C19__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(160,80),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C20D1Ev,_ZThn8_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C20D0Ev,_ZThn8_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(200,100),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C208S6103C19__7S6103C1[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(32,16),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn32_N8S6103C20D1Ev,_ZThn16_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn32_N8S6103C20D0Ev,_ZThn16_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZThn72_N8S6103C20D1Ev,_ZThn40_N8S6103C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
extern void ABISELECT(_ZThn72_N8S6103C20D0Ev,_ZThn40_N8S6103C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(152,76),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C19__7S6103C1[] = {
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C208S6103C19__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C19__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A3__8S6103C19__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(200,100),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C19__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZThn8_N8S6103C19D1Ev,_ZThn4_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6103C19D0Ev,_ZThn4_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C20__8S6103C19__7S6103C1[] = {
  ABISELECT(69,37),
  ABISELECT(32,16),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-160,-80),
  ABISELECT(-168,-84),
  ABISELECT(-152,-76),
  ABISELECT(72,40),
  ABISELECT(-184,-92),
  ABISELECT(-208,-104),
  ABISELECT(-184,-92),
  ABISELECT(-200,-100),
  ABISELECT(-208,-104),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6103C19D1Ev,_ZThn4_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6103C19D0Ev,_ZThn4_N8S6103C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C19__7S6103C1[] = {
  ABISELECT(152,76),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C19D1Ev,_ZTv0_n12_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C19D0Ev,_ZTv0_n12_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S6103C19D1Ev,_ZThn12_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn24_N8S6103C19D0Ev,_ZThn12_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C19__7S6103C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C19__7S6103C1[] = {
  ABISELECT(24,12),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A2__8S6103C19__7S6103C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S6103C19D1Ev,_ZThn20_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S6103C19D0Ev,_ZThn20_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C19__7S6103C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C19__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S6103C19D1Ev,_ZThn44_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S6103C19D0Ev,_ZThn44_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C19__7S6103C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C19__7S6103C1[] = {
  ABISELECT(144,72),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D1Ev,_ZTv0_n24_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C19D0Ev,_ZTv0_n24_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A4__8S6103C19__7S6103C1[] = {
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn160_N8S6103C19D1Ev,_ZThn84_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn160_N8S6103C19D0Ev,_ZThn84_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C24__8S6103C19__7S6103C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-360,-184),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-136,-72),
  ABISELECT(-312,-160),
  ABISELECT(-320,-164),
  ABISELECT(-304,-156),
  ABISELECT(-80,-40),
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn176_N8S6103C19D1Ev,_ZThn92_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn176_N8S6103C19D0Ev,_ZThn92_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C19__7S6103C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-376,-192),
  ABISELECT(-376,-192),
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C19__7S6103C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev)();
extern void ABISELECT(_ZThn200_N8S6103C19D1Ev,_ZThn104_N8S6103C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev)();
extern void ABISELECT(_ZThn200_N8S6103C19D0Ev,_ZThn104_N8S6103C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6103C26__8S6103C19__7S6103C1[] = {
  ABISELECT(-200,-104),
  0,
  ABISELECT(-360,-184),
  ABISELECT(-344,-176),
  ABISELECT(-120,-60),
  ABISELECT(-400,-204),
  ABISELECT(-376,-192),
  ABISELECT(-392,-200),
  ABISELECT(-123,-63),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S6103C19[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C16D1Ev();
extern void _ZN8S6103C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C16__A1__7S6103C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C16D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C16__A1__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(216,108),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C16__A1__7S6103C1[] = {
  0,
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C16__A1__7S6103C1[] = {
  ABISELECT(48,24),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__A1__7S6103C1[] = {
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6103C16[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C21D1Ev();
extern void _ZN8S6103C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C21__7S6103C1[] = {
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C21D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C228S6103C21__7S6103C1[] = {
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C68S6103C228S6103C21__A4__7S6103C1[] = {
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A4__7S6103C1[] = {
  0,
  ABISELECT(240,120),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__A1__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__A1__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(248,124),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__A1__7S6103C1[] = {
  0,
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI7S6103C9[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C228S6103C21__7S6103C1[] = {
  0,
  ABISELECT(240,120),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C228S6103C21__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C228S6103C21__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(232,116),
  (VTBL_ENTRY)&(_ZTI8S6103C22[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C21__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(232,116),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C21__7S6103C1[] = {
  0,
  ABISELECT(240,120),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C22__8S6103C21__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C21__7S6103C1[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI8S6103C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D1Ev,_ZTv0_n12_N8S6103C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C21D0Ev,_ZTv0_n12_N8S6103C21D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C18D1Ev();
extern void _ZN8S6103C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C18__A1__7S6103C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C18D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C18__A1__7S6103C1[] = {
  ABISELECT(224,116),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D1Ev,_ZTv0_n24_N8S6103C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C18D0Ev,_ZTv0_n24_N8S6103C18D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C18__A1__7S6103C1[] = {
  0,
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C18__A1__7S6103C1[] = {
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S6103C18[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C24D1Ev();
extern void _ZN8S6103C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C24__7S6103C1[] = {
  ABISELECT(-360,-184),
  ABISELECT(16,8),
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-136,-72),
  ABISELECT(-312,-160),
  ABISELECT(-320,-164),
  ABISELECT(-304,-156),
  ABISELECT(-80,-40),
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C24D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C20D1Ev();
extern void _ZN8S6103C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(-83,-43),
  ABISELECT(-120,-64),
  ABISELECT(-184,-96),
  ABISELECT(-136,-72),
  ABISELECT(-312,-160),
  ABISELECT(-320,-164),
  ABISELECT(-304,-156),
  ABISELECT(-80,-40),
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C20D0Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C23D1Ev();
extern void _ZN8S6103C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(-320,-164),
  ABISELECT(-304,-156),
  ABISELECT(-80,-40),
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C23D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[] = {
  ABISELECT(-336,-172),
  ABISELECT(-360,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-360,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[] = {
  0,
  ABISELECT(360,184),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI7S6103C5[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(80,40),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(304,156),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D1Ev,_ZTv0_n24_N8S6103C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C23D0Ev,_ZTv0_n24_N8S6103C23D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  0,
  ABISELECT(360,184),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__8S6103C238S6103C208S6103C24__A1__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI8S6103C23[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(312,160),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D1Ev,_ZTv0_n12_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C20D0Ev,_ZTv0_n12_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(136,72),
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C208S6103C24__A1__7S6103C1[] = {
  0,
  ABISELECT(360,184),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(184,96),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(120,64),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(80,40),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(304,156),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D1Ev,_ZTv0_n24_N8S6103C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C20D0Ev,_ZTv0_n24_N8S6103C20D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C24__A1__7S6103C1[] = {
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C208S6103C24__A1__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI8S6103C20[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S6103C24__7S6103C1[] = {
  ABISELECT(312,160),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D1Ev,_ZTv0_n12_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6103C24D0Ev,_ZTv0_n12_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C16__8S6103C24__7S6103C1[] = {
  ABISELECT(136,72),
  ABISELECT(-48,-24),
  ABISELECT(-224,-112),
  ABISELECT(-200,-100),
  ABISELECT(-216,-108),
  ABISELECT(-224,-112),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C24__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__A1__8S6103C24__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(360,184),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C17__8S6103C24__7S6103C1[] = {
  ABISELECT(184,96),
  ABISELECT(-176,-88),
  ABISELECT(-152,-76),
  ABISELECT(-176,-88),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C24__7S6103C1[] = {
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C21__8S6103C24__7S6103C1[] = {
  ABISELECT(120,64),
  ABISELECT(16,8),
  ABISELECT(37,21),
  ABISELECT(-192,-96),
  ABISELECT(-232,-116),
  ABISELECT(-200,-100),
  ABISELECT(-240,-120),
  ABISELECT(-216,-108),
  ABISELECT(-240,-120),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D1Ev,_ZTv0_n44_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6103C24D0Ev,_ZTv0_n44_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24__7S6103C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-232,-116),
  ABISELECT(-248,-124),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C24__7S6103C1[] = {
  ABISELECT(80,40),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D1Ev,_ZTv0_n32_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C24D0Ev,_ZTv0_n32_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__A1__8S6103C24__7S6103C1[] = {
  ABISELECT(304,156),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D1Ev,_ZTv0_n24_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C24D0Ev,_ZTv0_n24_N8S6103C24D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A3__8S6103C24__7S6103C1[] = {
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__A1__8S6103C24__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev)();
extern void ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6103C4__8S6103C24__7S6103C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-376,-192),
  ABISELECT(-376,-192),
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__8S6103C24__7S6103C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6103C24[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C4D1Ev();
extern void _ZN7S6103C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C4__A1__7S6103C1[] = {
  ABISELECT(-336,-172),
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-376,-192),
  ABISELECT(-376,-192),
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6103C4D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C67S6103C4__A5__7S6103C1[] = {
  ABISELECT(-376,-192),
  ABISELECT(-352,-180),
  ABISELECT(-376,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__7S6103C67S6103C4__A5__7S6103C1[] = {
  0,
  ABISELECT(376,192),
  (VTBL_ENTRY)&(_ZTI7S6103C6[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C127S6103C4__A1__7S6103C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C12[0]),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C5__7S6103C4__A1__7S6103C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(376,192),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__7S6103C4__A1__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN7S6103C92v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C9__7S6103C4__A1__7S6103C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6103C92v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6103C12__7S6103C4__A1__7S6103C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-368,-188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6103C4[0]),
};
extern void _ZN7S6103C82v1Ev();
extern void _ZN8S6103C26D1Ev();
extern void _ZN8S6103C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6103C26__7S6103C1[] = {
  ABISELECT(-360,-184),
  ABISELECT(-344,-176),
  ABISELECT(-120,-60),
  ABISELECT(-400,-204),
  ABISELECT(-376,-192),
  ABISELECT(-392,-200),
  ABISELECT(-123,-63),
  0,
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D1Ev,
  (VTBL_ENTRY)&_ZN8S6103C26D0Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C6__8S6103C26__7S6103C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(392,200),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C8__8S6103C26__7S6103C1[] = {
  0,
  ABISELECT(400,204),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C18__8S6103C26__7S6103C1[] = {
  ABISELECT(120,60),
  ABISELECT(-240,-124),
  ABISELECT(-280,-144),
  ABISELECT(-256,-132),
  ABISELECT(-224,-116),
  ABISELECT(-280,-144),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D1Ev,_ZTv0_n32_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6103C26D0Ev,_ZTv0_n32_N8S6103C26D0Ev),
};
extern void _ZN7S6103C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6103C14__8S6103C26__7S6103C1[] = {
  ABISELECT(344,176),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(344,176),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D1Ev,_ZTv0_n24_N8S6103C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6103C26D0Ev,_ZTv0_n24_N8S6103C26D0Ev),
};
extern void _ZN7S6103C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6103C88S6103C14__A2__8S6103C26__7S6103C1[] = {
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S6103C26[0]),
  (VTBL_ENTRY)&_ZN7S6103C82v1Ev,
};
static  VTT_ENTRY vtt_S6103C1[] = {
  {&(_ZTV7S6103C1[21]),  21,250},
  {&(_tg__ZTV7S6103C3__7S6103C1[10]),  10,13},
  {&(_tg__ZTV7S6103C47S6103C3__7S6103C1[9]),  9,12},
  {&(_tg__ZTV7S6103C67S6103C47S6103C3__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C67S6103C47S6103C3__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C127S6103C47S6103C3__7S6103C1[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C47S6103C3__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C47S6103C3__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C47S6103C3__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C47S6103C3__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C12__7S6103C47S6103C3__7S6103C1[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C3__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C3__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C3__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C3__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C127S6103C4__7S6103C3__7S6103C1[4]),  4,4},
  {&(_tg__ZTV12S21216C26_nt__7S6103C3__7S6103C1[3]),  3,5},
  {&(_ZTV7S6103C1[35]),  35,250},
  {&(_ZTV7S6103C1[41]),  41,250},
  {&(_ZTV7S6103C1[35]),  35,250},
  {&(_ZTV7S6103C1[49]),  49,250},
  {&(_ZTV7S6103C1[28]),  28,250},
  {&(_ZTV7S6103C1[54]),  54,250},
  {&(_ZTV7S6103C1[62]),  62,250},
  {&(_ZTV7S6103C1[67]),  67,250},
  {&(_ZTV7S6103C1[89]),  89,250},
  {&(_ZTV7S6103C1[108]),  108,250},
  {&(_ZTV7S6103C1[113]),  113,250},
  {&(_ZTV7S6103C1[99]),  99,250},
  {&(_ZTV7S6103C1[134]),  134,250},
  {&(_ZTV7S6103C1[152]),  152,250},
  {&(_ZTV7S6103C1[163]),  163,250},
  {&(_ZTV7S6103C1[177]),  177,250},
  {&(_ZTV7S6103C1[185]),  185,250},
  {&(_ZTV7S6103C1[195]),  195,250},
  {&(_ZTV7S6103C1[216]),  216,250},
  {&(_ZTV7S6103C1[229]),  229,250},
  {&(_ZTV7S6103C1[236]),  236,250},
  {&(_ZTV7S6103C1[247]),  247,250},
  {&(_tg__ZTV7S6103C5__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C5__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C5__7S6103C1[7]),  7,9},
  {&(_tg__ZTV7S6103C6__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C6__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C1[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C9__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C9__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C14__7S6103C1[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C14__A2__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C14__A2__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C14__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C15__7S6103C1[20]),  20,23},
  {&(_tg__ZTV8S6103C168S6103C15__7S6103C1[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C168S6103C15__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C168S6103C15__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C168S6103C15__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C168S6103C15__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C188S6103C15__7S6103C1[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C188S6103C15__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C188S6103C15__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C188S6103C15__7S6103C1[2]),  2,3},
  {&(_tg__ZTV7S6103C6__8S6103C15__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__A3__8S6103C15__7S6103C1[7]),  7,8},
  {&(_tg__ZTV8S6103C17__8S6103C15__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C15__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C18__A__8S6103C15__7S6103C1[7]),  7,10},
  {&(_tg__ZTV8S6103C14__A1__8S6103C15__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A2__8S6103C15__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C19__8S6103C15__7S6103C1[20]),  20,23},
  {&(_tg__ZTV7S6103C9__8S6103C15__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C208S6103C19__8S6103C15__7S6103C1[15]),  15,18},
  {&(_tg__ZTV12S21216C26_nt__8S6103C15__7S6103C1[3]),  3,5},
  {&(_tg__ZTV8S6103C16__A1__8S6103C15__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C21__8S6103C15__7S6103C1[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C15__7S6103C1[5]),  5,7},
  {&(_tg__ZTV8S6103C18__A1__8S6103C15__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C24__8S6103C15__7S6103C1[18]),  18,21},
  {&(_tg__ZTV7S6103C4__8S6103C15__7S6103C1[10]),  10,13},
  {&(_tg__ZTV7S6103C5__A3__8S6103C15__7S6103C1[7]),  7,8},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C15__7S6103C1[4]),  4,4},
  {&(_tg__ZTV8S6103C26__8S6103C15__7S6103C1[11]),  11,14},
  {&(_tg__ZTV8S6103C17__7S6103C1[5]),  5,8},
  {&(_tg__ZTV8S6103C148S6103C17__A1__7S6103C1[5]),  5,8},
  {&(_tg__ZTV7S6103C68S6103C148S6103C17__A3__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C148S6103C17__A3__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C148S6103C17__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C17__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C19__7S6103C1[19]),  19,22},
  {&(_tg__ZTV7S6103C58S6103C19__A1__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C19__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C19__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C19__A1__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C208S6103C19__7S6103C1[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C208S6103C19__7S6103C1[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C19__A2__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C208S6103C19__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C208S6103C19__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C208S6103C19__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C19__7S6103C1[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C19__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C208S6103C19__7S6103C1[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C208S6103C19__7S6103C1[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C208S6103C19__7S6103C1[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C208S6103C19__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C208S6103C19__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C208S6103C19__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C19__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C208S6103C19__7S6103C1[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C19__7S6103C1[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C208S6103C19__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C208S6103C19__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C19__7S6103C1[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C208S6103C19__7S6103C1[7]),  7,9},
  {&(_tg__ZTV7S6103C6__8S6103C19__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__A3__8S6103C19__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C9__8S6103C19__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C20__8S6103C19__7S6103C1[15]),  15,18},
  {&(_tg__ZTV12S21216C26_nt__8S6103C19__7S6103C1[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C19__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C17__8S6103C19__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A2__8S6103C19__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C19__7S6103C1[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__A1__8S6103C19__7S6103C1[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C19__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C19__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A4__8S6103C19__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C24__8S6103C19__7S6103C1[18]),  18,21},
  {&(_tg__ZTV7S6103C4__8S6103C19__7S6103C1[10]),  10,13},
  {&(_tg__ZTV7S6103C5__A3__8S6103C19__7S6103C1[7]),  7,8},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C19__7S6103C1[4]),  4,4},
  {&(_tg__ZTV8S6103C26__8S6103C19__7S6103C1[11]),  11,14},
  {&(_tg__ZTV8S6103C16__A1__7S6103C1[7]),  7,10},
  {&(_tg__ZTV7S6103C6__8S6103C16__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C16__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C16__A1__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C16__A1__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C21__7S6103C1[9]),  9,12},
  {&(_tg__ZTV8S6103C228S6103C21__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C68S6103C228S6103C21__A4__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C68S6103C228S6103C21__A4__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__A1__7S6103C1[5]),  5,7},
  {&(_tg__ZTV7S6103C6__7S6103C98S6103C228S6103C21__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__A1__7S6103C98S6103C228S6103C21__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C8__8S6103C228S6103C21__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C9__8S6103C228S6103C21__7S6103C1[5]),  5,7},
  {&(_tg__ZTV7S6103C6__A1__8S6103C228S6103C21__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C6__8S6103C21__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C21__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C98S6103C22__8S6103C21__7S6103C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S6103C21__7S6103C1[3]),  3,5},
  {&(_tg__ZTV8S6103C18__A1__7S6103C1[7]),  7,10},
  {&(_tg__ZTV8S6103C14__8S6103C18__A1__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C18__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C18__A1__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C24__7S6103C1[17]),  17,20},
  {&(_tg__ZTV8S6103C208S6103C24__A1__7S6103C1[15]),  15,18},
  {&(_tg__ZTV8S6103C238S6103C208S6103C24__A1__7S6103C1[10]),  10,13},
  {&(_tg__ZTV7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C9__7S6103C58S6103C238S6103C208S6103C24__A3__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C18__8S6103C238S6103C208S6103C24__A1__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C238S6103C208S6103C24__A1__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C8__8S6103C238S6103C208S6103C24__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV7S6103C88S6103C14__A1__8S6103C238S6103C208S6103C24__A1__7S6103C1[2]),  2,3},
  {&(_tg__ZTV7S6103C6__A1__8S6103C238S6103C208S6103C24__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C9__8S6103C238S6103C208S6103C24__A1__7S6103C1[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C208S6103C24__A1__7S6103C1[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C208S6103C24__A1__7S6103C1[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C208S6103C24__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C208S6103C24__A1__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C17__8S6103C208S6103C24__A1__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C208S6103C24__A1__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C208S6103C24__A1__7S6103C1[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C208S6103C24__A1__7S6103C1[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C208S6103C24__A1__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C208S6103C24__A1__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C208S6103C24__A1__7S6103C1[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C208S6103C24__A1__7S6103C1[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__8S6103C24__7S6103C1[3]),  3,5},
  {&(_tg__ZTV8S6103C16__8S6103C24__7S6103C1[8]),  8,11},
  {&(_tg__ZTV7S6103C6__8S6103C24__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__A1__8S6103C24__7S6103C1[7]),  7,8},
  {&(_tg__ZTV8S6103C17__8S6103C24__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C148S6103C17__A1__8S6103C24__7S6103C1[2]),  2,3},
  {&(_tg__ZTV8S6103C21__8S6103C24__7S6103C1[11]),  11,14},
  {&(_tg__ZTV7S6103C98S6103C228S6103C21__8S6103C24__7S6103C1[5]),  5,7},
  {&(_tg__ZTV8S6103C18__8S6103C24__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__A1__8S6103C24__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A3__8S6103C24__7S6103C1[2]),  2,3},
  {&(_tg__ZTV7S6103C9__A1__8S6103C24__7S6103C1[7]),  7,9},
  {&(_tg__ZTV7S6103C4__8S6103C24__7S6103C1[10]),  10,13},
  {&(_tg__ZTV7S6103C5__A1__8S6103C24__7S6103C1[7]),  7,8},
  {&(_tg__ZTV8S6103C127S6103C4__8S6103C24__7S6103C1[4]),  4,4},
  {&(_tg__ZTV7S6103C4__A1__7S6103C1[9]),  9,12},
  {&(_tg__ZTV7S6103C67S6103C4__A5__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__7S6103C67S6103C4__A5__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C127S6103C4__A1__7S6103C1[4]),  4,4},
  {&(_tg__ZTV7S6103C5__7S6103C4__A1__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C6__7S6103C4__A1__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C5__7S6103C4__A1__7S6103C1[7]),  7,8},
  {&(_tg__ZTV7S6103C9__7S6103C4__A1__7S6103C1[7]),  7,9},
  {&(_tg__ZTV8S6103C12__7S6103C4__A1__7S6103C1[4]),  4,4},
  {&(_tg__ZTV8S6103C26__7S6103C1[9]),  9,12},
  {&(_tg__ZTV7S6103C6__8S6103C26__7S6103C1[5]),  5,6},
  {&(_tg__ZTV7S6103C8__8S6103C26__7S6103C1[3]),  3,4},
  {&(_tg__ZTV8S6103C18__8S6103C26__7S6103C1[8]),  8,11},
  {&(_tg__ZTV8S6103C14__8S6103C26__7S6103C1[6]),  6,9},
  {&(_tg__ZTV7S6103C88S6103C14__A2__8S6103C26__7S6103C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S6103C1[];
extern  VTBL_ENTRY _ZTV7S6103C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6103C1[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D0Ev,_ZTv0_n40_N8S6103C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D0Ev,_ZThn8_N8S6103C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C24D1Ev,_ZTv0_n40_N8S6103C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C24D1Ev,_ZThn8_N8S6103C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C19D0Ev,_ZTv0_n40_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6103C19D0Ev,_ZThn92_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C19D1Ev,_ZTv0_n40_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6103C19D1Ev,_ZThn92_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C19D0Ev,_ZTv0_n72_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6103C19D0Ev,_ZThn84_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C19D1Ev,_ZTv0_n72_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6103C19D1Ev,_ZThn84_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C19D0Ev,_ZTv0_n44_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S6103C19D0Ev,_ZThn104_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C19D0Ev,_ZThn20_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C19D1Ev,_ZTv0_n44_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S6103C19D1Ev,_ZThn104_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6103C19D1Ev,_ZThn20_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C19D0Ev,_ZTv0_n32_N8S6103C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C19D0Ev,_ZThn44_N8S6103C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C19D0Ev,_ZThn12_N8S6103C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C19D1Ev,_ZTv0_n32_N8S6103C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6103C19D1Ev,_ZThn44_N8S6103C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6103C19D1Ev,_ZThn12_N8S6103C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D0Ev,_ZTv0_n44_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6103C20D0Ev,_ZThn16_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C20D1Ev,_ZTv0_n44_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6103C20D1Ev,_ZThn16_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D0Ev,_ZTv0_n32_N8S6103C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6103C20D0Ev,_ZThn40_N8S6103C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C20D0Ev,_ZThn8_N8S6103C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C20D1Ev,_ZTv0_n32_N8S6103C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6103C20D1Ev,_ZThn40_N8S6103C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6103C20D1Ev,_ZThn8_N8S6103C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D0Ev,_ZTv0_n32_N8S6103C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6103C23D0Ev,_ZThn40_N8S6103C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C23D1Ev,_ZTv0_n32_N8S6103C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6103C23D1Ev,_ZThn40_N8S6103C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C15D0Ev,_ZTv0_n40_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S6103C15D0Ev,_ZThn152_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6103C15D1Ev,_ZTv0_n40_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S6103C15D1Ev,_ZThn152_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C15D0Ev,_ZTv0_n72_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S6103C15D0Ev,_ZThn144_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S6103C15D1Ev,_ZTv0_n72_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S6103C15D1Ev,_ZThn144_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C15D0Ev,_ZTv0_n44_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S6103C15D0Ev,_ZThn164_N8S6103C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6103C15D0Ev,_ZThn80_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6103C15D1Ev,_ZTv0_n44_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S6103C15D1Ev,_ZThn164_N8S6103C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6103C15D1Ev,_ZThn80_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C15D0Ev,_ZTv0_n32_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S6103C15D0Ev,_ZThn104_N8S6103C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6103C15D0Ev,_ZThn72_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6103C15D1Ev,_ZTv0_n32_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S6103C15D1Ev,_ZThn104_N8S6103C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6103C15D1Ev,_ZThn72_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S6103C15D0Ev,_ZTv0_n80_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6103C15D0Ev,_ZThn60_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S6103C15D1Ev,_ZTv0_n80_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6103C15D1Ev,_ZThn60_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C15D0Ev,_ZTv0_n24_N8S6103C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C15D0Ev,_ZThn48_N8S6103C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C15D1Ev,_ZTv0_n24_N8S6103C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C15D1Ev,_ZThn48_N8S6103C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D0Ev,_ZTv0_n24_N8S6103C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C16D0Ev,_ZThn48_N8S6103C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6103C16D1Ev,_ZTv0_n24_N8S6103C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6103C16D1Ev,_ZThn48_N8S6103C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6103C3D0Ev,_ZTv0_n12_N7S6103C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6103C3D0Ev,_ZThn40_N7S6103C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6103C3D1Ev,_ZTv0_n12_N7S6103C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6103C3D1Ev,_ZThn40_N7S6103C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6103C1D0Ev,_ZTv0_n40_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S6103C1D0Ev,_ZThn208_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6103C1D1Ev,_ZTv0_n40_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S6103C1D1Ev,_ZThn208_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S6103C1D0Ev,_ZTv0_n72_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S6103C1D0Ev,_ZThn200_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S6103C1D1Ev,_ZTv0_n72_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S6103C1D1Ev,_ZThn200_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6103C1D0Ev,_ZTv0_n44_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S6103C1D0Ev,_ZThn220_N7S6103C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S6103C1D0Ev,_ZThn136_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6103C1D1Ev,_ZTv0_n44_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S6103C1D1Ev,_ZThn220_N7S6103C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S6103C1D1Ev,_ZThn136_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6103C1D0Ev,_ZTv0_n32_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S6103C1D0Ev,_ZThn160_N7S6103C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6103C1D0Ev,_ZThn128_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6103C1D1Ev,_ZTv0_n32_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S6103C1D1Ev,_ZThn160_N7S6103C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6103C1D1Ev,_ZThn128_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N7S6103C1D0Ev,_ZTv0_n80_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6103C1D0Ev,_ZThn116_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N7S6103C1D1Ev,_ZTv0_n80_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6103C1D1Ev,_ZThn116_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6103C1D0Ev,_ZTv0_n84_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6103C1D0Ev,_ZThn56_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6103C1D1Ev,_ZTv0_n84_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6103C1D1Ev,_ZThn56_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6103C1D0Ev,_ZTv0_n24_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6103C1D0Ev,_ZThn104_N7S6103C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6103C1D0Ev,_ZThn44_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6103C1D1Ev,_ZTv0_n24_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6103C1D1Ev,_ZThn104_N7S6103C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6103C1D1Ev,_ZThn44_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6103C1D0Ev,_ZTv0_n12_N7S6103C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6103C1D0Ev,_ZThn40_N7S6103C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6103C1D1Ev,_ZTv0_n12_N7S6103C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6103C1D1Ev,_ZThn40_N7S6103C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6103C1 = {  "S6103C1", // class name
  bases_S6103C1, 61,
  &(vtc_S6103C1[0]), // expected_vtbl_contents
  &(vtt_S6103C1[0]), // expected_vtt_contents
  ABISELECT(440,224), // object size
  NSPAIRA(_ZTI7S6103C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6103C1),250, //virtual function table var
  21, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6103C1),213, //virtual table table var
  41, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5240C3  {
  void *s5240c3f0[2];
  int s5240c3f1[2];
  virtual  ~S5240C3(); // _ZN7S5240C3D1Ev
  virtual void  v5(); // _ZN7S5240C32v5Ev
  virtual void  v6(); // _ZN7S5240C32v6Ev
  virtual void  v7(); // _ZN7S5240C32v7Ev
  virtual void  v8(); // _ZN7S5240C32v8Ev
  S5240C3(); // tgen
};
//SIG(-1 S5240C3) C1{ vd v1 v2 v3 v4 Fp[2] Fi[2]}


 S5240C3 ::~S5240C3(){ note_dtor("S5240C3", this);}
void  S5240C3 ::v5(){vfunc_called(this, "_ZN7S5240C32v5Ev");}
void  S5240C3 ::v6(){vfunc_called(this, "_ZN7S5240C32v6Ev");}
void  S5240C3 ::v7(){vfunc_called(this, "_ZN7S5240C32v7Ev");}
void  S5240C3 ::v8(){vfunc_called(this, "_ZN7S5240C32v8Ev");}
S5240C3 ::S5240C3(){ note_ctor("S5240C3", this);} // tgen

static void Test_S5240C3()
{
  extern Class_Descriptor cd_S5240C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5240C3, buf);
    S5240C3 *dp, &lv = *(dp=new (buf) S5240C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5240C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5240C3)");
    check_field_offset(lv, s5240c3f0, ABISELECT(8,4), "S5240C3.s5240c3f0");
    check_field_offset(lv, s5240c3f1, ABISELECT(24,12), "S5240C3.s5240c3f1");
    test_class_info(&lv, &cd_S5240C3);
    dp->~S5240C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5240C3(Test_S5240C3, "S5240C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S5240C3C1Ev();
extern void _ZN7S5240C3D1Ev();
Name_Map name_map_S5240C3[] = {
  NSPAIR(_ZN7S5240C3C1Ev),
  NSPAIR(_ZN7S5240C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5240C3[];
extern void _ZN7S5240C3D1Ev();
extern void _ZN7S5240C3D0Ev();
extern void _ZN7S5240C32v5Ev();
extern void _ZN7S5240C32v6Ev();
extern void _ZN7S5240C32v7Ev();
extern void _ZN7S5240C32v8Ev();
static  VTBL_ENTRY vtc_S5240C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5240C3[0]),
  (VTBL_ENTRY)&_ZN7S5240C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5240C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S5240C3[];
extern  VTBL_ENTRY _ZTV7S5240C3[];
Class_Descriptor cd_S5240C3 = {  "S5240C3", // class name
  0,0,//no base classes
  &(vtc_S5240C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S5240C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5240C3),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  S5240C2  : S5240C3 {
  ~S5240C2(); // tgen
  S5240C2(); // tgen
};
//SIG(-1 S5240C2) C1{ BC2{ vd v1 v2 v3 v4 Fp[2] Fi[2]}}


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

static void Test_S5240C2()
{
  extern Class_Descriptor cd_S5240C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5240C2, buf);
    S5240C2 *dp, &lv = *(dp=new (buf) S5240C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5240C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5240C2)");
    check_base_class_offset(lv, (S5240C3*), 0, "S5240C2");
    test_class_info(&lv, &cd_S5240C2);
    dp->~S5240C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5240C2(Test_S5240C2, "S5240C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S5240C2C1Ev();
extern void _ZN7S5240C2D1Ev();
Name_Map name_map_S5240C2[] = {
  NSPAIR(_ZN7S5240C2C1Ev),
  NSPAIR(_ZN7S5240C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5240C3;
extern VTBL_ENTRY _ZTI7S5240C3[];
extern  VTBL_ENTRY _ZTV7S5240C3[];
static Base_Class bases_S5240C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5240C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5240C2[];
extern void _ZN7S5240C2D1Ev();
extern void _ZN7S5240C2D0Ev();
extern void _ZN7S5240C32v5Ev();
extern void _ZN7S5240C32v6Ev();
extern void _ZN7S5240C32v7Ev();
extern void _ZN7S5240C32v8Ev();
static  VTBL_ENTRY vtc_S5240C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5240C2[0]),
  (VTBL_ENTRY)&_ZN7S5240C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5240C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S5240C2[];
extern  VTBL_ENTRY _ZTV7S5240C2[];
Class_Descriptor cd_S5240C2 = {  "S5240C2", // class name
  bases_S5240C2, 1,
  &(vtc_S5240C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S5240C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5240C2),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  S5240C1  : S5240C2 {
  ::S5757C10 s5240c1f0;
  ::S5757C15 s5240c1f1;
  ::S5757C24_nt s5240c1f2;
  virtual  ~S5240C1(); // _ZN7S5240C1D1Ev
  virtual void  v1(); // _ZN7S5240C12v1Ev
  virtual void  v2(); // _ZN7S5240C12v2Ev
  virtual void  v3(); // _ZN7S5240C12v3Ev
  virtual void  v4(); // _ZN7S5240C12v4Ev
  S5240C1(); // tgen
};
//SIG(1 S5240C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 Fp[2] Fi[2]}} vd v1 v2 v3 v4 FC4{ BC5{ BC6{ vd v11 v12 v13 v14 v15 v16 v17 FC7{ m Fp[3]} Fi:1} vd v18 v19 FC8{ m Fp}} v9 v10 Fp} FC9{ BC10{ BC6 v22 v23 v24 FC11{ m FC12{ Fp Fi[2]}[16] Fi} FC11 FC13{ m Fp} FC13 FC13 FC13 FC13 FC14{ m FC15{ Fc[3] Fi} Fi[2]}} v20 v21 FC16{ BC14 FC17{ m Fp Fc[3] Fi} FC17[3] FC17 FC17 FC17 FC17[3]}} FC18{ BC19{ BC6 vd v26 v27 FC13} v25 Fp Fi}}


 S5240C1 ::~S5240C1(){ note_dtor("S5240C1", this);}
void  S5240C1 ::v1(){vfunc_called(this, "_ZN7S5240C12v1Ev");}
void  S5240C1 ::v2(){vfunc_called(this, "_ZN7S5240C12v2Ev");}
void  S5240C1 ::v3(){vfunc_called(this, "_ZN7S5240C12v3Ev");}
void  S5240C1 ::v4(){vfunc_called(this, "_ZN7S5240C12v4Ev");}
S5240C1 ::S5240C1(){ note_ctor("S5240C1", this);} // tgen

static void Test_S5240C1()
{
  extern Class_Descriptor cd_S5240C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(120,167)];
    init_test(&cd_S5240C1, buf);
    S5240C1 *dp, &lv = *(dp=new (buf) S5240C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(952,664), "sizeof(S5240C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5240C1)");
    check_base_class_offset(lv, (S5240C3*)(S5240C2*), 0, "S5240C1");
    check_base_class_offset(lv, (S5240C2*), 0, "S5240C1");
    check_field_offset(lv, s5240c1f0, ABISELECT(32,20), "S5240C1.s5240c1f0");
    check_field_offset(lv, s5240c1f1, ABISELECT(88,48), "S5240C1.s5240c1f1");
    check_field_offset(lv, s5240c1f2, ABISELECT(888,632), "S5240C1.s5240c1f2");
    test_class_info(&lv, &cd_S5240C1);
    dp->~S5240C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5240C1(Test_S5240C1, "S5240C1", ABISELECT(952,664));

#else // __cplusplus

extern void _ZN7S5240C1C1Ev();
extern void _ZN7S5240C1D1Ev();
Name_Map name_map_S5240C1[] = {
  NSPAIR(_ZN7S5240C1C1Ev),
  NSPAIR(_ZN7S5240C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5240C3;
extern VTBL_ENTRY _ZTI7S5240C3[];
extern  VTBL_ENTRY _ZTV7S5240C3[];
extern Class_Descriptor cd_S5240C2;
extern VTBL_ENTRY _ZTI7S5240C2[];
extern  VTBL_ENTRY _ZTV7S5240C2[];
static Base_Class bases_S5240C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5240C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5240C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5240C1[];
extern void _ZN7S5240C1D1Ev();
extern void _ZN7S5240C1D0Ev();
extern void _ZN7S5240C32v5Ev();
extern void _ZN7S5240C32v6Ev();
extern void _ZN7S5240C32v7Ev();
extern void _ZN7S5240C32v8Ev();
extern void _ZN7S5240C12v1Ev();
extern void _ZN7S5240C12v2Ev();
extern void _ZN7S5240C12v3Ev();
extern void _ZN7S5240C12v4Ev();
static  VTBL_ENTRY vtc_S5240C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5240C1[0]),
  (VTBL_ENTRY)&_ZN7S5240C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5240C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5240C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5240C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5240C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5240C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5240C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5240C1[];
extern  VTBL_ENTRY _ZTV7S5240C1[];
Class_Descriptor cd_S5240C1 = {  "S5240C1", // class name
  bases_S5240C1, 2,
  &(vtc_S5240C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(952,664), // object size
  NSPAIRA(_ZTI7S5240C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5240C1),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  S5244C3  {
  ::S19894C34 s5244c3f0;
  ::S3223C13_nt s5244c3f1;
  ::S3223C4_nt s5244c3f2;
  ::S3223C13_nt s5244c3f3;
  ::S3223C13_nt s5244c3f4;
  virtual  ~S5244C3(); // _ZN7S5244C3D1Ev
  virtual void  v5(); // _ZN7S5244C32v5Ev
  virtual void  v6(); // _ZN7S5244C32v6Ev
  virtual void  v7(); // _ZN7S5244C32v7Ev
  virtual void  v8(); // _ZN7S5244C32v8Ev
  virtual void  v9(); // _ZN7S5244C32v9Ev
  virtual void  v10(); // _ZN7S5244C33v10Ev
  S5244C3(); // tgen
};
//SIG(-1 S5244C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m} FC3{ m Fi[3]} FC4{ m Fi[2]} FC3 FC3}


 S5244C3 ::~S5244C3(){ note_dtor("S5244C3", this);}
void  S5244C3 ::v5(){vfunc_called(this, "_ZN7S5244C32v5Ev");}
void  S5244C3 ::v6(){vfunc_called(this, "_ZN7S5244C32v6Ev");}
void  S5244C3 ::v7(){vfunc_called(this, "_ZN7S5244C32v7Ev");}
void  S5244C3 ::v8(){vfunc_called(this, "_ZN7S5244C32v8Ev");}
void  S5244C3 ::v9(){vfunc_called(this, "_ZN7S5244C32v9Ev");}
void  S5244C3 ::v10(){vfunc_called(this, "_ZN7S5244C33v10Ev");}
S5244C3 ::S5244C3(){ note_ctor("S5244C3", this);} // tgen

static void Test_S5244C3()
{
  extern Class_Descriptor cd_S5244C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S5244C3, buf);
    S5244C3 *dp, &lv = *(dp=new (buf) S5244C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S5244C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C3)");
    check_field_offset(lv, s5244c3f0, ABISELECT(8,4), "S5244C3.s5244c3f0");
    check_field_offset(lv, s5244c3f1, ABISELECT(12,8), "S5244C3.s5244c3f1");
    check_field_offset(lv, s5244c3f2, ABISELECT(24,20), "S5244C3.s5244c3f2");
    check_field_offset(lv, s5244c3f3, ABISELECT(32,28), "S5244C3.s5244c3f3");
    check_field_offset(lv, s5244c3f4, ABISELECT(44,40), "S5244C3.s5244c3f4");
    test_class_info(&lv, &cd_S5244C3);
    dp->~S5244C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C3(Test_S5244C3, "S5244C3", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN7S5244C3C1Ev();
extern void _ZN7S5244C3D1Ev();
Name_Map name_map_S5244C3[] = {
  NSPAIR(_ZN7S5244C3C1Ev),
  NSPAIR(_ZN7S5244C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5244C3[];
extern void _ZN7S5244C3D1Ev();
extern void _ZN7S5244C3D0Ev();
extern void _ZN7S5244C32v5Ev();
extern void _ZN7S5244C32v6Ev();
extern void _ZN7S5244C32v7Ev();
extern void _ZN7S5244C32v8Ev();
extern void _ZN7S5244C32v9Ev();
extern void _ZN7S5244C33v10Ev();
static  VTBL_ENTRY vtc_S5244C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5244C3[0]),
  (VTBL_ENTRY)&_ZN7S5244C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5244C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5244C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S5244C3[];
extern  VTBL_ENTRY _ZTV7S5244C3[];
Class_Descriptor cd_S5244C3 = {  "S5244C3", // class name
  0,0,//no base classes
  &(vtc_S5244C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI7S5244C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5244C3),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  S5244C2  : S5244C3 {
  virtual  ~S5244C2(); // _ZN7S5244C2D1Ev
  virtual void  v11(); // _ZN7S5244C23v11Ev
  S5244C2(); // tgen
};
//SIG(-1 S5244C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 FC3{ m} FC4{ m Fi[3]} FC5{ m Fi[2]} FC4 FC4} vd v1}


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

static void Test_S5244C2()
{
  extern Class_Descriptor cd_S5244C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S5244C2, buf);
    S5244C2 *dp, &lv = *(dp=new (buf) S5244C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S5244C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C2)");
    check_base_class_offset(lv, (S5244C3*), 0, "S5244C2");
    test_class_info(&lv, &cd_S5244C2);
    dp->~S5244C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C2(Test_S5244C2, "S5244C2", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN7S5244C2C1Ev();
extern void _ZN7S5244C2D1Ev();
Name_Map name_map_S5244C2[] = {
  NSPAIR(_ZN7S5244C2C1Ev),
  NSPAIR(_ZN7S5244C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5244C3;
extern VTBL_ENTRY _ZTI7S5244C3[];
extern  VTBL_ENTRY _ZTV7S5244C3[];
static Base_Class bases_S5244C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5244C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5244C2[];
extern void _ZN7S5244C2D1Ev();
extern void _ZN7S5244C2D0Ev();
extern void _ZN7S5244C32v5Ev();
extern void _ZN7S5244C32v6Ev();
extern void _ZN7S5244C32v7Ev();
extern void _ZN7S5244C32v8Ev();
extern void _ZN7S5244C32v9Ev();
extern void _ZN7S5244C33v10Ev();
extern void _ZN7S5244C23v11Ev();
static  VTBL_ENTRY vtc_S5244C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5244C2[0]),
  (VTBL_ENTRY)&_ZN7S5244C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5244C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5244C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5244C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S5244C2[];
extern  VTBL_ENTRY _ZTV7S5244C2[];
Class_Descriptor cd_S5244C2 = {  "S5244C2", // class name
  bases_S5244C2, 1,
  &(vtc_S5244C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI7S5244C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5244C2),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  S5244C11  {
  ::S5757C13_nt s5244c11f0;
  unsigned int s5244c11f1:1;
  virtual  ~S5244C11(); // _ZN8S5244C11D1Ev
  virtual void  v12(); // _ZN8S5244C113v12Ev
  virtual void  v13(); // _ZN8S5244C113v13Ev
  virtual void  v14(); // _ZN8S5244C113v14Ev
  virtual void  v15(); // _ZN8S5244C113v15Ev
  virtual void  v16(); // _ZN8S5244C113v16Ev
  virtual void  v17(); // _ZN8S5244C113v17Ev
  virtual void  v18(); // _ZN8S5244C113v18Ev
  S5244C11(); // tgen
};
//SIG(-1 S5244C11) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S5244C11 ::~S5244C11(){ note_dtor("S5244C11", this);}
void  S5244C11 ::v12(){vfunc_called(this, "_ZN8S5244C113v12Ev");}
void  S5244C11 ::v13(){vfunc_called(this, "_ZN8S5244C113v13Ev");}
void  S5244C11 ::v14(){vfunc_called(this, "_ZN8S5244C113v14Ev");}
void  S5244C11 ::v15(){vfunc_called(this, "_ZN8S5244C113v15Ev");}
void  S5244C11 ::v16(){vfunc_called(this, "_ZN8S5244C113v16Ev");}
void  S5244C11 ::v17(){vfunc_called(this, "_ZN8S5244C113v17Ev");}
void  S5244C11 ::v18(){vfunc_called(this, "_ZN8S5244C113v18Ev");}
S5244C11 ::S5244C11(){ note_ctor("S5244C11", this);} // tgen

static void Test_S5244C11()
{
  extern Class_Descriptor cd_S5244C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S5244C11, buf);
    S5244C11 *dp, &lv = *(dp=new (buf) S5244C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S5244C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C11)");
    check_field_offset(lv, s5244c11f0, ABISELECT(8,4), "S5244C11.s5244c11f0");
    set_bf_and_test(lv, s5244c11f1, ABISELECT(32,16), 0, 1, 1, "S5244C11");
    test_class_info(&lv, &cd_S5244C11);
    dp->~S5244C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C11(Test_S5244C11, "S5244C11", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S5244C11C1Ev();
extern void _ZN8S5244C11D1Ev();
Name_Map name_map_S5244C11[] = {
  NSPAIR(_ZN8S5244C11C1Ev),
  NSPAIR(_ZN8S5244C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S5244C11[];
extern void _ZN8S5244C11D1Ev();
extern void _ZN8S5244C11D0Ev();
extern void _ZN8S5244C113v12Ev();
extern void _ZN8S5244C113v13Ev();
extern void _ZN8S5244C113v14Ev();
extern void _ZN8S5244C113v15Ev();
extern void _ZN8S5244C113v16Ev();
extern void _ZN8S5244C113v17Ev();
extern void _ZN8S5244C113v18Ev();
static  VTBL_ENTRY vtc_S5244C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5244C11[0]),
  (VTBL_ENTRY)&_ZN8S5244C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5244C11D0Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v12Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v13Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v14Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v15Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v16Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v17Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v18Ev,
};
extern VTBL_ENTRY _ZTI8S5244C11[];
extern  VTBL_ENTRY _ZTV8S5244C11[];
Class_Descriptor cd_S5244C11 = {  "S5244C11", // class name
  0,0,//no base classes
  &(vtc_S5244C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S5244C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S5244C11),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  S5244C10  : S5244C11 {
  ::S5757C17_nt s5244c10f0;
  ::S5757C17_nt s5244c10f1;
  ::S19894C6_nt s5244c10f2;
  ::S19894C6_nt s5244c10f3;
  ::S19894C6_nt s5244c10f4;
  ::S19894C6_nt s5244c10f5;
  ::S19894C6_nt s5244c10f6;
  ::S5757C20_nt s5244c10f7;
  virtual void  v19(); // _ZN8S5244C103v19Ev
  virtual void  v20(); // _ZN8S5244C103v20Ev
  virtual void  v21(); // _ZN8S5244C103v21Ev
  ~S5244C10(); // tgen
  S5244C10(); // tgen
};
//SIG(-1 S5244C10) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S5244C10 ::v19(){vfunc_called(this, "_ZN8S5244C103v19Ev");}
void  S5244C10 ::v20(){vfunc_called(this, "_ZN8S5244C103v20Ev");}
void  S5244C10 ::v21(){vfunc_called(this, "_ZN8S5244C103v21Ev");}
S5244C10 ::~S5244C10(){ note_dtor("S5244C10", this);} // tgen
S5244C10 ::S5244C10(){ note_ctor("S5244C10", this);} // tgen

static void Test_S5244C10()
{
  extern Class_Descriptor cd_S5244C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S5244C10, buf);
    S5244C10 *dp, &lv = *(dp=new (buf) S5244C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S5244C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C10)");
    check_base_class_offset(lv, (S5244C11*), 0, "S5244C10");
    check_field_offset(lv, s5244c10f0, ABISELECT(40,20), "S5244C10.s5244c10f0");
    check_field_offset(lv, s5244c10f1, ABISELECT(304,216), "S5244C10.s5244c10f1");
    check_field_offset(lv, s5244c10f2, ABISELECT(568,412), "S5244C10.s5244c10f2");
    check_field_offset(lv, s5244c10f3, ABISELECT(576,416), "S5244C10.s5244c10f3");
    check_field_offset(lv, s5244c10f4, ABISELECT(584,420), "S5244C10.s5244c10f4");
    check_field_offset(lv, s5244c10f5, ABISELECT(592,424), "S5244C10.s5244c10f5");
    check_field_offset(lv, s5244c10f6, ABISELECT(600,428), "S5244C10.s5244c10f6");
    check_field_offset(lv, s5244c10f7, ABISELECT(608,432), "S5244C10.s5244c10f7");
    test_class_info(&lv, &cd_S5244C10);
    dp->~S5244C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C10(Test_S5244C10, "S5244C10", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN8S5244C10C1Ev();
extern void _ZN8S5244C10D1Ev();
Name_Map name_map_S5244C10[] = {
  NSPAIR(_ZN8S5244C10C1Ev),
  NSPAIR(_ZN8S5244C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5244C11;
extern VTBL_ENTRY _ZTI8S5244C11[];
extern  VTBL_ENTRY _ZTV8S5244C11[];
static Base_Class bases_S5244C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5244C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5244C10[];
extern void _ZN8S5244C10D1Ev();
extern void _ZN8S5244C10D0Ev();
extern void _ZN8S5244C113v12Ev();
extern void _ZN8S5244C113v13Ev();
extern void _ZN8S5244C113v14Ev();
extern void _ZN8S5244C113v15Ev();
extern void _ZN8S5244C113v16Ev();
extern void _ZN8S5244C113v17Ev();
extern void _ZN8S5244C113v18Ev();
extern void _ZN8S5244C103v19Ev();
extern void _ZN8S5244C103v20Ev();
extern void _ZN8S5244C103v21Ev();
static  VTBL_ENTRY vtc_S5244C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5244C10[0]),
  (VTBL_ENTRY)&_ZN8S5244C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5244C10D0Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v12Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v13Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v14Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v15Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v16Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v17Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v18Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v19Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v20Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v21Ev,
};
extern VTBL_ENTRY _ZTI8S5244C10[];
extern  VTBL_ENTRY _ZTV8S5244C10[];
Class_Descriptor cd_S5244C10 = {  "S5244C10", // class name
  bases_S5244C10, 1,
  &(vtc_S5244C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI8S5244C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S5244C10),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5244C9  : S5244C10 {
  ::S7075C15 s5244c9f0;
  void *s5244c9f1;
  int s5244c9f2;
  virtual void  v22(); // _ZN7S5244C93v22Ev
  virtual void  v23(); // _ZN7S5244C93v23Ev
  virtual void  v24(); // _ZN7S5244C93v24Ev
  virtual void  v25(); // _ZN7S5244C93v25Ev
  ~S5244C9(); // tgen
  S5244C9(); // tgen
};
//SIG(-1 S5244C9) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[3]} Fi:1} v12 v13 v14 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 v3 v4 FC10{ FC11{ m Fp Fc[3] Fi} FC11 FC11} Fp Fi}


void  S5244C9 ::v22(){vfunc_called(this, "_ZN7S5244C93v22Ev");}
void  S5244C9 ::v23(){vfunc_called(this, "_ZN7S5244C93v23Ev");}
void  S5244C9 ::v24(){vfunc_called(this, "_ZN7S5244C93v24Ev");}
void  S5244C9 ::v25(){vfunc_called(this, "_ZN7S5244C93v25Ev");}
S5244C9 ::~S5244C9(){ note_dtor("S5244C9", this);} // tgen
S5244C9 ::S5244C9(){ note_ctor("S5244C9", this);} // tgen

static void Test_S5244C9()
{
  extern Class_Descriptor cd_S5244C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(87,124)];
    init_test(&cd_S5244C9, buf);
    S5244C9 *dp, &lv = *(dp=new (buf) S5244C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,492), "sizeof(S5244C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C9)");
    check_base_class_offset(lv, (S5244C11*)(S5244C10*), 0, "S5244C9");
    check_base_class_offset(lv, (S5244C10*), 0, "S5244C9");
    check_field_offset(lv, s5244c9f0, ABISELECT(624,448), "S5244C9.s5244c9f0");
    check_field_offset(lv, s5244c9f1, ABISELECT(672,484), "S5244C9.s5244c9f1");
    check_field_offset(lv, s5244c9f2, ABISELECT(680,488), "S5244C9.s5244c9f2");
    test_class_info(&lv, &cd_S5244C9);
    dp->~S5244C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C9(Test_S5244C9, "S5244C9", ABISELECT(688,492));

#else // __cplusplus

extern void _ZN7S5244C9C1Ev();
extern void _ZN7S5244C9D1Ev();
Name_Map name_map_S5244C9[] = {
  NSPAIR(_ZN7S5244C9C1Ev),
  NSPAIR(_ZN7S5244C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5244C11;
extern VTBL_ENTRY _ZTI8S5244C11[];
extern  VTBL_ENTRY _ZTV8S5244C11[];
extern Class_Descriptor cd_S5244C10;
extern VTBL_ENTRY _ZTI8S5244C10[];
extern  VTBL_ENTRY _ZTV8S5244C10[];
static Base_Class bases_S5244C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5244C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5244C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5244C9[];
extern void _ZN7S5244C9D1Ev();
extern void _ZN7S5244C9D0Ev();
extern void _ZN8S5244C113v12Ev();
extern void _ZN8S5244C113v13Ev();
extern void _ZN8S5244C113v14Ev();
extern void _ZN8S5244C113v15Ev();
extern void _ZN8S5244C113v16Ev();
extern void _ZN8S5244C113v17Ev();
extern void _ZN8S5244C113v18Ev();
extern void _ZN8S5244C103v19Ev();
extern void _ZN8S5244C103v20Ev();
extern void _ZN8S5244C103v21Ev();
extern void _ZN7S5244C93v22Ev();
extern void _ZN7S5244C93v23Ev();
extern void _ZN7S5244C93v24Ev();
extern void _ZN7S5244C93v25Ev();
static  VTBL_ENTRY vtc_S5244C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5244C9[0]),
  (VTBL_ENTRY)&_ZN7S5244C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5244C9D0Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v12Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v13Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v14Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v15Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v16Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v17Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v18Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v19Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v20Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v21Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v22Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v23Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v24Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v25Ev,
};
extern VTBL_ENTRY _ZTI7S5244C9[];
extern  VTBL_ENTRY _ZTV7S5244C9[];
Class_Descriptor cd_S5244C9 = {  "S5244C9", // class name
  bases_S5244C9, 2,
  &(vtc_S5244C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(688,492), // object size
  NSPAIRA(_ZTI7S5244C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5244C9),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5244C20  : S7075C15 {
  ::S5757C23_nt s5244c20f0;
};
//SIG(-1 S5244C20) C1{ BC2{ FC3{ m Fp Fc[3] Fi} FC3 FC3} FC3}



static void Test_S5244C20()
{
  extern Class_Descriptor cd_S5244C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S5244C20, buf);
    S5244C20 &lv = *(new (buf) S5244C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S5244C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C20)");
    check_base_class_offset(lv, (S7075C15*), 0, "S5244C20");
    check_field_offset(lv, s5244c20f0, ABISELECT(48,36), "S5244C20.s5244c20f0");
    test_class_info(&lv, &cd_S5244C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C20(Test_S5244C20, "S5244C20", ABISELECT(64,48));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5244C8  : S5244C9 {
  ::S5244C20 s5244c8f0;
  virtual void  v26(); // _ZN7S5244C83v26Ev
  virtual void  v27(); // _ZN7S5244C83v27Ev
  virtual void  v28(); // _ZN7S5244C83v28Ev
  ~S5244C8(); // tgen
  S5244C8(); // tgen
};
//SIG(-1 S5244C8) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 FC5{ m Fp[3]} Fi:1} v11 v12 v13 FC6{ m FC7{ Fp Fi[2]}[16] Fi} FC6 FC8{ m Fp} FC8 FC8 FC8 FC8 FC9{ m FC10{ Fc[3] Fi} Fi[2]}} v14 v15 v16 v17 FC11{ FC12{ m Fp Fc[3] Fi} FC12 FC12} Fp Fi} v1 v2 v3 FC13{ BC11 FC12}}


void  S5244C8 ::v26(){vfunc_called(this, "_ZN7S5244C83v26Ev");}
void  S5244C8 ::v27(){vfunc_called(this, "_ZN7S5244C83v27Ev");}
void  S5244C8 ::v28(){vfunc_called(this, "_ZN7S5244C83v28Ev");}
S5244C8 ::~S5244C8(){ note_dtor("S5244C8", this);} // tgen
S5244C8 ::S5244C8(){ note_ctor("S5244C8", this);} // tgen

static void Test_S5244C8()
{
  extern Class_Descriptor cd_S5244C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(95,136)];
    init_test(&cd_S5244C8, buf);
    S5244C8 *dp, &lv = *(dp=new (buf) S5244C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,540), "sizeof(S5244C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C8)");
    check_base_class_offset(lv, (S5244C11*)(S5244C10*)(S5244C9*), 0, "S5244C8");
    check_base_class_offset(lv, (S5244C10*)(S5244C9*), 0, "S5244C8");
    check_base_class_offset(lv, (S5244C9*), 0, "S5244C8");
    check_field_offset(lv, s5244c8f0, ABISELECT(688,492), "S5244C8.s5244c8f0");
    test_class_info(&lv, &cd_S5244C8);
    dp->~S5244C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C8(Test_S5244C8, "S5244C8", ABISELECT(752,540));

#else // __cplusplus

extern void _ZN7S5244C8C1Ev();
extern void _ZN7S5244C8D1Ev();
Name_Map name_map_S5244C8[] = {
  NSPAIR(_ZN7S5244C8C1Ev),
  NSPAIR(_ZN7S5244C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5244C11;
extern VTBL_ENTRY _ZTI8S5244C11[];
extern  VTBL_ENTRY _ZTV8S5244C11[];
extern Class_Descriptor cd_S5244C10;
extern VTBL_ENTRY _ZTI8S5244C10[];
extern  VTBL_ENTRY _ZTV8S5244C10[];
extern Class_Descriptor cd_S5244C9;
extern VTBL_ENTRY _ZTI7S5244C9[];
extern  VTBL_ENTRY _ZTV7S5244C9[];
static Base_Class bases_S5244C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5244C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5244C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5244C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5244C8[];
extern void _ZN7S5244C8D1Ev();
extern void _ZN7S5244C8D0Ev();
extern void _ZN8S5244C113v12Ev();
extern void _ZN8S5244C113v13Ev();
extern void _ZN8S5244C113v14Ev();
extern void _ZN8S5244C113v15Ev();
extern void _ZN8S5244C113v16Ev();
extern void _ZN8S5244C113v17Ev();
extern void _ZN8S5244C113v18Ev();
extern void _ZN8S5244C103v19Ev();
extern void _ZN8S5244C103v20Ev();
extern void _ZN8S5244C103v21Ev();
extern void _ZN7S5244C93v22Ev();
extern void _ZN7S5244C93v23Ev();
extern void _ZN7S5244C93v24Ev();
extern void _ZN7S5244C93v25Ev();
extern void _ZN7S5244C83v26Ev();
extern void _ZN7S5244C83v27Ev();
extern void _ZN7S5244C83v28Ev();
static  VTBL_ENTRY vtc_S5244C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5244C8[0]),
  (VTBL_ENTRY)&_ZN7S5244C8D1Ev,
  (VTBL_ENTRY)&_ZN7S5244C8D0Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v12Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v13Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v14Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v15Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v16Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v17Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v18Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v19Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v20Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v21Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v22Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v23Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v24Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v25Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v26Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v27Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v28Ev,
};
extern VTBL_ENTRY _ZTI7S5244C8[];
extern  VTBL_ENTRY _ZTV7S5244C8[];
Class_Descriptor cd_S5244C8 = {  "S5244C8", // class name
  bases_S5244C8, 3,
  &(vtc_S5244C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(752,540), // object size
  NSPAIRA(_ZTI7S5244C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5244C8),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  S5244C21  : S5244C20 {
  ::S5757C23_nt s5244c21f0;
};
//SIG(-1 S5244C21) C1{ BC2{ BC3{ FC4{ m Fp Fc[3] Fi} FC4 FC4} FC4} FC4}



static void Test_S5244C21()
{
  extern Class_Descriptor cd_S5244C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S5244C21, buf);
    S5244C21 &lv = *(new (buf) S5244C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S5244C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C21)");
    check_base_class_offset(lv, (S7075C15*)(S5244C20*), 0, "S5244C21");
    check_base_class_offset(lv, (S5244C20*), 0, "S5244C21");
    check_field_offset(lv, s5244c21f0, ABISELECT(64,48), "S5244C21.s5244c21f0");
    test_class_info(&lv, &cd_S5244C21);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C21(Test_S5244C21, "S5244C21", ABISELECT(80,60));

#else // __cplusplus

extern Class_Descriptor cd_S7075C15;
extern Class_Descriptor cd_S5244C20;
static Base_Class bases_S5244C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7075C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5244C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5244C21 = {  "S5244C21", // class name
  bases_S5244C21, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,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  S5244C7  : S5244C8 {
  ::S5244C21 s5244c7f0;
  virtual void  v29(); // _ZN7S5244C73v29Ev
  virtual void  v30(); // _ZN7S5244C73v30Ev
  virtual void  v31(); // _ZN7S5244C73v31Ev
  ~S5244C7(); // tgen
  S5244C7(); // tgen
};
//SIG(-1 S5244C7) C1{ BC2{ BC3{ BC4{ BC5{ vd v4 v5 v6 v7 v8 v9 v10 FC6{ m Fp[3]} Fi:1} v11 v12 v13 FC7{ m FC8{ Fp Fi[2]}[16] Fi} FC7 FC9{ m Fp} FC9 FC9 FC9 FC9 FC10{ m FC11{ Fc[3] Fi} Fi[2]}} v14 v15 v16 v17 FC12{ FC13{ m Fp Fc[3] Fi} FC13 FC13} Fp Fi} v18 v19 v20 FC14{ BC12 FC13}} v1 v2 v3 FC15{ BC14 FC13}}


void  S5244C7 ::v29(){vfunc_called(this, "_ZN7S5244C73v29Ev");}
void  S5244C7 ::v30(){vfunc_called(this, "_ZN7S5244C73v30Ev");}
void  S5244C7 ::v31(){vfunc_called(this, "_ZN7S5244C73v31Ev");}
S5244C7 ::~S5244C7(){ note_dtor("S5244C7", this);} // tgen
S5244C7 ::S5244C7(){ note_ctor("S5244C7", this);} // tgen

static void Test_S5244C7()
{
  extern Class_Descriptor cd_S5244C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(105,151)];
    init_test(&cd_S5244C7, buf);
    S5244C7 *dp, &lv = *(dp=new (buf) S5244C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,600), "sizeof(S5244C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C7)");
    check_base_class_offset(lv, (S5244C11*)(S5244C10*)(S5244C9*)(S5244C8*), 0, "S5244C7");
    check_base_class_offset(lv, (S5244C10*)(S5244C9*)(S5244C8*), 0, "S5244C7");
    check_base_class_offset(lv, (S5244C9*)(S5244C8*), 0, "S5244C7");
    check_base_class_offset(lv, (S5244C8*), 0, "S5244C7");
    check_field_offset(lv, s5244c7f0, ABISELECT(752,540), "S5244C7.s5244c7f0");
    test_class_info(&lv, &cd_S5244C7);
    dp->~S5244C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C7(Test_S5244C7, "S5244C7", ABISELECT(832,600));

#else // __cplusplus

extern void _ZN7S5244C7C1Ev();
extern void _ZN7S5244C7D1Ev();
Name_Map name_map_S5244C7[] = {
  NSPAIR(_ZN7S5244C7C1Ev),
  NSPAIR(_ZN7S5244C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5244C11;
extern VTBL_ENTRY _ZTI8S5244C11[];
extern  VTBL_ENTRY _ZTV8S5244C11[];
extern Class_Descriptor cd_S5244C10;
extern VTBL_ENTRY _ZTI8S5244C10[];
extern  VTBL_ENTRY _ZTV8S5244C10[];
extern Class_Descriptor cd_S5244C9;
extern VTBL_ENTRY _ZTI7S5244C9[];
extern  VTBL_ENTRY _ZTV7S5244C9[];
extern Class_Descriptor cd_S5244C8;
extern VTBL_ENTRY _ZTI7S5244C8[];
extern  VTBL_ENTRY _ZTV7S5244C8[];
static Base_Class bases_S5244C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5244C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5244C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5244C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5244C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5244C7[];
extern void _ZN7S5244C7D1Ev();
extern void _ZN7S5244C7D0Ev();
extern void _ZN8S5244C113v12Ev();
extern void _ZN8S5244C113v13Ev();
extern void _ZN8S5244C113v14Ev();
extern void _ZN8S5244C113v15Ev();
extern void _ZN8S5244C113v16Ev();
extern void _ZN8S5244C113v17Ev();
extern void _ZN8S5244C113v18Ev();
extern void _ZN8S5244C103v19Ev();
extern void _ZN8S5244C103v20Ev();
extern void _ZN8S5244C103v21Ev();
extern void _ZN7S5244C93v22Ev();
extern void _ZN7S5244C93v23Ev();
extern void _ZN7S5244C93v24Ev();
extern void _ZN7S5244C93v25Ev();
extern void _ZN7S5244C83v26Ev();
extern void _ZN7S5244C83v27Ev();
extern void _ZN7S5244C83v28Ev();
extern void _ZN7S5244C73v29Ev();
extern void _ZN7S5244C73v30Ev();
extern void _ZN7S5244C73v31Ev();
static  VTBL_ENTRY vtc_S5244C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5244C7[0]),
  (VTBL_ENTRY)&_ZN7S5244C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5244C7D0Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v12Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v13Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v14Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v15Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v16Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v17Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v18Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v19Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v20Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v21Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v22Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v23Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v24Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v25Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v26Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v27Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v28Ev,
  (VTBL_ENTRY)&_ZN7S5244C73v29Ev,
  (VTBL_ENTRY)&_ZN7S5244C73v30Ev,
  (VTBL_ENTRY)&_ZN7S5244C73v31Ev,
};
extern VTBL_ENTRY _ZTI7S5244C7[];
extern  VTBL_ENTRY _ZTV7S5244C7[];
Class_Descriptor cd_S5244C7 = {  "S5244C7", // class name
  bases_S5244C7, 4,
  &(vtc_S5244C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,600), // object size
  NSPAIRA(_ZTI7S5244C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5244C7),24, //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  S5244C1  : S5244C2 , S5244C7 {
  virtual void  v1(); // _ZN7S5244C12v1Ev
  virtual void  v2(); // _ZN7S5244C12v2Ev
  virtual void  v3(); // _ZN7S5244C12v3Ev
  virtual void  v4(); // _ZN7S5244C12v4Ev
  ~S5244C1(); // tgen
  S5244C1(); // tgen
};
//SIG(1 S5244C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 FC4{ m} FC5{ m Fi[3]} FC6{ m Fi[2]} FC5 FC5} vd v11} BC7{ BC8{ BC9{ BC10{ BC11{ vd v12 v13 v14 v15 v16 v17 v18 FC12{ m Fp[3]} Fi:1} v19 v20 v21 FC13{ m FC14{ Fp Fi[2]}[16] Fi} FC13 FC15{ m Fp} FC15 FC15 FC15 FC15 FC16{ m FC17{ Fc[3] Fi} Fi[2]}} v22 v23 v24 v25 FC18{ FC19{ m Fp Fc[3] Fi} FC19 FC19} Fp Fi} v26 v27 v28 FC20{ BC18 FC19}} v29 v30 v31 FC21{ BC20 FC19}} v1 v2 v3 v4}


void  S5244C1 ::v1(){vfunc_called(this, "_ZN7S5244C12v1Ev");}
void  S5244C1 ::v2(){vfunc_called(this, "_ZN7S5244C12v2Ev");}
void  S5244C1 ::v3(){vfunc_called(this, "_ZN7S5244C12v3Ev");}
void  S5244C1 ::v4(){vfunc_called(this, "_ZN7S5244C12v4Ev");}
S5244C1 ::~S5244C1(){ note_dtor("S5244C1", this);} // tgen
S5244C1 ::S5244C1(){ note_ctor("S5244C1", this);} // tgen

static void Test_S5244C1()
{
  extern Class_Descriptor cd_S5244C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(112,164)];
    init_test(&cd_S5244C1, buf);
    S5244C1 *dp, &lv = *(dp=new (buf) S5244C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(888,652), "sizeof(S5244C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5244C1)");
    check_base_class_offset(lv, (S5244C3*)(S5244C2*), 0, "S5244C1");
    check_base_class_offset(lv, (S5244C2*), 0, "S5244C1");
    check_base_class_offset(lv, (S5244C11*)(S5244C10*)(S5244C9*)(S5244C8*)(S5244C7*), ABISELECT(56,52), "S5244C1");
    check_base_class_offset(lv, (S5244C10*)(S5244C9*)(S5244C8*)(S5244C7*), ABISELECT(56,52), "S5244C1");
    check_base_class_offset(lv, (S5244C9*)(S5244C8*)(S5244C7*), ABISELECT(56,52), "S5244C1");
    check_base_class_offset(lv, (S5244C8*)(S5244C7*), ABISELECT(56,52), "S5244C1");
    check_base_class_offset(lv, (S5244C7*), ABISELECT(56,52), "S5244C1");
    test_class_info(&lv, &cd_S5244C1);
    dp->~S5244C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5244C1(Test_S5244C1, "S5244C1", ABISELECT(888,652));

#else // __cplusplus

extern void _ZN7S5244C1C1Ev();
extern void _ZN7S5244C1D1Ev();
Name_Map name_map_S5244C1[] = {
  NSPAIR(_ZN7S5244C1C1Ev),
  NSPAIR(_ZN7S5244C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5244C3;
extern VTBL_ENTRY _ZTI7S5244C3[];
extern  VTBL_ENTRY _ZTV7S5244C3[];
extern Class_Descriptor cd_S5244C2;
extern VTBL_ENTRY _ZTI7S5244C2[];
extern  VTBL_ENTRY _ZTV7S5244C2[];
extern Class_Descriptor cd_S5244C11;
extern VTBL_ENTRY _ZTI8S5244C11[];
extern  VTBL_ENTRY _ZTV8S5244C11[];
extern Class_Descriptor cd_S5244C10;
extern VTBL_ENTRY _ZTI8S5244C10[];
extern  VTBL_ENTRY _ZTV8S5244C10[];
extern Class_Descriptor cd_S5244C9;
extern VTBL_ENTRY _ZTI7S5244C9[];
extern  VTBL_ENTRY _ZTV7S5244C9[];
extern Class_Descriptor cd_S5244C8;
extern VTBL_ENTRY _ZTI7S5244C8[];
extern  VTBL_ENTRY _ZTV7S5244C8[];
extern Class_Descriptor cd_S5244C7;
extern VTBL_ENTRY _ZTI7S5244C7[];
extern  VTBL_ENTRY _ZTV7S5244C7[];
static Base_Class bases_S5244C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5244C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5244C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5244C11,    ABISELECT(56,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5244C10,    ABISELECT(56,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
    4, //immediately_derived
  0, 0},
  {&cd_S5244C9,    ABISELECT(56,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S5244C8,    ABISELECT(56,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5244C7,    ABISELECT(56,52), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5244C1[];
extern void _ZN7S5244C1D1Ev();
extern void _ZN7S5244C1D0Ev();
extern void _ZN7S5244C32v5Ev();
extern void _ZN7S5244C32v6Ev();
extern void _ZN7S5244C32v7Ev();
extern void _ZN7S5244C32v8Ev();
extern void _ZN7S5244C32v9Ev();
extern void _ZN7S5244C33v10Ev();
extern void _ZN7S5244C23v11Ev();
extern void _ZN7S5244C12v1Ev();
extern void _ZN7S5244C12v2Ev();
extern void _ZN7S5244C12v3Ev();
extern void _ZN7S5244C12v4Ev();
extern void ABISELECT(_ZThn56_N7S5244C1D1Ev,_ZThn52_N7S5244C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S5244C1D0Ev,_ZThn52_N7S5244C1D0Ev)();
extern void _ZN8S5244C113v12Ev();
extern void _ZN8S5244C113v13Ev();
extern void _ZN8S5244C113v14Ev();
extern void _ZN8S5244C113v15Ev();
extern void _ZN8S5244C113v16Ev();
extern void _ZN8S5244C113v17Ev();
extern void _ZN8S5244C113v18Ev();
extern void _ZN8S5244C103v19Ev();
extern void _ZN8S5244C103v20Ev();
extern void _ZN8S5244C103v21Ev();
extern void _ZN7S5244C93v22Ev();
extern void _ZN7S5244C93v23Ev();
extern void _ZN7S5244C93v24Ev();
extern void _ZN7S5244C93v25Ev();
extern void _ZN7S5244C83v26Ev();
extern void _ZN7S5244C83v27Ev();
extern void _ZN7S5244C83v28Ev();
extern void _ZN7S5244C73v29Ev();
extern void _ZN7S5244C73v30Ev();
extern void _ZN7S5244C73v31Ev();
static  VTBL_ENTRY vtc_S5244C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5244C1[0]),
  (VTBL_ENTRY)&_ZN7S5244C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5244C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5244C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5244C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5244C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5244C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5244C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5244C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5244C12v4Ev,
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI7S5244C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5244C1D1Ev,_ZThn52_N7S5244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5244C1D0Ev,_ZThn52_N7S5244C1D0Ev),
  (VTBL_ENTRY)&_ZN8S5244C113v12Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v13Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v14Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v15Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v16Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v17Ev,
  (VTBL_ENTRY)&_ZN8S5244C113v18Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v19Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v20Ev,
  (VTBL_ENTRY)&_ZN8S5244C103v21Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v22Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v23Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v24Ev,
  (VTBL_ENTRY)&_ZN7S5244C93v25Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v26Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v27Ev,
  (VTBL_ENTRY)&_ZN7S5244C83v28Ev,
  (VTBL_ENTRY)&_ZN7S5244C73v29Ev,
  (VTBL_ENTRY)&_ZN7S5244C73v30Ev,
  (VTBL_ENTRY)&_ZN7S5244C73v31Ev,
};
extern VTBL_ENTRY _ZTI7S5244C1[];
extern  VTBL_ENTRY _ZTV7S5244C1[];
Class_Descriptor cd_S5244C1 = {  "S5244C1", // class name
  bases_S5244C1, 7,
  &(vtc_S5244C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(888,652), // object size
  NSPAIRA(_ZTI7S5244C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5244C1),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S900C5  {
  ::S5757C13_nt s900c5f0;
  unsigned int s900c5f1:1;
  virtual  ~S900C5(); // _ZN6S900C5D1Ev
  virtual void  v3(); // _ZN6S900C52v3Ev
  virtual void  v4(); // _ZN6S900C52v4Ev
  virtual void  v5(); // _ZN6S900C52v5Ev
  virtual void  v6(); // _ZN6S900C52v6Ev
  virtual void  v7(); // _ZN6S900C52v7Ev
  virtual void  v8(); // _ZN6S900C52v8Ev
  virtual void  v9(); // _ZN6S900C52v9Ev
  S900C5(); // tgen
};
//SIG(-1 S900C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S900C5 ::~S900C5(){ note_dtor("S900C5", this);}
void  S900C5 ::v3(){vfunc_called(this, "_ZN6S900C52v3Ev");}
void  S900C5 ::v4(){vfunc_called(this, "_ZN6S900C52v4Ev");}
void  S900C5 ::v5(){vfunc_called(this, "_ZN6S900C52v5Ev");}
void  S900C5 ::v6(){vfunc_called(this, "_ZN6S900C52v6Ev");}
void  S900C5 ::v7(){vfunc_called(this, "_ZN6S900C52v7Ev");}
void  S900C5 ::v8(){vfunc_called(this, "_ZN6S900C52v8Ev");}
void  S900C5 ::v9(){vfunc_called(this, "_ZN6S900C52v9Ev");}
S900C5 ::S900C5(){ note_ctor("S900C5", this);} // tgen

static void Test_S900C5()
{
  extern Class_Descriptor cd_S900C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S900C5, buf);
    S900C5 *dp, &lv = *(dp=new (buf) S900C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S900C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C5)");
    check_field_offset(lv, s900c5f0, ABISELECT(8,4), "S900C5.s900c5f0");
    set_bf_and_test(lv, s900c5f1, ABISELECT(32,16), 0, 1, 1, "S900C5");
    test_class_info(&lv, &cd_S900C5);
    dp->~S900C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C5(Test_S900C5, "S900C5", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN6S900C5C1Ev();
extern void _ZN6S900C5D1Ev();
Name_Map name_map_S900C5[] = {
  NSPAIR(_ZN6S900C5C1Ev),
  NSPAIR(_ZN6S900C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S900C5[];
extern void _ZN6S900C5D1Ev();
extern void _ZN6S900C5D0Ev();
extern void _ZN6S900C52v3Ev();
extern void _ZN6S900C52v4Ev();
extern void _ZN6S900C52v5Ev();
extern void _ZN6S900C52v6Ev();
extern void _ZN6S900C52v7Ev();
extern void _ZN6S900C52v8Ev();
extern void _ZN6S900C52v9Ev();
static  VTBL_ENTRY vtc_S900C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S900C5[0]),
  (VTBL_ENTRY)&_ZN6S900C5D1Ev,
  (VTBL_ENTRY)&_ZN6S900C5D0Ev,
  (VTBL_ENTRY)&_ZN6S900C52v3Ev,
  (VTBL_ENTRY)&_ZN6S900C52v4Ev,
  (VTBL_ENTRY)&_ZN6S900C52v5Ev,
  (VTBL_ENTRY)&_ZN6S900C52v6Ev,
  (VTBL_ENTRY)&_ZN6S900C52v7Ev,
  (VTBL_ENTRY)&_ZN6S900C52v8Ev,
  (VTBL_ENTRY)&_ZN6S900C52v9Ev,
};
extern VTBL_ENTRY _ZTI6S900C5[];
extern  VTBL_ENTRY _ZTV6S900C5[];
Class_Descriptor cd_S900C5 = {  "S900C5", // class name
  0,0,//no base classes
  &(vtc_S900C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI6S900C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S900C5),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  S900C4  : S900C5 {
  ::S5757C17_nt s900c4f0;
  ::S5757C17_nt s900c4f1;
  ::S19894C6_nt s900c4f2;
  ::S19894C6_nt s900c4f3;
  ::S19894C6_nt s900c4f4;
  ::S19894C6_nt s900c4f5;
  ::S19894C6_nt s900c4f6;
  ::S5757C20_nt s900c4f7;
  virtual void  v10(); // _ZN6S900C43v10Ev
  virtual void  v11(); // _ZN6S900C43v11Ev
  virtual void  v12(); // _ZN6S900C43v12Ev
  ~S900C4(); // tgen
  S900C4(); // tgen
};
//SIG(-1 S900C4) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S900C4 ::v10(){vfunc_called(this, "_ZN6S900C43v10Ev");}
void  S900C4 ::v11(){vfunc_called(this, "_ZN6S900C43v11Ev");}
void  S900C4 ::v12(){vfunc_called(this, "_ZN6S900C43v12Ev");}
S900C4 ::~S900C4(){ note_dtor("S900C4", this);} // tgen
S900C4 ::S900C4(){ note_ctor("S900C4", this);} // tgen

static void Test_S900C4()
{
  extern Class_Descriptor cd_S900C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S900C4, buf);
    S900C4 *dp, &lv = *(dp=new (buf) S900C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S900C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C4)");
    check_base_class_offset(lv, (S900C5*), 0, "S900C4");
    check_field_offset(lv, s900c4f0, ABISELECT(40,20), "S900C4.s900c4f0");
    check_field_offset(lv, s900c4f1, ABISELECT(304,216), "S900C4.s900c4f1");
    check_field_offset(lv, s900c4f2, ABISELECT(568,412), "S900C4.s900c4f2");
    check_field_offset(lv, s900c4f3, ABISELECT(576,416), "S900C4.s900c4f3");
    check_field_offset(lv, s900c4f4, ABISELECT(584,420), "S900C4.s900c4f4");
    check_field_offset(lv, s900c4f5, ABISELECT(592,424), "S900C4.s900c4f5");
    check_field_offset(lv, s900c4f6, ABISELECT(600,428), "S900C4.s900c4f6");
    check_field_offset(lv, s900c4f7, ABISELECT(608,432), "S900C4.s900c4f7");
    test_class_info(&lv, &cd_S900C4);
    dp->~S900C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C4(Test_S900C4, "S900C4", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN6S900C4C1Ev();
extern void _ZN6S900C4D1Ev();
Name_Map name_map_S900C4[] = {
  NSPAIR(_ZN6S900C4C1Ev),
  NSPAIR(_ZN6S900C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S900C5;
extern VTBL_ENTRY _ZTI6S900C5[];
extern  VTBL_ENTRY _ZTV6S900C5[];
static Base_Class bases_S900C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S900C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S900C4[];
extern void _ZN6S900C4D1Ev();
extern void _ZN6S900C4D0Ev();
extern void _ZN6S900C52v3Ev();
extern void _ZN6S900C52v4Ev();
extern void _ZN6S900C52v5Ev();
extern void _ZN6S900C52v6Ev();
extern void _ZN6S900C52v7Ev();
extern void _ZN6S900C52v8Ev();
extern void _ZN6S900C52v9Ev();
extern void _ZN6S900C43v10Ev();
extern void _ZN6S900C43v11Ev();
extern void _ZN6S900C43v12Ev();
static  VTBL_ENTRY vtc_S900C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S900C4[0]),
  (VTBL_ENTRY)&_ZN6S900C4D1Ev,
  (VTBL_ENTRY)&_ZN6S900C4D0Ev,
  (VTBL_ENTRY)&_ZN6S900C52v3Ev,
  (VTBL_ENTRY)&_ZN6S900C52v4Ev,
  (VTBL_ENTRY)&_ZN6S900C52v5Ev,
  (VTBL_ENTRY)&_ZN6S900C52v6Ev,
  (VTBL_ENTRY)&_ZN6S900C52v7Ev,
  (VTBL_ENTRY)&_ZN6S900C52v8Ev,
  (VTBL_ENTRY)&_ZN6S900C52v9Ev,
  (VTBL_ENTRY)&_ZN6S900C43v10Ev,
  (VTBL_ENTRY)&_ZN6S900C43v11Ev,
  (VTBL_ENTRY)&_ZN6S900C43v12Ev,
};
extern VTBL_ENTRY _ZTI6S900C4[];
extern  VTBL_ENTRY _ZTV6S900C4[];
Class_Descriptor cd_S900C4 = {  "S900C4", // class name
  bases_S900C4, 1,
  &(vtc_S900C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI6S900C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S900C4),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S900C14_nt  {
  ::S5757C23_nt s900c14f0[4];
  int s900c14f1;
  void  mf900c14(); // _ZN10S900C14_nt8mf900c14Ev
};
//SIG(-1 S900C14_nt) C1{ m FC2{ m Fp Fc[3] Fi}[4] Fi}


void  S900C14_nt ::mf900c14(){}

//skip512 S900C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S900C12  {
  ::S5757C23_nt s900c12f0;
  ::S5757C23_nt s900c12f1[2];
  ::S900C14_nt s900c12f2;
  ::S5757C23_nt s900c12f3;
  ::S5757C23_nt s900c12f4;
};
//SIG(-1 S900C12) C1{ FC2{ m Fp Fc[3] Fi} FC2[2] FC3{ m FC2[4] Fi} FC2 FC2}



static void Test_S900C12()
{
  {
    init_simple_test("S900C12");
    S900C12 lv;
    check2(sizeof(lv), ABISELECT(152,112), "sizeof(S900C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C12)");
    check_field_offset(lv, s900c12f0, 0, "S900C12.s900c12f0");
    check_field_offset(lv, s900c12f1, ABISELECT(16,12), "S900C12.s900c12f1");
    check_field_offset(lv, s900c12f2, ABISELECT(48,36), "S900C12.s900c12f2");
    check_field_offset(lv, s900c12f3, ABISELECT(120,88), "S900C12.s900c12f3");
    check_field_offset(lv, s900c12f4, ABISELECT(136,100), "S900C12.s900c12f4");
  }
}
static Arrange_To_Call_Me vS900C12(Test_S900C12, "S900C12", ABISELECT(152,112));

#else // __cplusplus

Class_Descriptor cd_S900C12 = {  "S900C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(152,112), // 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  S900C15  {
  ::S3445C28 s900c15f0;
  int s900c15f1;
  void  mf900c15(); // _ZN7S900C158mf900c15Ev
};
//SIG(-1 S900C15) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fi}


void  S900C15 ::mf900c15(){}

static void Test_S900C15()
{
  {
    init_simple_test("S900C15");
    S900C15 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S900C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C15)");
    check_field_offset(lv, s900c15f0, 0, "S900C15.s900c15f0");
    check_field_offset(lv, s900c15f1, ABISELECT(16,12), "S900C15.s900c15f1");
  }
}
static Arrange_To_Call_Me vS900C15(Test_S900C15, "S900C15", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S900C3  : S900C4 {
  ::S900C12 s900c3f0;
  ::S900C15 s900c3f1;
  virtual void  v13(); // _ZN6S900C33v13Ev
  virtual void  v14(); // _ZN6S900C33v14Ev
  virtual void  v15(); // _ZN6S900C33v15Ev
  ~S900C3(); // tgen
  S900C3(); // tgen
};
//SIG(-1 S900C3) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 FC4{ m Fp[3]} Fi:1} v11 v12 v13 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 v3 FC10{ FC11{ m Fp Fc[3] Fi} FC11[2] FC12{ m FC11[4] Fi} FC11 FC11} FC13{ m FC14{ BC15{ m Fp Fi[2]}} Fi}}


void  S900C3 ::v13(){vfunc_called(this, "_ZN6S900C33v13Ev");}
void  S900C3 ::v14(){vfunc_called(this, "_ZN6S900C33v14Ev");}
void  S900C3 ::v15(){vfunc_called(this, "_ZN6S900C33v15Ev");}
S900C3 ::~S900C3(){ note_dtor("S900C3", this);} // tgen
S900C3 ::S900C3(){ note_ctor("S900C3", this);} // tgen

static void Test_S900C3()
{
  extern Class_Descriptor cd_S900C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(101,145)];
    init_test(&cd_S900C3, buf);
    S900C3 *dp, &lv = *(dp=new (buf) S900C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(800,576), "sizeof(S900C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C3)");
    check_base_class_offset(lv, (S900C5*)(S900C4*), 0, "S900C3");
    check_base_class_offset(lv, (S900C4*), 0, "S900C3");
    check_field_offset(lv, s900c3f0, ABISELECT(624,448), "S900C3.s900c3f0");
    check_field_offset(lv, s900c3f1, ABISELECT(776,560), "S900C3.s900c3f1");
    test_class_info(&lv, &cd_S900C3);
    dp->~S900C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C3(Test_S900C3, "S900C3", ABISELECT(800,576));

#else // __cplusplus

extern void _ZN6S900C3C1Ev();
extern void _ZN6S900C3D1Ev();
Name_Map name_map_S900C3[] = {
  NSPAIR(_ZN6S900C3C1Ev),
  NSPAIR(_ZN6S900C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S900C5;
extern VTBL_ENTRY _ZTI6S900C5[];
extern  VTBL_ENTRY _ZTV6S900C5[];
extern Class_Descriptor cd_S900C4;
extern VTBL_ENTRY _ZTI6S900C4[];
extern  VTBL_ENTRY _ZTV6S900C4[];
static Base_Class bases_S900C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S900C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S900C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S900C3[];
extern void _ZN6S900C3D1Ev();
extern void _ZN6S900C3D0Ev();
extern void _ZN6S900C52v3Ev();
extern void _ZN6S900C52v4Ev();
extern void _ZN6S900C52v5Ev();
extern void _ZN6S900C52v6Ev();
extern void _ZN6S900C52v7Ev();
extern void _ZN6S900C52v8Ev();
extern void _ZN6S900C52v9Ev();
extern void _ZN6S900C43v10Ev();
extern void _ZN6S900C43v11Ev();
extern void _ZN6S900C43v12Ev();
extern void _ZN6S900C33v13Ev();
extern void _ZN6S900C33v14Ev();
extern void _ZN6S900C33v15Ev();
static  VTBL_ENTRY vtc_S900C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S900C3[0]),
  (VTBL_ENTRY)&_ZN6S900C3D1Ev,
  (VTBL_ENTRY)&_ZN6S900C3D0Ev,
  (VTBL_ENTRY)&_ZN6S900C52v3Ev,
  (VTBL_ENTRY)&_ZN6S900C52v4Ev,
  (VTBL_ENTRY)&_ZN6S900C52v5Ev,
  (VTBL_ENTRY)&_ZN6S900C52v6Ev,
  (VTBL_ENTRY)&_ZN6S900C52v7Ev,
  (VTBL_ENTRY)&_ZN6S900C52v8Ev,
  (VTBL_ENTRY)&_ZN6S900C52v9Ev,
  (VTBL_ENTRY)&_ZN6S900C43v10Ev,
  (VTBL_ENTRY)&_ZN6S900C43v11Ev,
  (VTBL_ENTRY)&_ZN6S900C43v12Ev,
  (VTBL_ENTRY)&_ZN6S900C33v13Ev,
  (VTBL_ENTRY)&_ZN6S900C33v14Ev,
  (VTBL_ENTRY)&_ZN6S900C33v15Ev,
};
extern VTBL_ENTRY _ZTI6S900C3[];
extern  VTBL_ENTRY _ZTV6S900C3[];
Class_Descriptor cd_S900C3 = {  "S900C3", // class name
  bases_S900C3, 2,
  &(vtc_S900C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(800,576), // object size
  NSPAIRA(_ZTI6S900C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S900C3),17, //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  S900C18  : S900C12 {
  ::S5757C23_nt s900c18f0;
  ::S5757C23_nt s900c18f1;
};
//SIG(-1 S900C18) C1{ BC2{ FC3{ m Fp Fc[3] Fi} FC3[2] FC4{ m FC3[4] Fi} FC3 FC3} FC3 FC3}



static void Test_S900C18()
{
  extern Class_Descriptor cd_S900C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,35)];
    init_test(&cd_S900C18, buf);
    S900C18 &lv = *(new (buf) S900C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,136), "sizeof(S900C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C18)");
    check_base_class_offset(lv, (S900C12*), 0, "S900C18");
    check_field_offset(lv, s900c18f0, ABISELECT(152,112), "S900C18.s900c18f0");
    check_field_offset(lv, s900c18f1, ABISELECT(168,124), "S900C18.s900c18f1");
    test_class_info(&lv, &cd_S900C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C18(Test_S900C18, "S900C18", ABISELECT(184,136));

#else // __cplusplus

extern Class_Descriptor cd_S900C12;
static Base_Class bases_S900C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S900C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S900C18 = {  "S900C18", // class name
  bases_S900C18, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(184,136), // 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  S900C2  : S900C3 {
  ::S900C18 s900c2f0;
  virtual void  v16(); // _ZN6S900C23v16Ev
  virtual void  v17(); // _ZN6S900C23v17Ev
  ~S900C2(); // tgen
  S900C2(); // tgen
};
//SIG(-1 S900C2) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 v7 v8 v9 FC5{ m Fp[3]} Fi:1} v10 v11 v12 FC6{ m FC7{ Fp Fi[2]}[16] Fi} FC6 FC8{ m Fp} FC8 FC8 FC8 FC8 FC9{ m FC10{ Fc[3] Fi} Fi[2]}} v13 v14 v15 FC11{ FC12{ m Fp Fc[3] Fi} FC12[2] FC13{ m FC12[4] Fi} FC12 FC12} FC14{ m FC15{ BC16{ m Fp Fi[2]}} Fi}} v1 v2 FC17{ BC11 FC12 FC12}}


void  S900C2 ::v16(){vfunc_called(this, "_ZN6S900C23v16Ev");}
void  S900C2 ::v17(){vfunc_called(this, "_ZN6S900C23v17Ev");}
S900C2 ::~S900C2(){ note_dtor("S900C2", this);} // tgen
S900C2 ::S900C2(){ note_ctor("S900C2", this);} // tgen

static void Test_S900C2()
{
  extern Class_Descriptor cd_S900C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(124,179)];
    init_test(&cd_S900C2, buf);
    S900C2 *dp, &lv = *(dp=new (buf) S900C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(984,712), "sizeof(S900C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C2)");
    check_base_class_offset(lv, (S900C5*)(S900C4*)(S900C3*), 0, "S900C2");
    check_base_class_offset(lv, (S900C4*)(S900C3*), 0, "S900C2");
    check_base_class_offset(lv, (S900C3*), 0, "S900C2");
    check_field_offset(lv, s900c2f0, ABISELECT(800,576), "S900C2.s900c2f0");
    test_class_info(&lv, &cd_S900C2);
    dp->~S900C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C2(Test_S900C2, "S900C2", ABISELECT(984,712));

#else // __cplusplus

extern void _ZN6S900C2C1Ev();
extern void _ZN6S900C2D1Ev();
Name_Map name_map_S900C2[] = {
  NSPAIR(_ZN6S900C2C1Ev),
  NSPAIR(_ZN6S900C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S900C5;
extern VTBL_ENTRY _ZTI6S900C5[];
extern  VTBL_ENTRY _ZTV6S900C5[];
extern Class_Descriptor cd_S900C4;
extern VTBL_ENTRY _ZTI6S900C4[];
extern  VTBL_ENTRY _ZTV6S900C4[];
extern Class_Descriptor cd_S900C3;
extern VTBL_ENTRY _ZTI6S900C3[];
extern  VTBL_ENTRY _ZTV6S900C3[];
static Base_Class bases_S900C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S900C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S900C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S900C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S900C2[];
extern void _ZN6S900C2D1Ev();
extern void _ZN6S900C2D0Ev();
extern void _ZN6S900C52v3Ev();
extern void _ZN6S900C52v4Ev();
extern void _ZN6S900C52v5Ev();
extern void _ZN6S900C52v6Ev();
extern void _ZN6S900C52v7Ev();
extern void _ZN6S900C52v8Ev();
extern void _ZN6S900C52v9Ev();
extern void _ZN6S900C43v10Ev();
extern void _ZN6S900C43v11Ev();
extern void _ZN6S900C43v12Ev();
extern void _ZN6S900C33v13Ev();
extern void _ZN6S900C33v14Ev();
extern void _ZN6S900C33v15Ev();
extern void _ZN6S900C23v16Ev();
extern void _ZN6S900C23v17Ev();
static  VTBL_ENTRY vtc_S900C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S900C2[0]),
  (VTBL_ENTRY)&_ZN6S900C2D1Ev,
  (VTBL_ENTRY)&_ZN6S900C2D0Ev,
  (VTBL_ENTRY)&_ZN6S900C52v3Ev,
  (VTBL_ENTRY)&_ZN6S900C52v4Ev,
  (VTBL_ENTRY)&_ZN6S900C52v5Ev,
  (VTBL_ENTRY)&_ZN6S900C52v6Ev,
  (VTBL_ENTRY)&_ZN6S900C52v7Ev,
  (VTBL_ENTRY)&_ZN6S900C52v8Ev,
  (VTBL_ENTRY)&_ZN6S900C52v9Ev,
  (VTBL_ENTRY)&_ZN6S900C43v10Ev,
  (VTBL_ENTRY)&_ZN6S900C43v11Ev,
  (VTBL_ENTRY)&_ZN6S900C43v12Ev,
  (VTBL_ENTRY)&_ZN6S900C33v13Ev,
  (VTBL_ENTRY)&_ZN6S900C33v14Ev,
  (VTBL_ENTRY)&_ZN6S900C33v15Ev,
  (VTBL_ENTRY)&_ZN6S900C23v16Ev,
  (VTBL_ENTRY)&_ZN6S900C23v17Ev,
};
extern VTBL_ENTRY _ZTI6S900C2[];
extern  VTBL_ENTRY _ZTV6S900C2[];
Class_Descriptor cd_S900C2 = {  "S900C2", // class name
  bases_S900C2, 3,
  &(vtc_S900C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(984,712), // object size
  NSPAIRA(_ZTI6S900C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S900C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S900C20  {
  virtual  ~S900C20(); // _ZN7S900C20D1Ev
  virtual void  v18(); // _ZN7S900C203v18Ev
  virtual void  v19(); // _ZN7S900C203v19Ev
  virtual void  v20(); // _ZN7S900C203v20Ev
  virtual void  v21(); // _ZN7S900C203v21Ev
  S900C20(); // tgen
};
//SIG(-1 S900C20) C1{ vd v1 v2 v3 v4}


 S900C20 ::~S900C20(){ note_dtor("S900C20", this);}
void  S900C20 ::v18(){vfunc_called(this, "_ZN7S900C203v18Ev");}
void  S900C20 ::v19(){vfunc_called(this, "_ZN7S900C203v19Ev");}
void  S900C20 ::v20(){vfunc_called(this, "_ZN7S900C203v20Ev");}
void  S900C20 ::v21(){vfunc_called(this, "_ZN7S900C203v21Ev");}
S900C20 ::S900C20(){ note_ctor("S900C20", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S900C20C1Ev();
extern void _ZN7S900C20D1Ev();
Name_Map name_map_S900C20[] = {
  NSPAIR(_ZN7S900C20C1Ev),
  NSPAIR(_ZN7S900C20D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S900C20[];
extern void _ZN7S900C20D1Ev();
extern void _ZN7S900C20D0Ev();
extern void _ZN7S900C203v18Ev();
extern void _ZN7S900C203v19Ev();
extern void _ZN7S900C203v20Ev();
extern void _ZN7S900C203v21Ev();
static  VTBL_ENTRY vtc_S900C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S900C20[0]),
  (VTBL_ENTRY)&_ZN7S900C20D1Ev,
  (VTBL_ENTRY)&_ZN7S900C20D0Ev,
  (VTBL_ENTRY)&_ZN7S900C203v18Ev,
  (VTBL_ENTRY)&_ZN7S900C203v19Ev,
  (VTBL_ENTRY)&_ZN7S900C203v20Ev,
  (VTBL_ENTRY)&_ZN7S900C203v21Ev,
};
extern VTBL_ENTRY _ZTI7S900C20[];
extern  VTBL_ENTRY _ZTV7S900C20[];
Class_Descriptor cd_S900C20 = {  "S900C20", // class name
  0,0,//no base classes
  &(vtc_S900C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S900C20),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S900C20),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  S900C19  : S900C20 {
  ::S19894C34 s900c19f0;
  ::S3223C13_nt s900c19f1;
  ::S3223C4_nt s900c19f2;
  virtual void  v22(); // _ZN7S900C193v22Ev
  virtual void  v23(); // _ZN7S900C193v23Ev
  virtual void  v24(); // _ZN7S900C193v24Ev
  ~S900C19(); // tgen
  S900C19(); // tgen
};
//SIG(-1 S900C19) C1{ BC2{ vd v4 v5 v6 v7} v1 v2 v3 FC3{ m} FC4{ m Fi[3]} FC5{ m Fi[2]}}


void  S900C19 ::v22(){vfunc_called(this, "_ZN7S900C193v22Ev");}
void  S900C19 ::v23(){vfunc_called(this, "_ZN7S900C193v23Ev");}
void  S900C19 ::v24(){vfunc_called(this, "_ZN7S900C193v24Ev");}
S900C19 ::~S900C19(){ note_dtor("S900C19", this);} // tgen
S900C19 ::S900C19(){ note_ctor("S900C19", this);} // tgen

static void Test_S900C19()
{
  extern Class_Descriptor cd_S900C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S900C19, buf);
    S900C19 *dp, &lv = *(dp=new (buf) S900C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S900C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C19)");
    check_base_class_offset(lv, (S900C20*), 0, "S900C19");
    check_field_offset(lv, s900c19f0, ABISELECT(8,4), "S900C19.s900c19f0");
    check_field_offset(lv, s900c19f1, ABISELECT(12,8), "S900C19.s900c19f1");
    check_field_offset(lv, s900c19f2, ABISELECT(24,20), "S900C19.s900c19f2");
    test_class_info(&lv, &cd_S900C19);
    dp->~S900C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C19(Test_S900C19, "S900C19", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S900C19C1Ev();
extern void _ZN7S900C19D1Ev();
Name_Map name_map_S900C19[] = {
  NSPAIR(_ZN7S900C19C1Ev),
  NSPAIR(_ZN7S900C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S900C20;
extern VTBL_ENTRY _ZTI7S900C20[];
extern  VTBL_ENTRY _ZTV7S900C20[];
static Base_Class bases_S900C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S900C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S900C19[];
extern void _ZN7S900C19D1Ev();
extern void _ZN7S900C19D0Ev();
extern void _ZN7S900C203v18Ev();
extern void _ZN7S900C203v19Ev();
extern void _ZN7S900C203v20Ev();
extern void _ZN7S900C203v21Ev();
extern void _ZN7S900C193v22Ev();
extern void _ZN7S900C193v23Ev();
extern void _ZN7S900C193v24Ev();
static  VTBL_ENTRY vtc_S900C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S900C19[0]),
  (VTBL_ENTRY)&_ZN7S900C19D1Ev,
  (VTBL_ENTRY)&_ZN7S900C19D0Ev,
  (VTBL_ENTRY)&_ZN7S900C203v18Ev,
  (VTBL_ENTRY)&_ZN7S900C203v19Ev,
  (VTBL_ENTRY)&_ZN7S900C203v20Ev,
  (VTBL_ENTRY)&_ZN7S900C203v21Ev,
  (VTBL_ENTRY)&_ZN7S900C193v22Ev,
  (VTBL_ENTRY)&_ZN7S900C193v23Ev,
  (VTBL_ENTRY)&_ZN7S900C193v24Ev,
};
extern VTBL_ENTRY _ZTI7S900C19[];
extern  VTBL_ENTRY _ZTV7S900C19[];
Class_Descriptor cd_S900C19 = {  "S900C19", // class name
  bases_S900C19, 1,
  &(vtc_S900C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S900C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S900C19),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  S900C1  : S900C2 , S900C19 {
  virtual void  v1(); // _ZN6S900C12v1Ev
  virtual void  v2(); // _ZN6S900C12v2Ev
  ~S900C1(); // tgen
  S900C1(); // tgen
};
//SIG(1 S900C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v3 v4 v5 v6 v7 v8 v9 FC6{ m Fp[3]} Fi:1} v10 v11 v12 FC7{ m FC8{ Fp Fi[2]}[16] Fi} FC7 FC9{ m Fp} FC9 FC9 FC9 FC9 FC10{ m FC11{ Fc[3] Fi} Fi[2]}} v13 v14 v15 FC12{ FC13{ m Fp Fc[3] Fi} FC13[2] FC14{ m FC13[4] Fi} FC13 FC13} FC15{ m FC16{ BC17{ m Fp Fi[2]}} Fi}} v16 v17 FC18{ BC12 FC13 FC13}} BC19{ BC20{ vd v18 v19 v20 v21} v22 v23 v24 FC21{ m} FC22{ m Fi[3]} FC23{ m Fi[2]}} v1 v2}


void  S900C1 ::v1(){vfunc_called(this, "_ZN6S900C12v1Ev");}
void  S900C1 ::v2(){vfunc_called(this, "_ZN6S900C12v2Ev");}
S900C1 ::~S900C1(){ note_dtor("S900C1", this);} // tgen
S900C1 ::S900C1(){ note_ctor("S900C1", this);} // tgen

static void Test_S900C1()
{
  extern Class_Descriptor cd_S900C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(128,186)];
    init_test(&cd_S900C1, buf);
    S900C1 *dp, &lv = *(dp=new (buf) S900C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1016,740), "sizeof(S900C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S900C1)");
    check_base_class_offset(lv, (S900C5*)(S900C4*)(S900C3*)(S900C2*), 0, "S900C1");
    check_base_class_offset(lv, (S900C4*)(S900C3*)(S900C2*), 0, "S900C1");
    check_base_class_offset(lv, (S900C3*)(S900C2*), 0, "S900C1");
    check_base_class_offset(lv, (S900C2*), 0, "S900C1");
    check_base_class_offset(lv, (S900C20*)(S900C19*), ABISELECT(984,712), "S900C1");
    check_base_class_offset(lv, (S900C19*), ABISELECT(984,712), "S900C1");
    test_class_info(&lv, &cd_S900C1);
    dp->~S900C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS900C1(Test_S900C1, "S900C1", ABISELECT(1016,740));

#else // __cplusplus

extern void _ZN6S900C1C1Ev();
extern void _ZN6S900C1D1Ev();
Name_Map name_map_S900C1[] = {
  NSPAIR(_ZN6S900C1C1Ev),
  NSPAIR(_ZN6S900C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S900C5;
extern VTBL_ENTRY _ZTI6S900C5[];
extern  VTBL_ENTRY _ZTV6S900C5[];
extern Class_Descriptor cd_S900C4;
extern VTBL_ENTRY _ZTI6S900C4[];
extern  VTBL_ENTRY _ZTV6S900C4[];
extern Class_Descriptor cd_S900C3;
extern VTBL_ENTRY _ZTI6S900C3[];
extern  VTBL_ENTRY _ZTV6S900C3[];
extern Class_Descriptor cd_S900C2;
extern VTBL_ENTRY _ZTI6S900C2[];
extern  VTBL_ENTRY _ZTV6S900C2[];
extern Class_Descriptor cd_S900C20;
extern VTBL_ENTRY _ZTI7S900C20[];
extern  VTBL_ENTRY _ZTV7S900C20[];
extern Class_Descriptor cd_S900C19;
extern VTBL_ENTRY _ZTI7S900C19[];
extern  VTBL_ENTRY _ZTV7S900C19[];
static Base_Class bases_S900C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S900C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S900C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S900C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S900C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S900C20,    ABISELECT(984,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S900C19,    ABISELECT(984,712), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S900C1[];
extern void _ZN6S900C1D1Ev();
extern void _ZN6S900C1D0Ev();
extern void _ZN6S900C52v3Ev();
extern void _ZN6S900C52v4Ev();
extern void _ZN6S900C52v5Ev();
extern void _ZN6S900C52v6Ev();
extern void _ZN6S900C52v7Ev();
extern void _ZN6S900C52v8Ev();
extern void _ZN6S900C52v9Ev();
extern void _ZN6S900C43v10Ev();
extern void _ZN6S900C43v11Ev();
extern void _ZN6S900C43v12Ev();
extern void _ZN6S900C33v13Ev();
extern void _ZN6S900C33v14Ev();
extern void _ZN6S900C33v15Ev();
extern void _ZN6S900C23v16Ev();
extern void _ZN6S900C23v17Ev();
extern void _ZN6S900C12v1Ev();
extern void _ZN6S900C12v2Ev();
extern void ABISELECT(_ZThn984_N6S900C1D1Ev,_ZThn712_N6S900C1D1Ev)();
extern void ABISELECT(_ZThn984_N6S900C1D0Ev,_ZThn712_N6S900C1D0Ev)();
extern void _ZN7S900C203v18Ev();
extern void _ZN7S900C203v19Ev();
extern void _ZN7S900C203v20Ev();
extern void _ZN7S900C203v21Ev();
extern void _ZN7S900C193v22Ev();
extern void _ZN7S900C193v23Ev();
extern void _ZN7S900C193v24Ev();
static  VTBL_ENTRY vtc_S900C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S900C1[0]),
  (VTBL_ENTRY)&_ZN6S900C1D1Ev,
  (VTBL_ENTRY)&_ZN6S900C1D0Ev,
  (VTBL_ENTRY)&_ZN6S900C52v3Ev,
  (VTBL_ENTRY)&_ZN6S900C52v4Ev,
  (VTBL_ENTRY)&_ZN6S900C52v5Ev,
  (VTBL_ENTRY)&_ZN6S900C52v6Ev,
  (VTBL_ENTRY)&_ZN6S900C52v7Ev,
  (VTBL_ENTRY)&_ZN6S900C52v8Ev,
  (VTBL_ENTRY)&_ZN6S900C52v9Ev,
  (VTBL_ENTRY)&_ZN6S900C43v10Ev,
  (VTBL_ENTRY)&_ZN6S900C43v11Ev,
  (VTBL_ENTRY)&_ZN6S900C43v12Ev,
  (VTBL_ENTRY)&_ZN6S900C33v13Ev,
  (VTBL_ENTRY)&_ZN6S900C33v14Ev,
  (VTBL_ENTRY)&_ZN6S900C33v15Ev,
  (VTBL_ENTRY)&_ZN6S900C23v16Ev,
  (VTBL_ENTRY)&_ZN6S900C23v17Ev,
  (VTBL_ENTRY)&_ZN6S900C12v1Ev,
  (VTBL_ENTRY)&_ZN6S900C12v2Ev,
  ABISELECT(-984,-712),
  (VTBL_ENTRY)&(_ZTI6S900C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn984_N6S900C1D1Ev,_ZThn712_N6S900C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn984_N6S900C1D0Ev,_ZThn712_N6S900C1D0Ev),
  (VTBL_ENTRY)&_ZN7S900C203v18Ev,
  (VTBL_ENTRY)&_ZN7S900C203v19Ev,
  (VTBL_ENTRY)&_ZN7S900C203v20Ev,
  (VTBL_ENTRY)&_ZN7S900C203v21Ev,
  (VTBL_ENTRY)&_ZN7S900C193v22Ev,
  (VTBL_ENTRY)&_ZN7S900C193v23Ev,
  (VTBL_ENTRY)&_ZN7S900C193v24Ev,
};
extern VTBL_ENTRY _ZTI6S900C1[];
extern  VTBL_ENTRY _ZTV6S900C1[];
Class_Descriptor cd_S900C1 = {  "S900C1", // class name
  bases_S900C1, 6,
  &(vtc_S900C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1016,740), // object size
  NSPAIRA(_ZTI6S900C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV6S900C1),32, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S19582C7C1Ev();
extern void _ZN8S19582C7D1Ev();
Name_Map name_map_S19582C7[] = {
  NSPAIR(_ZN8S19582C7C1Ev),
  NSPAIR(_ZN8S19582C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19582C7[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C7[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
Class_Descriptor cd_S19582C7 = {  "S19582C7", // class name
  0,0,//no base classes
  &(vtc_S19582C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19582C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19582C7),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  S19582C5  : virtual S19894C34 , virtual S19582C7 {
  ::S19582C7 s19582c5f0;
  ~S19582C5(); // tgen
  S19582C5(); // tgen
};
//SIG(-1 S19582C5) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S19582C5()
{
  extern Class_Descriptor cd_S19582C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19582C5, buf);
    S19582C5 *dp, &lv = *(dp=new (buf) S19582C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19582C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19582C5");
    check_base_class_offset(lv, (S19582C7*), 0, "S19582C5");
    check_field_offset(lv, s19582c5f0, ABISELECT(8,4), "S19582C5.s19582c5f0");
    test_class_info(&lv, &cd_S19582C5);
    dp->~S19582C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C5(Test_S19582C5, "S19582C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19582C5C1Ev();
extern void _ZN8S19582C5D1Ev();
Name_Map name_map_S19582C5[] = {
  NSPAIR(_ZN8S19582C5C1Ev),
  NSPAIR(_ZN8S19582C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
static Base_Class bases_S19582C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C7,    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 _ZTI8S19582C5[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19582C5[];
static  VTT_ENTRY vtt_S19582C5[] = {
  {&(_ZTV8S19582C5[5]),  5,6},
  {&(_ZTV8S19582C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
Class_Descriptor cd_S19582C5 = {  "S19582C5", // class name
  bases_S19582C5, 2,
  &(vtc_S19582C5[0]), // expected_vtbl_contents
  &(vtt_S19582C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19582C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19582C5),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19582C5),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  S19582C8  : S19582C7 , S19894C6_nt , virtual S19582C5 {
  virtual void  v2(); // _ZN8S19582C82v2Ev
  ~S19582C8(); // tgen
  S19582C8(); // tgen
};
//SIG(-1 S19582C8) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S19582C8()
{
  extern Class_Descriptor cd_S19582C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19582C8, buf);
    S19582C8 *dp, &lv = *(dp=new (buf) S19582C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19582C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C8)");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*), 0, "S19582C8");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19582C8");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C8");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(16,8), "S19582C8");
    check_base_class_offset(lv, (S19582C5*), ABISELECT(16,8), "S19582C8");
    test_class_info(&lv, &cd_S19582C8);
    dp->~S19582C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C8(Test_S19582C8, "S19582C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19582C8C1Ev();
extern void _ZN8S19582C8D1Ev();
Name_Map name_map_S19582C8[] = {
  NSPAIR(_ZN8S19582C8C1Ev),
  NSPAIR(_ZN8S19582C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
static Base_Class bases_S19582C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19582C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S19582C8[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C8[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19582C8[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C8[] = {
  {&(_ZTV8S19582C8[5]),  5,13},
  {&(_ZTV8S19582C8[12]),  12,13},
  {&(_ZTV8S19582C8[12]),  12,13},
  {&(_tg__ZTV8S19582C5__8S19582C8[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
Class_Descriptor cd_S19582C8 = {  "S19582C8", // class name
  bases_S19582C8, 5,
  &(vtc_S19582C8[0]), // expected_vtbl_contents
  &(vtt_S19582C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19582C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19582C8),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19582C8),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C4  : virtual S19582C5 , virtual S19582C8 {
  ~S19582C4(); // tgen
  S19582C4(); // tgen
};
//SIG(-1 S19582C4) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S19582C4()
{
  extern Class_Descriptor cd_S19582C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19582C4, buf);
    S19582C4 *dp, &lv = *(dp=new (buf) S19582C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19582C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C4)");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C4");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*), 0, "S19582C4");
    check_base_class_offset(lv, (S19582C5*), ABISELECT(8,4), "S19582C4");
    check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(8,4), "S19582C4");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(24,12), "S19582C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(32,16), "S19582C4");
    check_base_class_offset(lv, (S19582C8*), ABISELECT(24,12), "S19582C4");
    test_class_info(&lv, &cd_S19582C4);
    dp->~S19582C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C4(Test_S19582C4, "S19582C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19582C4C1Ev();
extern void _ZN8S19582C4D1Ev();
Name_Map name_map_S19582C4[] = {
  NSPAIR(_ZN8S19582C4C1Ev),
  NSPAIR(_ZN8S19582C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
static Base_Class bases_S19582C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19582C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19582C4[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY vtc_S19582C4[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19582C4[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__8S19582C4[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__8S19582C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C8__8S19582C4[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C4[] = {
  {&(_ZTV8S19582C4[7]),  7,23},
  {&(_ZTV8S19582C4[13]),  13,23},
  {&(_ZTV8S19582C4[7]),  7,23},
  {&(_ZTV8S19582C4[21]),  21,23},
  {&(_tg__ZTV8S19582C5__8S19582C4[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__8S19582C4[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C4[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__8S19582C4[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C8__8S19582C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
Class_Descriptor cd_S19582C4 = {  "S19582C4", // class name
  bases_S19582C4, 6,
  &(vtc_S19582C4[0]), // expected_vtbl_contents
  &(vtt_S19582C4[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19582C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19582C4),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19582C4),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C11  : virtual S19894C34 , virtual S19894C6_nt {
  ~S19582C11(); // tgen
  S19582C11(); // tgen
};
//SIG(-1 S19582C11) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S19582C11()
{
  extern Class_Descriptor cd_S19582C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19582C11, buf);
    S19582C11 *dp, &lv = *(dp=new (buf) S19582C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19582C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C11)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19582C11");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19582C11");
    test_class_info(&lv, &cd_S19582C11);
    dp->~S19582C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C11(Test_S19582C11, "S19582C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19582C11C1Ev();
extern void _ZN9S19582C11D1Ev();
Name_Map name_map_S19582C11[] = {
  NSPAIR(_ZN9S19582C11C1Ev),
  NSPAIR(_ZN9S19582C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19582C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19582C11[];
static  VTBL_ENTRY vtc_S19582C11[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern VTBL_ENTRY _ZTV9S19582C11[];
static  VTT_ENTRY vtt_S19582C11[] = {
  {&(_ZTV9S19582C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
Class_Descriptor cd_S19582C11 = {  "S19582C11", // class name
  bases_S19582C11, 2,
  &(vtc_S19582C11[0]), // expected_vtbl_contents
  &(vtt_S19582C11[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19582C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19582C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C11),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  S19582C3  : virtual S19582C4 , S19582C5 , S19894C34 , S19894C17_nt , S19582C11 {
  virtual  ~S19582C3(); // _ZN8S19582C3D2Ev
  S19582C3(); // tgen
};
//SIG(-1 S19582C3) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S19582C3()
{
  extern Class_Descriptor cd_S19582C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19582C3, buf);
    S19582C3 *dp, &lv = *(dp=new (buf) S19582C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19582C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C3)");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), ABISELECT(48,24), "S19582C3");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), ABISELECT(48,24), "S19582C3");
    check_base_class_offset(lv, (S19894C34*)(S19582C11*), ABISELECT(48,24), "S19582C3");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(24,12), "S19582C3");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(24,12), "S19582C3");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*), ABISELECT(32,16), "S19582C3");
    check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(32,16), "S19582C3");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(48,24), "S19582C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(56,28), "S19582C3");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*), ABISELECT(48,24), "S19582C3");
    check_base_class_offset(lv, (S19582C4*), ABISELECT(24,12), "S19582C3");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*), 0, "S19582C3");
    /*is_ambiguous_... S19582C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19582C3");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19582C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C11*), ABISELECT(64,32), "S19582C3");
    check_base_class_offset(lv, (S19582C11*), ABISELECT(16,8), "S19582C3");
    test_class_info(&lv, &cd_S19582C3);
    dp->~S19582C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C3(Test_S19582C3, "S19582C3", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S19582C3C1Ev();
extern void _ZN8S19582C3D2Ev();
Name_Map name_map_S19582C3[] = {
  NSPAIR(_ZN8S19582C3C1Ev),
  NSPAIR(_ZN8S19582C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C11;
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
static Base_Class bases_S19582C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19582C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19582C4,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19582C11,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI8S19582C3[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C3D1Ev();
extern void _ZN8S19582C3D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY vtc_S19582C3[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19582C3D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19582C3[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__8S19582C3[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__A__8S19582C3[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C11__8S19582C3[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__8S19582C3[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4__8S19582C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4__8S19582C3[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__8S19582C3[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C3[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__8S19582C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C8__8S19582C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C3[] = {
  {&(_ZTV8S19582C3[9]),  9,39},
  {&(_tg__ZTV8S19582C5__A__8S19582C3[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__A__8S19582C3[3]),  3,4},
  {&(_tg__ZTV9S19582C11__8S19582C3[4]),  4,4},
  {&(_ZTV8S19582C3[23]),  23,39},
  {&(_ZTV8S19582C3[29]),  29,39},
  {&(_ZTV8S19582C3[23]),  23,39},
  {&(_ZTV8S19582C3[37]),  37,39},
  {&(_ZTV8S19582C3[16]),  16,39},
  {&(_tg__ZTV8S19582C4__8S19582C3[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C4__8S19582C3[5]),  5,6},
  {&(_tg__ZTV8S19582C4__8S19582C3[7]),  7,8},
  {&(_tg__ZTV8S19582C8__8S19582C4__8S19582C3[7]),  7,9},
  {&(_tg__ZTV8S19582C5__8S19582C3[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__8S19582C3[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C3[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__8S19582C3[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C8__8S19582C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19582C3[];
extern  VTBL_ENTRY _ZTV8S19582C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C3[];
Class_Descriptor cd_S19582C3 = {  "S19582C3", // class name
  bases_S19582C3, 12,
  &(vtc_S19582C3[0]), // expected_vtbl_contents
  &(vtt_S19582C3[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S19582C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19582C3),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19582C3),18, //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  S19582C2  : S19582C3 , virtual S21216C26_nt {
  virtual  ~S19582C2(); // _ZN8S19582C2D2Ev
  S19582C2(); // tgen
};
//SIG(-1 S19582C2) C1{ BC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC6 BC8{ m Fp} VBC4 v2}} BC4 BC5 BC9{ m} BC10{ VBC5 VBC8} vd} VBC11{ vd m} vd}


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

static void Test_S19582C2()
{
  extern Class_Descriptor cd_S19582C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19582C2, buf);
    S19582C2 *dp, &lv = *(dp=new (buf) S19582C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19582C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C2)");
    /*is_ambiguous_... S19582C2::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), ABISELECT(48,24), "S19582C2");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C3*), ABISELECT(48,24), "S19582C2");
    check_base_class_offset(lv, (S19894C34*)(S19582C11*)(S19582C3*), ABISELECT(48,24), "S19582C2");
    /*is_ambiguous_... S19582C2::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(24,12), "S19582C2");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C3*), ABISELECT(24,12), "S19582C2");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*), ABISELECT(32,16), "S19582C2");
    check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(32,16), "S19582C2");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(48,24), "S19582C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(56,28), "S19582C2");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*), ABISELECT(48,24), "S19582C2");
    check_base_class_offset(lv, (S19582C4*)(S19582C3*), ABISELECT(24,12), "S19582C2");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C3*), 0, "S19582C2");
    /*is_ambiguous_... S19582C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C3*), 0, "S19582C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C3*), 0, "S19582C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C11*)(S19582C3*), ABISELECT(64,32), "S19582C2");
    check_base_class_offset(lv, (S19582C11*)(S19582C3*), ABISELECT(16,8), "S19582C2");
    check_base_class_offset(lv, (S19582C3*), 0, "S19582C2");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(72,36), "S19582C2");
    test_class_info(&lv, &cd_S19582C2);
    dp->~S19582C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C2(Test_S19582C2, "S19582C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19582C2C1Ev();
extern void _ZN8S19582C2D2Ev();
Name_Map name_map_S19582C2[] = {
  NSPAIR(_ZN8S19582C2C1Ev),
  NSPAIR(_ZN8S19582C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C11;
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
extern Class_Descriptor cd_S19582C3;
extern VTBL_ENTRY _ZTI8S19582C3[];
extern  VTBL_ENTRY _ZTV8S19582C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19582C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19582C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(48,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19582C4,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19582C5,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19582C11,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(72,36), //bcp->offset
    40, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19582C2[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C2D1Ev();
extern void _ZN8S19582C2D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19582C2D1Ev,_ZTv0_n12_N8S19582C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S19582C2D1Ev,_ZThn36_N8S19582C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19582C2D0Ev,_ZTv0_n12_N8S19582C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S19582C2D0Ev,_ZThn36_N8S19582C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19582C2[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19582C2D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19582C2D1Ev,_ZTv0_n12_N8S19582C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19582C2D0Ev,_ZTv0_n12_N8S19582C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19582C2[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C3D1Ev();
extern void _ZN8S19582C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C3__8S19582C2[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19582C3D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C58S19582C3__A1__8S19582C2[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C58S19582C3__A1__8S19582C2[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C118S19582C3__8S19582C2[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__8S19582C3__8S19582C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C3__8S19582C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C3__8S19582C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C11__8S19582C3__8S19582C2[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__8S19582C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4__8S19582C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4__8S19582C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__8S19582C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C2[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__8S19582C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C8__8S19582C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C2[] = {
  {&(_ZTV8S19582C2[10]),  10,45},
  {&(_tg__ZTV8S19582C3__8S19582C2[9]),  9,12},
  {&(_tg__ZTV8S19582C58S19582C3__A1__8S19582C2[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C58S19582C3__A1__8S19582C2[3]),  3,4},
  {&(_tg__ZTV9S19582C118S19582C3__8S19582C2[4]),  4,4},
  {&(_tg__ZTV8S19582C4__8S19582C3__8S19582C2[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C3__8S19582C2[5]),  5,6},
  {&(_tg__ZTV8S19582C4__8S19582C3__8S19582C2[7]),  7,8},
  {&(_tg__ZTV8S19582C8__8S19582C3__8S19582C2[7]),  7,9},
  {&(_tg__ZTV9S19582C11__8S19582C3__8S19582C2[4]),  4,4},
  {&(_ZTV8S19582C2[24]),  24,45},
  {&(_ZTV8S19582C2[30]),  30,45},
  {&(_ZTV8S19582C2[24]),  24,45},
  {&(_ZTV8S19582C2[38]),  38,45},
  {&(_ZTV8S19582C2[17]),  17,45},
  {&(_ZTV8S19582C2[43]),  43,45},
  {&(_tg__ZTV8S19582C4__8S19582C2[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C4__8S19582C2[5]),  5,6},
  {&(_tg__ZTV8S19582C4__8S19582C2[7]),  7,8},
  {&(_tg__ZTV8S19582C8__8S19582C4__8S19582C2[7]),  7,9},
  {&(_tg__ZTV8S19582C5__8S19582C2[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__8S19582C2[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C2[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__8S19582C2[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C8__8S19582C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19582C2[];
extern  VTBL_ENTRY _ZTV8S19582C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C2[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19582C2D0Ev,_ZTv0_n12_N8S19582C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19582C2D0Ev,_ZThn36_N8S19582C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19582C2D1Ev,_ZTv0_n12_N8S19582C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19582C2D1Ev,_ZThn36_N8S19582C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C2 = {  "S19582C2", // class name
  bases_S19582C2, 14,
  &(vtc_S19582C2[0]), // expected_vtbl_contents
  &(vtt_S19582C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19582C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19582C2),45, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19582C2),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C14  : S19582C5 , S19894C34 , S19582C7 {
  virtual  ~S19582C14(); // _ZN9S19582C14D2Ev
  S19582C14(); // tgen
};
//SIG(-1 S19582C14) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S19582C14()
{
  extern Class_Descriptor cd_S19582C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19582C14, buf);
    S19582C14 *dp, &lv = *(dp=new (buf) S19582C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19582C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C14)");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*), ABISELECT(24,12), "S19582C14");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*), 0, "S19582C14");
    check_base_class_offset(lv, (S19582C5*), 0, "S19582C14");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19582C14");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*), ABISELECT(16,8), "S19582C14");
    test_class_info(&lv, &cd_S19582C14);
    dp->~S19582C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C14(Test_S19582C14, "S19582C14", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19582C14C1Ev();
extern void _ZN9S19582C14D2Ev();
Name_Map name_map_S19582C14[] = {
  NSPAIR(_ZN9S19582C14C1Ev),
  NSPAIR(_ZN9S19582C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
static Base_Class bases_S19582C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19582C7,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C14[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C14[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C14[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C14[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C14[] = {
  {&(_ZTV9S19582C14[5]),  5,11},
  {&(_tg__ZTV8S19582C5__9S19582C14[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C14[5]),  5,6},
  {&(_ZTV9S19582C14[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
Class_Descriptor cd_S19582C14 = {  "S19582C14", // class name
  bases_S19582C14, 5,
  &(vtc_S19582C14[0]), // expected_vtbl_contents
  &(vtt_S19582C14[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19582C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19582C14),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C14),4, //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  S19582C13  : S19582C14 {
  virtual  ~S19582C13(); // _ZN9S19582C13D2Ev
  S19582C13(); // tgen
};
//SIG(-1 S19582C13) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} vd}


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

static void Test_S19582C13()
{
  extern Class_Descriptor cd_S19582C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19582C13, buf);
    S19582C13 *dp, &lv = *(dp=new (buf) S19582C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19582C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C13)");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), ABISELECT(24,12), "S19582C13");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), 0, "S19582C13");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*), 0, "S19582C13");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), 0, "S19582C13");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(16,8), "S19582C13");
    check_base_class_offset(lv, (S19582C14*), 0, "S19582C13");
    test_class_info(&lv, &cd_S19582C13);
    dp->~S19582C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C13(Test_S19582C13, "S19582C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19582C13C1Ev();
extern void _ZN9S19582C13D2Ev();
Name_Map name_map_S19582C13[] = {
  NSPAIR(_ZN9S19582C13C1Ev),
  NSPAIR(_ZN9S19582C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
static Base_Class bases_S19582C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19582C7,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C13[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C13D1Ev();
extern void _ZN9S19582C13D0Ev();
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C13[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C13[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C13D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C13[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C13[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C13[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__9S19582C13[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C13[] = {
  {&(_ZTV9S19582C13[5]),  5,11},
  {&(_tg__ZTV9S19582C14__9S19582C13[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__9S19582C13[5]),  5,6},
  {&(_tg__ZTV8S19582C59S19582C14__9S19582C13[5]),  5,6},
  {&(_tg__ZTV9S19582C14__9S19582C13[5]),  5,8},
  {&(_ZTV9S19582C13[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19582C13[];
extern  VTBL_ENTRY _ZTV9S19582C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C13[];
Class_Descriptor cd_S19582C13 = {  "S19582C13", // class name
  bases_S19582C13, 6,
  &(vtc_S19582C13[0]), // expected_vtbl_contents
  &(vtt_S19582C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19582C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19582C13),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C13),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  S19582C17_nt  : S3223C8_nt {
};
//SIG(-1 S19582C17_nt) C1{ BC2{ m Fi}}



//skip512 S19582C17_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19582C16  : virtual S19894C17_nt , virtual S19582C17_nt {
  ~S19582C16(); // tgen
  S19582C16(); // tgen
};
//SIG(-1 S19582C16) C1{ VBC2{ m} VBC3{ BC4{ m Fi}}}


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

static void Test_S19582C16()
{
  extern Class_Descriptor cd_S19582C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19582C16, buf);
    S19582C16 *dp, &lv = *(dp=new (buf) S19582C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19582C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C16)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19582C16");
    check_base_class_offset(lv, (S3223C8_nt*)(S19582C17_nt*), ABISELECT(8,4), "S19582C16");
    check_base_class_offset(lv, (S19582C17_nt*), ABISELECT(8,4), "S19582C16");
    test_class_info(&lv, &cd_S19582C16);
    dp->~S19582C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C16(Test_S19582C16, "S19582C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19582C16C1Ev();
extern void _ZN9S19582C16D1Ev();
Name_Map name_map_S19582C16[] = {
  NSPAIR(_ZN9S19582C16C1Ev),
  NSPAIR(_ZN9S19582C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19582C17_nt;
extern VTBL_ENTRY _ZTI12S19582C17_nt[];
static Base_Class bases_S19582C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3223C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19582C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19582C16[];
static  VTBL_ENTRY vtc_S19582C16[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C16[0]),
};
extern VTBL_ENTRY _ZTV9S19582C16[];
static  VTT_ENTRY vtt_S19582C16[] = {
  {&(_ZTV9S19582C16[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19582C16[];
extern  VTBL_ENTRY _ZTV9S19582C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C16[];
Class_Descriptor cd_S19582C16 = {  "S19582C16", // class name
  bases_S19582C16, 3,
  &(vtc_S19582C16[0]), // expected_vtbl_contents
  &(vtt_S19582C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19582C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19582C16),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C16),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  S19582C20  : S19894C6_nt , S19582C7 , virtual S19582C8 , S19582C5 , S19582C14 {
  virtual  ~S19582C20(); // _ZN9S19582C20D2Ev
  S19582C20(); // tgen
};
//SIG(-1 S19582C20) C1{ BC2{ m Fp} BC3{ v1} VBC4{ BC3 BC2 VBC5{ VBC6{ m} VBC3 FC3} v2} BC5 BC7{ BC5 BC6 BC3 vd} vd}


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

static void Test_S19582C20()
{
  extern Class_Descriptor cd_S19582C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S19582C20, buf);
    S19582C20 *dp, &lv = *(dp=new (buf) S19582C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S19582C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C20)");
    /*is_ambiguous_... S19582C20::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19582C20");
    /*is_ambiguous_... S19582C20::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*), 0, "S19582C20");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(56,28), "S19582C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(64,32), "S19582C20");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C20");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C20");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), 0, "S19582C20");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(72,36), "S19582C20");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(72,36), "S19582C20");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), ABISELECT(72,36), "S19582C20");
    check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(72,36), "S19582C20");
    check_base_class_offset(lv, (S19582C8*), ABISELECT(56,28), "S19582C20");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*), ABISELECT(16,8), "S19582C20");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*), ABISELECT(32,16), "S19582C20");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), ABISELECT(32,16), "S19582C20");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(48,24), "S19582C20");
    check_base_class_offset(lv, (S19582C14*), ABISELECT(32,16), "S19582C20");
    test_class_info(&lv, &cd_S19582C20);
    dp->~S19582C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C20(Test_S19582C20, "S19582C20", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN9S19582C20C1Ev();
extern void _ZN9S19582C20D2Ev();
Name_Map name_map_S19582C20[] = {
  NSPAIR(_ZN9S19582C20C1Ev),
  NSPAIR(_ZN9S19582C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
static Base_Class bases_S19582C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19582C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19582C7,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(72,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19582C8,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19582C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(48,24), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI9S19582C20[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C20D1Ev();
extern void _ZN9S19582C20D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C20[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D0Ev,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C20[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C20[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__A__9S19582C20[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C20[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__A2__9S19582C20[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C14__A2__9S19582C20[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C14__9S19582C20[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C20[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__9S19582C20[] = {
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C20[] = {
  0,
  ABISELECT(-72,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C20[] = {
  {&(_ZTV9S19582C20[6]),  6,41},
  {&(_tg__ZTV8S19582C5__A__9S19582C20[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__A__9S19582C20[3]),  3,4},
  {&(_tg__ZTV9S19582C14__9S19582C20[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__A2__9S19582C20[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C14__A2__9S19582C20[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C14__9S19582C20[3]),  3,4},
  {&(_ZTV9S19582C20[33]),  33,41},
  {&(_ZTV9S19582C20[40]),  40,41},
  {&(_ZTV9S19582C20[40]),  40,41},
  {&(_ZTV9S19582C20[14]),  14,41},
  {&(_ZTV9S19582C20[20]),  20,41},
  {&(_tg__ZTV8S19582C8__9S19582C20[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__9S19582C20[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C8__9S19582C20[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C20[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C20[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S19582C20[];
extern  VTBL_ENTRY _ZTV9S19582C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C20[];
Class_Descriptor cd_S19582C20 = {  "S19582C20", // class name
  bases_S19582C20, 13,
  &(vtc_S19582C20[0]), // expected_vtbl_contents
  &(vtt_S19582C20[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI9S19582C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19582C20),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C20),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  S19582C21  : S19582C14 {
  ~S19582C21(); // tgen
  S19582C21(); // tgen
};
//SIG(-1 S19582C21) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S19582C21()
{
  extern Class_Descriptor cd_S19582C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19582C21, buf);
    S19582C21 *dp, &lv = *(dp=new (buf) S19582C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19582C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C21)");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), ABISELECT(24,12), "S19582C21");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), 0, "S19582C21");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*), 0, "S19582C21");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), 0, "S19582C21");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(16,8), "S19582C21");
    check_base_class_offset(lv, (S19582C14*), 0, "S19582C21");
    test_class_info(&lv, &cd_S19582C21);
    dp->~S19582C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C21(Test_S19582C21, "S19582C21", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19582C21C1Ev();
extern void _ZN9S19582C21D1Ev();
Name_Map name_map_S19582C21[] = {
  NSPAIR(_ZN9S19582C21C1Ev),
  NSPAIR(_ZN9S19582C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
static Base_Class bases_S19582C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19582C7,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C21[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C21D1Ev();
extern void _ZN9S19582C21D0Ev();
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C21[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C21[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C21[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__9S19582C21[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C21[] = {
  {&(_ZTV9S19582C21[5]),  5,11},
  {&(_tg__ZTV9S19582C14__9S19582C21[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__9S19582C21[5]),  5,6},
  {&(_tg__ZTV8S19582C59S19582C14__9S19582C21[5]),  5,6},
  {&(_tg__ZTV9S19582C14__9S19582C21[5]),  5,8},
  {&(_ZTV9S19582C21[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19582C21[];
extern  VTBL_ENTRY _ZTV9S19582C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C21[];
Class_Descriptor cd_S19582C21 = {  "S19582C21", // class name
  bases_S19582C21, 6,
  &(vtc_S19582C21[0]), // expected_vtbl_contents
  &(vtt_S19582C21[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19582C21),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19582C21),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C21),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  S19582C19  : S19582C8 , virtual S19582C20 , virtual S19582C21 , virtual S19582C4 , S19894C17_nt {
  virtual  ~S19582C19(); // _ZN9S19582C19D2Ev
  S19582C19(); // tgen
};
//SIG(-1 S19582C19) C1{ BC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2} VBC7{ BC4 BC3 VBC2 BC5 BC8{ BC5 BC6 BC3 vd} vd} VBC9{ BC8} VBC10{ VBC5 VBC2} BC11{ m} vd}


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

static void Test_S19582C19()
{
  extern Class_Descriptor cd_S19582C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S19582C19, buf);
    S19582C19 *dp, &lv = *(dp=new (buf) S19582C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S19582C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C19)");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), 0, "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(8,4), "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C19");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C20*), 0, "S19582C19");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C20*), 0, "S19582C19");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C21*), 0, "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(16,8), "S19582C19");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C20*), ABISELECT(16,8), "S19582C19");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C20*), ABISELECT(16,8), "S19582C19");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(16,8), "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(16,8), "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(16,8), "S19582C19");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*), ABISELECT(16,8), "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C8*), 0, "S19582C19");
    /*is_ambiguous_... S19582C20::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C20*), ABISELECT(40,20), "S19582C19");
    /*is_ambiguous_... S19582C20::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C20*), ABISELECT(32,16), "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(88,44), "S19582C19");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(96,48), "S19582C19");
    check_base_class_offset(lv, (S19582C8*)(S19582C20*), ABISELECT(88,44), "S19582C19");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*), ABISELECT(88,44), "S19582C19");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C20*), ABISELECT(48,24), "S19582C19");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C20*), ABISELECT(64,32), "S19582C19");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C20*), ABISELECT(64,32), "S19582C19");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C20*), ABISELECT(80,40), "S19582C19");
    check_base_class_offset(lv, (S19582C14*)(S19582C20*), ABISELECT(64,32), "S19582C19");
    check_base_class_offset(lv, (S19582C20*), ABISELECT(32,16), "S19582C19");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(104,52), "S19582C19");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C21*), ABISELECT(104,52), "S19582C19");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C21*), ABISELECT(120,60), "S19582C19");
    check_base_class_offset(lv, (S19582C14*)(S19582C21*), ABISELECT(104,52), "S19582C19");
    check_base_class_offset(lv, (S19582C21*), ABISELECT(104,52), "S19582C19");
    check_base_class_offset(lv, (S19582C4*), ABISELECT(128,64), "S19582C19");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19582C19");
    test_class_info(&lv, &cd_S19582C19);
    dp->~S19582C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C19(Test_S19582C19, "S19582C19", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN9S19582C19C1Ev();
extern void _ZN9S19582C19D2Ev();
Name_Map name_map_S19582C19[] = {
  NSPAIR(_ZN9S19582C19C1Ev),
  NSPAIR(_ZN9S19582C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C20;
extern VTBL_ENTRY _ZTI9S19582C20[];
extern  VTBL_ENTRY _ZTV9S19582C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C20[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C21;
extern VTBL_ENTRY _ZTI9S19582C21[];
extern  VTBL_ENTRY _ZTV9S19582C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C21[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S19582C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19582C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19582C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19582C7,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(88,44), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19582C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(80,40), //bcp->offset
    44, //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
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(64,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19582C20,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C5,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(120,60), //bcp->offset
    65, //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
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19582C21,    ABISELECT(104,52), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C4,    ABISELECT(128,64), //bcp->offset
    68, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C19[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN9S19582C19D1Ev();
extern void _ZN9S19582C19D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C19D1Ev,_ZThn16_N9S19582C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S19582C19D0Ev,_ZThn16_N9S19582C19D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19582C19D1Ev,_ZTvn16_n32_N9S19582C19D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19582C19D0Ev,_ZTvn16_n32_N9S19582C19D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev)();
extern void ABISELECT(_ZThn104_N9S19582C19D1Ev,_ZThn52_N9S19582C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev)();
extern void ABISELECT(_ZThn104_N9S19582C19D0Ev,_ZThn52_N9S19582C19D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C19[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  (VTBL_ENTRY)&_ZN9S19582C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C19D0Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C19D1Ev,_ZTvn16_n32_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C19D0Ev,_ZTvn16_n32_N9S19582C19D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C19[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__A__9S19582C19[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__A__9S19582C19[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C19[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C20D1Ev();
extern void _ZN9S19582C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C20__9S19582C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C20__A1__9S19582C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C20__A1__9S19582C19[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C20__9S19582C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C20__A2__9S19582C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C20__A2__9S19582C19[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C20__9S19582C19[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C20__9S19582C19[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C20__9S19582C19[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C20__9S19582C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C20__9S19582C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__A1__9S19582C19[] = {
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__A1__9S19582C19[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C21D1Ev();
extern void _ZN9S19582C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C19[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C21__A1__9S19582C19[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C21__A3__9S19582C19[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A3__9S19582C19[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C21__A1__9S19582C19[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C21__9S19582C19[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__9S19582C19[] = {
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4__9S19582C19[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4__9S19582C19[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
static  VTT_ENTRY vtt_S19582C19[] = {
  {&(_ZTV9S19582C19[9]),  9,76},
  {&(_tg__ZTV8S19582C8__A__9S19582C19[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__A__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C8__A__9S19582C19[5]),  5,6},
  {&(_ZTV9S19582C19[18]),  18,76},
  {&(_ZTV9S19582C19[18]),  18,76},
  {&(_ZTV9S19582C19[27]),  27,76},
  {&(_ZTV9S19582C19[54]),  54,76},
  {&(_ZTV9S19582C19[35]),  35,76},
  {&(_ZTV9S19582C19[41]),  41,76},
  {&(_ZTV9S19582C19[46]),  46,76},
  {&(_ZTV9S19582C19[62]),  62,76},
  {&(_ZTV9S19582C19[67]),  67,76},
  {&(_ZTV9S19582C19[75]),  75,76},
  {&(_tg__ZTV8S19582C5__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C19[5]),  5,6},
  {&(_tg__ZTV9S19582C20__9S19582C19[6]),  6,9},
  {&(_tg__ZTV8S19582C59S19582C20__A1__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C20__A1__9S19582C19[3]),  3,4},
  {&(_tg__ZTV9S19582C149S19582C20__9S19582C19[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C20__A2__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C20__A2__9S19582C19[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C20__9S19582C19[3]),  3,4},
  {&(_tg__ZTV8S19582C8__9S19582C20__9S19582C19[7]),  7,9},
  {&(_tg__ZTV8S19582C5__9S19582C20__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C20__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C5__A__9S19582C20__9S19582C19[5]),  5,6},
  {&(_tg__ZTV9S19582C14__9S19582C20__9S19582C19[5]),  5,8},
  {&(_tg__ZTV8S19582C8__A1__9S19582C19[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__A1__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C8__A1__9S19582C19[5]),  5,6},
  {&(_tg__ZTV9S19582C21__9S19582C19[5]),  5,8},
  {&(_tg__ZTV9S19582C149S19582C21__A1__9S19582C19[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C21__A3__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A3__9S19582C19[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C21__A1__9S19582C19[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C21__9S19582C19[3]),  3,4},
  {&(_tg__ZTV8S19582C4__9S19582C19[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C4__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C4__9S19582C19[5]),  5,6},
  {&(_tg__ZTV8S19582C8__8S19582C4__9S19582C19[7]),  7,9},
};
extern VTBL_ENTRY _ZTI9S19582C19[];
extern  VTBL_ENTRY _ZTV9S19582C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C19[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19582C19D0Ev,_ZThn52_N9S19582C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19582C19D1Ev,_ZThn52_N9S19582C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19582C19D0Ev,_ZThn16_N9S19582C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19582C19D1Ev,_ZThn16_N9S19582C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C19 = {  "S19582C19", // class name
  bases_S19582C19, 24,
  &(vtc_S19582C19[0]), // expected_vtbl_contents
  &(vtt_S19582C19[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI9S19582C19),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19582C19),76, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C19),41, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C23  : S19894C6_nt , S19894C17_nt , virtual S19582C5 , virtual S19582C21 {
  ~S19582C23(); // tgen
  S19582C23(); // tgen
};
//SIG(-1 S19582C23) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S19582C23()
{
  extern Class_Descriptor cd_S19582C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19582C23, buf);
    S19582C23 *dp, &lv = *(dp=new (buf) S19582C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19582C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C23)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19582C23");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19582C23");
    /*is_ambiguous_... S19582C23::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C23");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C21*), 0, "S19582C23");
    /*is_ambiguous_... S19582C23::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), 0, "S19582C23");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C21*), 0, "S19582C23");
    /*is_ambiguous_... S19582C23::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*), ABISELECT(16,8), "S19582C23");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(32,16), "S19582C23");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C21*), ABISELECT(32,16), "S19582C23");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C21*), ABISELECT(48,24), "S19582C23");
    check_base_class_offset(lv, (S19582C14*)(S19582C21*), ABISELECT(32,16), "S19582C23");
    check_base_class_offset(lv, (S19582C21*), ABISELECT(32,16), "S19582C23");
    test_class_info(&lv, &cd_S19582C23);
    dp->~S19582C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C23(Test_S19582C23, "S19582C23", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19582C23C1Ev();
extern void _ZN9S19582C23D1Ev();
Name_Map name_map_S19582C23[] = {
  NSPAIR(_ZN9S19582C23C1Ev),
  NSPAIR(_ZN9S19582C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C21;
extern VTBL_ENTRY _ZTI9S19582C21[];
extern  VTBL_ENTRY _ZTV9S19582C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C21[];
static Base_Class bases_S19582C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19582C7,    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
    4, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S19582C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19582C21,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C23[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C23D1Ev();
extern void _ZN9S19582C23D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C23D1Ev,_ZThn16_N9S19582C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S19582C23D0Ev,_ZThn16_N9S19582C23D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C23[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C23[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__9S19582C23[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C21D1Ev();
extern void _ZN9S19582C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C21__9S19582C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C21__A1__9S19582C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A1__9S19582C23[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C21__9S19582C23[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C21__9S19582C23[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C23[] = {
  {&(_ZTV9S19582C23[7]),  7,28},
  {&(_ZTV9S19582C23[15]),  15,28},
  {&(_ZTV9S19582C23[7]),  7,28},
  {&(_ZTV9S19582C23[22]),  22,28},
  {&(_ZTV9S19582C23[27]),  27,28},
  {&(_tg__ZTV8S19582C5__9S19582C23[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__9S19582C23[3]),  3,4},
  {&(_tg__ZTV9S19582C21__9S19582C23[5]),  5,8},
  {&(_tg__ZTV9S19582C149S19582C21__9S19582C23[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C21__A1__9S19582C23[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A1__9S19582C23[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C21__9S19582C23[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C21__9S19582C23[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19582C23[];
extern  VTBL_ENTRY _ZTV9S19582C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C23[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19582C23D0Ev,_ZThn16_N9S19582C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19582C23D1Ev,_ZThn16_N9S19582C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C23 = {  "S19582C23", // class name
  bases_S19582C23, 10,
  &(vtc_S19582C23[0]), // expected_vtbl_contents
  &(vtt_S19582C23[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19582C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19582C23),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C23),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C25  : virtual S19582C14 , virtual S19894C6_nt {
  void *s19582c25f0[9];
  ~S19582C25(); // tgen
  S19582C25(); // tgen
};
//SIG(-1 S19582C25) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S19582C25()
{
  extern Class_Descriptor cd_S19582C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19582C25, buf);
    S19582C25 *dp, &lv = *(dp=new (buf) S19582C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19582C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C25)");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), 0, "S19582C25");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), 0, "S19582C25");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*), ABISELECT(80,40), "S19582C25");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), ABISELECT(80,40), "S19582C25");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(96,48), "S19582C25");
    check_base_class_offset(lv, (S19582C14*), ABISELECT(80,40), "S19582C25");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S19582C25");
    check_field_offset(lv, s19582c25f0, ABISELECT(8,4), "S19582C25.s19582c25f0");
    test_class_info(&lv, &cd_S19582C25);
    dp->~S19582C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C25(Test_S19582C25, "S19582C25", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN9S19582C25C1Ev();
extern void _ZN9S19582C25D1Ev();
Name_Map name_map_S19582C25[] = {
  NSPAIR(_ZN9S19582C25C1Ev),
  NSPAIR(_ZN9S19582C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19582C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19582C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C25[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C25D1Ev();
extern void _ZN9S19582C25D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C25[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C25[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C25[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__9S19582C25[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C14__9S19582C25[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C14__9S19582C25[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C25[] = {
  {&(_ZTV9S19582C25[7]),  7,22},
  {&(_ZTV9S19582C25[16]),  16,22},
  {&(_ZTV9S19582C25[7]),  7,22},
  {&(_ZTV9S19582C25[21]),  21,22},
  {&(_tg__ZTV9S19582C14__9S19582C25[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__9S19582C25[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C14__9S19582C25[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C14__9S19582C25[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19582C25[];
extern  VTBL_ENTRY _ZTV9S19582C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C25[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C25 = {  "S19582C25", // class name
  bases_S19582C25, 7,
  &(vtc_S19582C25[0]), // expected_vtbl_contents
  &(vtt_S19582C25[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI9S19582C25),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19582C25),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C25),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C24  : virtual S19582C25 , S19894C34 , S19582C4 {
  void *s19582c24f0;
  virtual  ~S19582C24(); // _ZN9S19582C24D2Ev
  S19582C24(); // tgen
};
//SIG(-1 S19582C24) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S19582C24()
{
  extern Class_Descriptor cd_S19582C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S19582C24, buf);
    S19582C24 *dp, &lv = *(dp=new (buf) S19582C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19582C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C24)");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), ABISELECT(120,60), "S19582C24");
    /*is_ambiguous_... S19582C24::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), ABISELECT(120,60), "S19582C24");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), ABISELECT(16,8), "S19582C24");
    /*is_ambiguous_... S19582C24::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(16,8), "S19582C24");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*), ABISELECT(96,48), "S19582C24");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), ABISELECT(96,48), "S19582C24");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(112,56), "S19582C24");
    check_base_class_offset(lv, (S19582C14*)(S19582C25*), ABISELECT(96,48), "S19582C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C25*), ABISELECT(120,60), "S19582C24");
    check_base_class_offset(lv, (S19582C25*), ABISELECT(16,8), "S19582C24");
    /*is_ambiguous_... S19582C24::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19582C24");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*), ABISELECT(128,64), "S19582C24");
    check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(128,64), "S19582C24");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(144,72), "S19582C24");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(152,76), "S19582C24");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*), ABISELECT(144,72), "S19582C24");
    check_base_class_offset(lv, (S19582C4*), 0, "S19582C24");
    check_field_offset(lv, s19582c24f0, ABISELECT(8,4), "S19582C24.s19582c24f0");
    test_class_info(&lv, &cd_S19582C24);
    dp->~S19582C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C24(Test_S19582C24, "S19582C24", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S19582C24C1Ev();
extern void _ZN9S19582C24D2Ev();
Name_Map name_map_S19582C24[] = {
  NSPAIR(_ZN9S19582C24C1Ev),
  NSPAIR(_ZN9S19582C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C25;
extern VTBL_ENTRY _ZTI9S19582C25[];
extern  VTBL_ENTRY _ZTV9S19582C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C25[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
static Base_Class bases_S19582C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19582C25,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19582C5,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19582C7,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19582C4,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C24[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C24D1Ev();
extern void _ZN9S19582C24D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S19582C24D1Ev,_ZThn8_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S19582C24D0Ev,_ZThn8_N9S19582C24D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn96_N9S19582C24D1Ev,_ZThn48_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn96_N9S19582C24D0Ev,_ZThn48_N9S19582C24D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY vtc_S19582C24[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern VTBL_ENTRY _ZTV9S19582C24[];
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__9S19582C24[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4__9S19582C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C4__9S19582C24[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4__9S19582C24[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C25D1Ev();
extern void _ZN9S19582C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C24[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C25__9S19582C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C25__9S19582C24[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__9S19582C24[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C14__9S19582C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C14__9S19582C24[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__A1__9S19582C24[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C24[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__9S19582C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C8__9S19582C24[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C24[] = {
  {&(_ZTV9S19582C24[10]),  10,51},
  {&(_tg__ZTV8S19582C4__9S19582C24[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C4__9S19582C24[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C4__9S19582C24[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C4__9S19582C24[7]),  7,9},
  {&(_ZTV9S19582C24[21]),  21,51},
  {&(_ZTV9S19582C24[30]),  30,51},
  {&(_ZTV9S19582C24[21]),  21,51},
  {&(_ZTV9S19582C24[35]),  35,51},
  {&(_ZTV9S19582C24[41]),  41,51},
  {&(_ZTV9S19582C24[49]),  49,51},
  {&(_tg__ZTV9S19582C25__9S19582C24[7]),  7,10},
  {&(_tg__ZTV9S19582C14__9S19582C25__9S19582C24[6]),  6,9},
  {&(_tg__ZTV9S19582C25__9S19582C24[7]),  7,10},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C25__9S19582C24[2]),  2,3},
  {&(_tg__ZTV9S19582C14__9S19582C24[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__9S19582C24[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C14__9S19582C24[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C14__9S19582C24[3]),  3,4},
  {&(_tg__ZTV8S19582C5__A1__9S19582C24[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__A1__9S19582C24[3]),  3,4},
  {&(_tg__ZTV8S19582C8__9S19582C24[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__9S19582C24[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C8__9S19582C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19582C24[];
extern  VTBL_ENTRY _ZTV9S19582C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C24[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19582C24D0Ev,_ZThn48_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19582C24D1Ev,_ZThn48_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19582C24D0Ev,_ZThn8_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19582C24D1Ev,_ZThn8_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C24 = {  "S19582C24", // class name
  bases_S19582C24, 14,
  &(vtc_S19582C24[0]), // expected_vtbl_contents
  &(vtt_S19582C24[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S19582C24),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19582C24),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C24),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C22  : S19582C11 , virtual S3223C8_nt , S19582C5 , virtual S19582C23 , S19582C24 {
  virtual  ~S19582C22(); // _ZN9S19582C22D2Ev
  S19582C22(); // tgen
};
//SIG(-1 S19582C22) C1{ BC2{ VBC3{ m} VBC4{ m Fp}} VBC5{ m Fi} BC6{ VBC3 VBC7{ v1} FC7} VBC8{ BC4 BC9{ m} VBC6 VBC10{ BC11{ BC6 BC3 BC7 vd}}} BC12{ VBC13{ VBC11 VBC4 Fp[9]} BC3 BC14{ VBC6 VBC15{ BC7 BC4 VBC6 v2}} vd Fp} vd}


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

static void Test_S19582C22()
{
  extern Class_Descriptor cd_S19582C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[30];
    init_test(&cd_S19582C22, buf);
    S19582C22 *dp, &lv = *(dp=new (buf) S19582C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,116), "sizeof(S19582C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19582C22)");
    check_base_class_offset(lv, (S19894C34*)(S19582C11*), 0, "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C22");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C21*), 0, "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C14 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), 0, "S19582C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C11*), ABISELECT(40,20), "S19582C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C25*), ABISELECT(40,20), "S19582C22");
    check_base_class_offset(lv, (S19582C11*), 0, "S19582C22");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(48,24), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(8,4), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(8,4), "S19582C22");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(8,4), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), ABISELECT(8,4), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*), ABISELECT(8,4), "S19582C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C23*), ABISELECT(64,32), "S19582C22");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C23*), ABISELECT(56,28), "S19582C22");
    /*is_ambiguous_... S19582C23::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C23*), ABISELECT(72,36), "S19582C22");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*)(S19582C24*), ABISELECT(72,36), "S19582C22");
    check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(72,36), "S19582C22");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(88,44), "S19582C22");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C21*), ABISELECT(88,44), "S19582C22");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C21*), ABISELECT(104,52), "S19582C22");
    check_base_class_offset(lv, (S19582C14*)(S19582C21*), ABISELECT(88,44), "S19582C22");
    check_base_class_offset(lv, (S19582C21*)(S19582C23*), ABISELECT(88,44), "S19582C22");
    check_base_class_offset(lv, (S19582C23*), ABISELECT(56,28), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C14*), ABISELECT(192,96), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C14 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), ABISELECT(192,96), "S19582C22");
    /*is_ambiguous_... S19582C22::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(208,104), "S19582C22");
    check_base_class_offset(lv, (S19582C14*)(S19582C25*), ABISELECT(192,96), "S19582C22");
    check_base_class_offset(lv, (S19582C25*)(S19582C24*), ABISELECT(112,56), "S19582C22");
    /*is_ambiguous_... S19582C24::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C24*), ABISELECT(24,12), "S19582C22");
    /*is_ambiguous_... S19582C8::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(216,108), "S19582C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(224,112), "S19582C22");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*)(S19582C24*), ABISELECT(216,108), "S19582C22");
    check_base_class_offset(lv, (S19582C4*)(S19582C24*), ABISELECT(24,12), "S19582C22");
    check_base_class_offset(lv, (S19582C24*), ABISELECT(24,12), "S19582C22");
    test_class_info(&lv, &cd_S19582C22);
    dp->~S19582C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C22(Test_S19582C22, "S19582C22", ABISELECT(232,116));

#else // __cplusplus

extern void _ZN9S19582C22C1Ev();
extern void _ZN9S19582C22D2Ev();
Name_Map name_map_S19582C22[] = {
  NSPAIR(_ZN9S19582C22C1Ev),
  NSPAIR(_ZN9S19582C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C11;
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C21;
extern VTBL_ENTRY _ZTI9S19582C21[];
extern  VTBL_ENTRY _ZTV9S19582C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C21[];
extern Class_Descriptor cd_S19582C23;
extern VTBL_ENTRY _ZTI9S19582C23[];
extern  VTBL_ENTRY _ZTV9S19582C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C23[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C25;
extern VTBL_ENTRY _ZTI9S19582C25[];
extern  VTBL_ENTRY _ZTV9S19582C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C25[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19582C24;
extern VTBL_ENTRY _ZTI9S19582C24[];
extern  VTBL_ENTRY _ZTV9S19582C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C24[];
static Base_Class bases_S19582C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3223C8_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19582C5,    ABISELECT(72,36), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(104,52), //bcp->offset
    59, //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19582C21,    ABISELECT(88,44), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19582C23,    ABISELECT(56,28), //bcp->offset
    33, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C5,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C34,    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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(208,104), //bcp->offset
    82, //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
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(192,96), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19582C25,    ABISELECT(112,56), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(216,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(224,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
    23, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(216,108), //bcp->offset
    85, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19582C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19582C24,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C22[];
extern void _ZN9S19582C22D1Ev();
extern void _ZN9S19582C22D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn24_N9S19582C22D1Ev,_ZThn12_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn24_N9S19582C22D0Ev,_ZThn12_N9S19582C22D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn56_N9S19582C22D1Ev,_ZThn28_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn56_N9S19582C22D0Ev,_ZThn28_N9S19582C22D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn88_N9S19582C22D1Ev,_ZThn44_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn88_N9S19582C22D0Ev,_ZThn44_N9S19582C22D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn112_N9S19582C22D1Ev,_ZThn56_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn112_N9S19582C22D0Ev,_ZThn56_N9S19582C22D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn192_N9S19582C22D1Ev,_ZThn96_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn192_N9S19582C22D0Ev,_ZThn96_N9S19582C22D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY vtc_S19582C22[] = {
  ABISELECT(216,108),
  ABISELECT(192,96),
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(8,4),
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN9S19582C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C22D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(16,8),
  ABISELECT(168,84),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19582C22D1Ev,_ZThn12_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19582C22D0Ev,_ZThn12_N9S19582C22D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  ABISELECT(80,40),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern VTBL_ENTRY _ZTV9S19582C22[];
static  VTBL_ENTRY _tg__ZTV9S19582C11__9S19582C22[] = {
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C22[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C24D1Ev();
extern void _ZN9S19582C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C24__9S19582C22[] = {
  ABISELECT(16,8),
  ABISELECT(168,84),
  ABISELECT(88,44),
  ABISELECT(192,96),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C49S19582C24__9S19582C22[] = {
  ABISELECT(192,96),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C49S19582C24__9S19582C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C49S19582C24__9S19582C22[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C49S19582C24__9S19582C22[] = {
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn88_N9S19582C24D1Ev,_ZThn44_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn88_N9S19582C24D0Ev,_ZThn44_N9S19582C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C24__9S19582C22[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  ABISELECT(80,40),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S19582C24D1Ev,_ZThn84_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S19582C24D0Ev,_ZThn84_N9S19582C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C24__9S19582C22[] = {
  ABISELECT(-168,-84),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C24__9S19582C22[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C24__9S19582C22[] = {
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C24__9S19582C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C24__9S19582C22[] = {
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C23D1Ev();
extern void _ZN9S19582C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C23__9S19582C22[] = {
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C23__9S19582C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C23__9S19582C22[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C23D1Ev,_ZThn16_N9S19582C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S19582C23D0Ev,_ZThn16_N9S19582C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C23__9S19582C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C23__9S19582C22[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__A1__9S19582C22[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C21D1Ev();
extern void _ZN9S19582C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C21__9S19582C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C21__A2__9S19582C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A2__9S19582C22[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C21__9S19582C22[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C21__9S19582C22[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C25D1Ev();
extern void _ZN9S19582C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C22[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-112,-56),
  ABISELECT(80,40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C25__9S19582C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C25__9S19582C22[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C25__9S19582C22[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__A1__9S19582C22[] = {
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__A3__9S19582C22[] = {
  ABISELECT(-184,-92),
  ABISELECT(-192,-96),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C14__A3__9S19582C22[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C14__A1__9S19582C22[] = {
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C22[] = {
  ABISELECT(-208,-104),
  ABISELECT(-216,-108),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__9S19582C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C8__9S19582C22[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C22[] = {
  {&(_ZTV9S19582C22[12]),  12,94},
  {&(_tg__ZTV9S19582C11__9S19582C22[4]),  4,4},
  {&(_tg__ZTV8S19582C5__A__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C5__A__9S19582C22[5]),  5,6},
  {&(_tg__ZTV9S19582C24__9S19582C22[10]),  10,13},
  {&(_tg__ZTV8S19582C49S19582C24__9S19582C22[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C49S19582C24__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C49S19582C24__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C49S19582C24__9S19582C22[7]),  7,9},
  {&(_tg__ZTV9S19582C25__9S19582C24__9S19582C22[8]),  8,11},
  {&(_tg__ZTV9S19582C14__9S19582C24__9S19582C22[6]),  6,9},
  {&(_tg__ZTV8S19582C7__9S19582C24__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C24__9S19582C22[2]),  2,3},
  {&(_tg__ZTV8S19582C5__A1__9S19582C24__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C8__9S19582C24__9S19582C22[7]),  7,9},
  {&(_ZTV9S19582C22[19]),  19,94},
  {&(_ZTV9S19582C22[19]),  19,94},
  {&(_ZTV9S19582C22[41]),  41,94},
  {&(_ZTV9S19582C22[49]),  49,94},
  {&(_ZTV9S19582C22[56]),  56,94},
  {&(_ZTV9S19582C22[61]),  61,94},
  {&(_ZTV9S19582C22[30]),  30,94},
  {&(_ZTV9S19582C22[70]),  70,94},
  {&(_ZTV9S19582C22[79]),  79,94},
  {&(_ZTV9S19582C22[84]),  84,94},
  {&(_ZTV9S19582C22[92]),  92,94},
  {&(_tg__ZTV9S19582C23__9S19582C22[7]),  7,10},
  {&(_tg__ZTV8S19582C5__9S19582C23__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C7__9S19582C23__9S19582C22[3]),  3,4},
  {&(_tg__ZTV9S19582C21__9S19582C23__9S19582C22[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C23__9S19582C22[2]),  2,3},
  {&(_tg__ZTV8S19582C5__A1__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__A1__9S19582C22[3]),  3,4},
  {&(_tg__ZTV9S19582C21__9S19582C22[5]),  5,8},
  {&(_tg__ZTV9S19582C149S19582C21__9S19582C22[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C21__A2__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A2__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C21__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C21__9S19582C22[3]),  3,4},
  {&(_tg__ZTV9S19582C25__9S19582C22[7]),  7,10},
  {&(_tg__ZTV9S19582C14__9S19582C25__9S19582C22[6]),  6,9},
  {&(_tg__ZTV8S19582C7__9S19582C25__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C25__9S19582C22[2]),  2,3},
  {&(_tg__ZTV9S19582C14__A1__9S19582C22[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__A3__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C14__A3__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C14__A1__9S19582C22[3]),  3,4},
  {&(_tg__ZTV8S19582C8__9S19582C22[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__9S19582C22[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C8__9S19582C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19582C22[];
extern  VTBL_ENTRY _ZTV9S19582C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C22[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19582C23D0Ev,_ZThn16_N9S19582C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19582C23D1Ev,_ZThn16_N9S19582C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19582C24D0Ev,_ZThn84_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19582C24D1Ev,_ZThn84_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19582C24D0Ev,_ZThn44_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19582C24D1Ev,_ZThn44_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19582C22D0Ev,_ZThn96_N9S19582C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19582C22D0Ev,_ZThn44_N9S19582C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19582C22D1Ev,_ZThn96_N9S19582C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19582C22D1Ev,_ZThn44_N9S19582C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19582C22D0Ev,_ZThn56_N9S19582C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19582C22D0Ev,_ZThn28_N9S19582C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19582C22D1Ev,_ZThn56_N9S19582C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19582C22D1Ev,_ZThn28_N9S19582C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C22 = {  "S19582C22", // class name
  bases_S19582C22, 26,
  &(vtc_S19582C22[0]), // expected_vtbl_contents
  &(vtt_S19582C22[0]), // expected_vtt_contents
  ABISELECT(232,116), // object size
  NSPAIRA(_ZTI9S19582C22),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19582C22),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C22),50, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C15  : S19894C34 , virtual S19582C16 , virtual S19582C5 , virtual S19582C19 , virtual S19582C22 {
  long double s19582c15f0[6];
  virtual  ~S19582C15(); // _ZN9S19582C15D2Ev
  S19582C15(); // tgen
};
//SIG(-1 S19582C15) C1{ BC2{ m} VBC3{ VBC4{ m} VBC5{ BC6{ m Fi}}} VBC7{ VBC2 VBC8{ v1} FC8} VBC9{ BC10{ BC8 BC11{ m Fp} VBC7 v2} VBC12{ BC11 BC8 VBC10 BC7 BC13{ BC7 BC2 BC8 vd} vd} VBC14{ BC13} VBC15{ VBC7 VBC10} BC4 vd} VBC16{ BC17{ VBC2 VBC11} VBC6 BC7 VBC18{ BC11 BC4 VBC7 VBC14} BC19{ VBC20{ VBC13 VBC11 Fp[9]} BC2 BC15 vd Fp} vd} vd FD[6]}


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

static void Test_S19582C15()
{
  extern Class_Descriptor cd_S19582C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,60)];
    init_test(&cd_S19582C15, buf);
    S19582C15 *dp, &lv = *(dp=new (buf) S19582C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,236), "sizeof(S19582C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19582C15)");
    /*is_ambiguous_... S19582C15::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19582C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C16*), 0, "S19582C15");
    check_base_class_offset(lv, (S3223C8_nt*)(S19582C17_nt*), ABISELECT(112,76), "S19582C15");
    check_base_class_offset(lv, (S19582C17_nt*)(S19582C16*), ABISELECT(112,76), "S19582C15");
    check_base_class_offset(lv, (S19582C16*), 0, "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), ABISELECT(136,88), "S19582C15");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C20*), ABISELECT(136,88), "S19582C15");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C20*), ABISELECT(136,88), "S19582C15");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(136,88), "S19582C15");
    check_base_class_offset(lv, (S19894C34*)(S19582C11*)(S19582C22*), ABISELECT(136,88), "S19582C15");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C22*), ABISELECT(136,88), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C14 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), ABISELECT(136,88), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C20*), ABISELECT(120,80), "S19582C15");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C20*), ABISELECT(120,80), "S19582C15");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C22*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C8*)(S19582C19*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C4 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C4*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C23::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C23*), ABISELECT(120,80), "S19582C15");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*)(S19582C24*)(S19582C22*), ABISELECT(120,80), "S19582C15");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*)(S19582C19*), ABISELECT(136,88), "S19582C15");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*)(S19582C19*), ABISELECT(144,92), "S19582C15");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C8*)(S19582C19*), ABISELECT(136,88), "S19582C15");
    /*is_ambiguous_... S19582C20::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C20*), ABISELECT(160,100), "S19582C15");
    /*is_ambiguous_... S19582C20::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C20*), ABISELECT(152,96), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(208,124), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(216,128), "S19582C15");
    check_base_class_offset(lv, (S19582C8*)(S19582C20*), ABISELECT(208,124), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C4 */ AMB_check_base_class_offset(lv, (S19582C8*)(S19582C4*), ABISELECT(208,124), "S19582C15");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*)(S19582C24*)(S19582C22*), ABISELECT(208,124), "S19582C15");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C20*), ABISELECT(168,104), "S19582C15");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C20*), ABISELECT(184,112), "S19582C15");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C20*), ABISELECT(184,112), "S19582C15");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C20*), ABISELECT(200,120), "S19582C15");
    check_base_class_offset(lv, (S19582C14*)(S19582C20*), ABISELECT(184,112), "S19582C15");
    check_base_class_offset(lv, (S19582C20*)(S19582C19*), ABISELECT(152,96), "S19582C15");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(224,132), "S19582C15");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C21*), ABISELECT(224,132), "S19582C15");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C21*), ABISELECT(240,140), "S19582C15");
    check_base_class_offset(lv, (S19582C14*)(S19582C21*), ABISELECT(224,132), "S19582C15");
    check_base_class_offset(lv, (S19582C21*)(S19582C19*), ABISELECT(224,132), "S19582C15");
    check_base_class_offset(lv, (S19582C21*)(S19582C23*), ABISELECT(224,132), "S19582C15");
    check_base_class_offset(lv, (S19582C4*)(S19582C19*), ABISELECT(248,144), "S19582C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C19*), ABISELECT(136,88), "S19582C15");
    check_base_class_offset(lv, (S19582C19*), ABISELECT(136,88), "S19582C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C11*)(S19582C22*), ABISELECT(296,168), "S19582C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C25*), ABISELECT(296,168), "S19582C15");
    check_base_class_offset(lv, (S19582C11*)(S19582C22*), ABISELECT(256,148), "S19582C15");
    check_base_class_offset(lv, (S3223C8_nt*)(S19582C22*), ABISELECT(304,172), "S19582C15");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C22*), ABISELECT(264,152), "S19582C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C23*), ABISELECT(320,180), "S19582C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C23*), ABISELECT(312,176), "S19582C15");
    check_base_class_offset(lv, (S19582C23*)(S19582C22*), ABISELECT(312,176), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C14*), ABISELECT(408,224), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C14 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), ABISELECT(408,224), "S19582C15");
    /*is_ambiguous_... S19582C15::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(424,232), "S19582C15");
    check_base_class_offset(lv, (S19582C14*)(S19582C25*), ABISELECT(408,224), "S19582C15");
    check_base_class_offset(lv, (S19582C25*)(S19582C24*)(S19582C22*), ABISELECT(328,184), "S19582C15");
    /*is_ambiguous_... S19582C24::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C24*)(S19582C22*), ABISELECT(280,160), "S19582C15");
    check_base_class_offset(lv, (S19582C4*)(S19582C24*)(S19582C22*), ABISELECT(280,160), "S19582C15");
    check_base_class_offset(lv, (S19582C24*)(S19582C22*), ABISELECT(280,160), "S19582C15");
    check_base_class_offset(lv, (S19582C22*), ABISELECT(256,148), "S19582C15");
    check_field_offset(lv, s19582c15f0, ABISELECT(16,4), "S19582C15.s19582c15f0");
    test_class_info(&lv, &cd_S19582C15);
    dp->~S19582C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C15(Test_S19582C15, "S19582C15", ABISELECT(432,236));

#else // __cplusplus

extern void _ZN9S19582C15C1Ev();
extern void _ZN9S19582C15D2Ev();
Name_Map name_map_S19582C15[] = {
  NSPAIR(_ZN9S19582C15C1Ev),
  NSPAIR(_ZN9S19582C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19582C17_nt;
extern VTBL_ENTRY _ZTI12S19582C17_nt[];
extern Class_Descriptor cd_S19582C16;
extern VTBL_ENTRY _ZTI9S19582C16[];
extern  VTBL_ENTRY _ZTV9S19582C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C16[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C20;
extern VTBL_ENTRY _ZTI9S19582C20[];
extern  VTBL_ENTRY _ZTV9S19582C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C20[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C21;
extern VTBL_ENTRY _ZTI9S19582C21[];
extern  VTBL_ENTRY _ZTV9S19582C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C21[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19582C19;
extern VTBL_ENTRY _ZTI9S19582C19[];
extern  VTBL_ENTRY _ZTV9S19582C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C19[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C11;
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19582C23;
extern VTBL_ENTRY _ZTI9S19582C23[];
extern  VTBL_ENTRY _ZTV9S19582C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C23[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C25;
extern VTBL_ENTRY _ZTI9S19582C25[];
extern  VTBL_ENTRY _ZTV9S19582C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C25[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19582C24;
extern VTBL_ENTRY _ZTI9S19582C24[];
extern  VTBL_ENTRY _ZTV9S19582C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C24[];
extern Class_Descriptor cd_S19582C22;
extern VTBL_ENTRY _ZTI9S19582C22[];
extern  VTBL_ENTRY _ZTV9S19582C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C22[];
static Base_Class bases_S19582C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3223C8_nt,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19582C17_nt,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19582C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(120,80), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C7,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(208,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
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(216,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(208,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(168,104), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19582C5,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(200,120), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(184,112), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19582C20,    ABISELECT(152,96), //bcp->offset
    43, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(240,140), //bcp->offset
    89, //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
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19582C21,    ABISELECT(224,132), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19582C4,    ABISELECT(248,144), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19582C19,    ABISELECT(136,88), //bcp->offset
    27, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(296,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19582C11,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3223C8_nt,    ABISELECT(304,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(264,152), //bcp->offset
    115, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(312,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19582C23,    ABISELECT(312,176), //bcp->offset
    134, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(408,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(408,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(424,232), //bcp->offset
    165, //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
    22, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(408,224), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19582C25,    ABISELECT(328,184), //bcp->offset
    145, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19582C4,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19582C24,    ABISELECT(280,160), //bcp->offset
    121, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19582C22,    ABISELECT(256,148), //bcp->offset
    100, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19582C15[];
extern void _ZN9S19582C15D1Ev();
extern void _ZN9S19582C15D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19582C15D1Ev,_ZTv0_n48_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19582C15D1Ev,_ZThn88_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19582C15D0Ev,_ZTv0_n48_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19582C15D0Ev,_ZThn88_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S19582C15D1Ev,_ZThn96_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S19582C15D0Ev,_ZThn96_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19582C15D1Ev,_ZTvn16_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19582C15D0Ev,_ZTvn16_n32_N9S19582C15D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S19582C15D1Ev,_ZThn132_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S19582C15D0Ev,_ZThn132_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n104_N9S19582C15D1Ev,_ZTv0_n52_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S19582C15D1Ev,_ZThn148_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19582C15D0Ev,_ZTv0_n52_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S19582C15D0Ev,_ZThn148_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn24_n104_N9S19582C15D1Ev,_ZTvn12_n52_N9S19582C15D1Ev)();
extern void ABISELECT(_ZTvn24_n104_N9S19582C15D0Ev,_ZTvn12_n52_N9S19582C15D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn312_N9S19582C15D1Ev,_ZThn176_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn312_N9S19582C15D0Ev,_ZThn176_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn328_N9S19582C15D1Ev,_ZThn184_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn328_N9S19582C15D0Ev,_ZThn184_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn408_N9S19582C15D1Ev,_ZThn224_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn408_N9S19582C15D0Ev,_ZThn224_N9S19582C15D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C15[] = {
  ABISELECT(408,224),
  ABISELECT(328,184),
  ABISELECT(312,176),
  ABISELECT(304,172),
  ABISELECT(296,168),
  ABISELECT(256,148),
  ABISELECT(248,144),
  ABISELECT(224,132),
  ABISELECT(208,124),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(120,80),
  ABISELECT(136,88),
  ABISELECT(120,80),
  0,
  ABISELECT(112,76),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN9S19582C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C15D0Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-136,-88),
  0,
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19582C15D1Ev,_ZTv0_n48_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19582C15D0Ev,_ZTv0_n48_N9S19582C15D0Ev),
  ABISELECT(-152,-96),
  0,
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C15D1Ev,_ZTvn16_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C15D0Ev,_ZTvn16_n32_N9S19582C15D0Ev),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  ABISELECT(-224,-132),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-256,-148),
  ABISELECT(-48,-24),
  ABISELECT(152,76),
  ABISELECT(72,36),
  ABISELECT(-32,-16),
  ABISELECT(-136,-68),
  ABISELECT(56,28),
  ABISELECT(-136,-68),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19582C15D1Ev,_ZTv0_n52_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19582C15D0Ev,_ZTv0_n52_N9S19582C15D0Ev),
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(16,8),
  ABISELECT(128,64),
  ABISELECT(48,24),
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N9S19582C15D1Ev,_ZTvn12_n52_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N9S19582C15D0Ev,_ZTvn12_n52_N9S19582C15D0Ev),
  ABISELECT(-312,-176),
  ABISELECT(-88,-44),
  ABISELECT(-192,-96),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-312,-176),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev),
  ABISELECT(-328,-184),
  ABISELECT(-32,-16),
  ABISELECT(-208,-104),
  ABISELECT(-192,-96),
  ABISELECT(80,40),
  ABISELECT(-208,-104),
  ABISELECT(-328,-184),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev),
  ABISELECT(-408,-224),
  ABISELECT(-288,-144),
  ABISELECT(-272,-136),
  ABISELECT(-288,-144),
  ABISELECT(-408,-224),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev),
  ABISELECT(-424,-232),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19582C15[];
static  VTBL_ENTRY _tg__ZTV9S19582C16__9S19582C15[] = {
  ABISELECT(112,76),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C16[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN9S19582C19D1Ev();
extern void _ZN9S19582C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C19__9S19582C15[] = {
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  (VTBL_ENTRY)&_ZN9S19582C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C19D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C89S19582C19__9S19582C15[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C89S19582C19__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C19__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S19582C19D1Ev,_ZThn8_N9S19582C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev)();
extern void ABISELECT(_ZThn16_N9S19582C19D0Ev,_ZThn8_N9S19582C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C20__9S19582C19__9S19582C15[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__A1__9S19582C19__9S19582C15[] = {
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C20__A1__9S19582C19__9S19582C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19582C19D1Ev,_ZTvn16_n32_N9S19582C19D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19582C19D0Ev,_ZTvn16_n32_N9S19582C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C20__9S19582C19__9S19582C15[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C19D1Ev,_ZTvn16_n32_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C19D0Ev,_ZTvn16_n32_N9S19582C19D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C20__A4__9S19582C19__9S19582C15[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev)();
extern void ABISELECT(_ZThn88_N9S19582C19D1Ev,_ZThn44_N9S19582C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev)();
extern void ABISELECT(_ZThn88_N9S19582C19D0Ev,_ZThn44_N9S19582C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C19__9S19582C15[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A5__9S19582C19__9S19582C15[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__9S19582C19__9S19582C15[] = {
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C20D1Ev();
extern void _ZN9S19582C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C20__9S19582C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C20__A1__9S19582C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C20__A1__9S19582C15[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C20__9S19582C15[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C20__A2__9S19582C15[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C20__A2__9S19582C15[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C20__9S19582C15[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C20__9S19582C15[] = {
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C20__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C20__9S19582C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C20__9S19582C15[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__A1__9S19582C15[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__A1__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C21D1Ev();
extern void _ZN9S19582C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C15[] = {
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C21__A1__9S19582C15[] = {
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C21__A3__9S19582C15[] = {
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A3__9S19582C15[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C21__A1__9S19582C15[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C21__9S19582C15[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__9S19582C15[] = {
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4__9S19582C15[] = {
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN9S19582C22D1Ev();
extern void _ZN9S19582C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C22__9S19582C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(152,76),
  ABISELECT(72,36),
  ABISELECT(-32,-16),
  ABISELECT(-136,-68),
  ABISELECT(56,28),
  ABISELECT(-136,-68),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN9S19582C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C119S19582C22__9S19582C15[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C22__A4__9S19582C15[] = {
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C22__A4__9S19582C15[] = {
  0,
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C24D1Ev();
extern void _ZN9S19582C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C249S19582C22__9S19582C15[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  ABISELECT(48,24),
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C49S19582C249S19582C22__A1__9S19582C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C49S19582C249S19582C22__A1__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C49S19582C249S19582C22__A1__9S19582C15[] = {
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn48_N9S19582C24D1Ev,_ZThn24_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn48_N9S19582C24D0Ev,_ZThn24_N9S19582C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C249S19582C22__9S19582C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-208,-104),
  ABISELECT(-192,-96),
  ABISELECT(80,40),
  ABISELECT(-208,-104),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn128_N9S19582C24D1Ev,_ZThn64_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn128_N9S19582C24D0Ev,_ZThn64_N9S19582C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C249S19582C22__9S19582C15[] = {
  ABISELECT(-128,-64),
  ABISELECT(-288,-144),
  ABISELECT(-272,-136),
  ABISELECT(-288,-144),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C249S19582C22__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C249S19582C22__9S19582C15[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C249S19582C22__9S19582C15[] = {
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C22__9S19582C15[] = {
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C22__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn56_N9S19582C22D1Ev,_ZThn28_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn56_N9S19582C22D0Ev,_ZThn28_N9S19582C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C23__9S19582C22__9S19582C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-192,-96),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C22__9S19582C15[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C22__9S19582C15[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn24_N9S19582C22D1Ev,_ZThn12_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn24_N9S19582C22D0Ev,_ZThn12_N9S19582C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C24__9S19582C22__9S19582C15[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  ABISELECT(48,24),
  ABISELECT(-72,-36),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19582C22D1Ev,_ZThn12_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19582C22D0Ev,_ZThn12_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn72_N9S19582C22D1Ev,_ZThn36_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn72_N9S19582C22D0Ev,_ZThn36_N9S19582C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C22__9S19582C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-32,-16),
  ABISELECT(-208,-104),
  ABISELECT(-192,-96),
  ABISELECT(80,40),
  ABISELECT(-208,-104),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn152_N9S19582C22D1Ev,_ZThn76_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn152_N9S19582C22D0Ev,_ZThn76_N9S19582C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__A1__9S19582C22__9S19582C15[] = {
  ABISELECT(-152,-76),
  ABISELECT(-288,-144),
  ABISELECT(-272,-136),
  ABISELECT(-288,-144),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A2__9S19582C22__9S19582C15[] = {
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C22__9S19582C15[] = {
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C23D1Ev();
extern void _ZN9S19582C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C23__9S19582C15[] = {
  ABISELECT(-88,-44),
  ABISELECT(-192,-96),
  ABISELECT(-176,-88),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C23__9S19582C15[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C23__9S19582C15[] = {
  ABISELECT(88,44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C23__9S19582C15[] = {
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C25D1Ev();
extern void _ZN9S19582C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-208,-104),
  ABISELECT(-192,-96),
  ABISELECT(80,40),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C25__9S19582C15[] = {
  ABISELECT(-80,-40),
  ABISELECT(-288,-144),
  ABISELECT(-272,-136),
  ABISELECT(-288,-144),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C25__9S19582C15[] = {
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C25__9S19582C15[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__A2__9S19582C15[] = {
  ABISELECT(-288,-144),
  ABISELECT(-272,-136),
  ABISELECT(-288,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__A5__9S19582C15[] = {
  ABISELECT(-288,-144),
  ABISELECT(-272,-136),
  ABISELECT(-288,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C14__A5__9S19582C15[] = {
  0,
  ABISELECT(288,144),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C14__A2__9S19582C15[] = {
  0,
  ABISELECT(288,144),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C15[] = {
  {&(_ZTV9S19582C15[19]),  19,168},
  {&(_ZTV9S19582C15[19]),  19,168},
  {&(_ZTV9S19582C15[26]),  26,168},
  {&(_ZTV9S19582C15[26]),  26,168},
  {&(_ZTV9S19582C15[39]),  39,168},
  {&(_ZTV9S19582C15[51]),  51,168},
  {&(_ZTV9S19582C15[78]),  78,168},
  {&(_ZTV9S19582C15[59]),  59,168},
  {&(_ZTV9S19582C15[65]),  65,168},
  {&(_ZTV9S19582C15[70]),  70,168},
  {&(_ZTV9S19582C15[86]),  86,168},
  {&(_ZTV9S19582C15[91]),  91,168},
  {&(_ZTV9S19582C15[99]),  99,168},
  {&(_ZTV9S19582C15[113]),  113,168},
  {&(_ZTV9S19582C15[120]),  120,168},
  {&(_ZTV9S19582C15[142]),  142,168},
  {&(_ZTV9S19582C15[131]),  131,168},
  {&(_ZTV9S19582C15[153]),  153,168},
  {&(_ZTV9S19582C15[162]),  162,168},
  {&(_ZTV9S19582C15[167]),  167,168},
  {&(_tg__ZTV9S19582C16__9S19582C15[4]),  4,4},
  {&(_tg__ZTV8S19582C5__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C19__9S19582C15[9]),  9,13},
  {&(_tg__ZTV8S19582C89S19582C19__9S19582C15[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C89S19582C19__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C89S19582C19__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C19__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C19__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C20__9S19582C19__9S19582C15[8]),  8,11},
  {&(_tg__ZTV8S19582C8__A1__9S19582C19__9S19582C15[7]),  7,9},
  {&(_tg__ZTV8S19582C59S19582C20__A1__9S19582C19__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C149S19582C20__9S19582C19__9S19582C15[5]),  5,8},
  {&(_tg__ZTV8S19582C79S19582C149S19582C20__A4__9S19582C19__9S19582C15[2]),  2,3},
  {&(_tg__ZTV9S19582C21__9S19582C19__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A5__9S19582C19__9S19582C15[2]),  2,3},
  {&(_tg__ZTV8S19582C4__9S19582C19__9S19582C15[7]),  7,8},
  {&(_tg__ZTV9S19582C20__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C59S19582C20__A1__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C20__A1__9S19582C15[3]),  3,4},
  {&(_tg__ZTV9S19582C149S19582C20__9S19582C15[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C20__A2__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C20__A2__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C20__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C8__9S19582C20__9S19582C15[7]),  7,9},
  {&(_tg__ZTV8S19582C5__9S19582C20__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C20__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__A__9S19582C20__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C14__9S19582C20__9S19582C15[5]),  5,8},
  {&(_tg__ZTV8S19582C8__A1__9S19582C15[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__A1__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C8__A1__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C21__9S19582C15[5]),  5,8},
  {&(_tg__ZTV9S19582C149S19582C21__A1__9S19582C15[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C21__A3__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A3__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C21__A1__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C21__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C4__9S19582C15[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C4__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C4__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C8__8S19582C4__9S19582C15[7]),  7,9},
  {&(_tg__ZTV9S19582C22__9S19582C15[12]),  12,14},
  {&(_tg__ZTV9S19582C119S19582C22__9S19582C15[4]),  4,4},
  {&(_tg__ZTV8S19582C59S19582C22__A4__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C22__A4__9S19582C15[3]),  3,4},
  {&(_tg__ZTV9S19582C249S19582C22__9S19582C15[10]),  10,13},
  {&(_tg__ZTV8S19582C49S19582C249S19582C22__A1__9S19582C15[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C49S19582C249S19582C22__A1__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__8S19582C49S19582C249S19582C22__A1__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C8__8S19582C49S19582C249S19582C22__A1__9S19582C15[7]),  7,9},
  {&(_tg__ZTV9S19582C25__9S19582C249S19582C22__9S19582C15[8]),  8,11},
  {&(_tg__ZTV9S19582C14__9S19582C249S19582C22__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C5__A1__9S19582C249S19582C22__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C249S19582C22__9S19582C15[2]),  2,3},
  {&(_tg__ZTV8S19582C5__A1__9S19582C249S19582C22__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C8__9S19582C249S19582C22__9S19582C15[7]),  7,9},
  {&(_tg__ZTV8S19582C5__A__9S19582C22__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__A1__9S19582C22__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C23__9S19582C22__9S19582C15[8]),  8,11},
  {&(_tg__ZTV8S19582C5__A1__9S19582C22__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C21__9S19582C22__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C22__9S19582C15[2]),  2,3},
  {&(_tg__ZTV9S19582C24__9S19582C22__9S19582C15[10]),  10,13},
  {&(_tg__ZTV9S19582C25__9S19582C22__9S19582C15[8]),  8,11},
  {&(_tg__ZTV9S19582C14__A1__9S19582C22__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C14__A2__9S19582C22__9S19582C15[2]),  2,3},
  {&(_tg__ZTV8S19582C8__9S19582C22__9S19582C15[7]),  7,9},
  {&(_tg__ZTV9S19582C23__9S19582C15[7]),  7,10},
  {&(_tg__ZTV8S19582C5__9S19582C23__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C5__9S19582C23__9S19582C15[5]),  5,6},
  {&(_tg__ZTV9S19582C21__9S19582C23__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C23__9S19582C15[2]),  2,3},
  {&(_tg__ZTV9S19582C25__9S19582C15[7]),  7,10},
  {&(_tg__ZTV9S19582C14__9S19582C25__9S19582C15[6]),  6,9},
  {&(_tg__ZTV8S19582C7__9S19582C25__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C25__9S19582C15[2]),  2,3},
  {&(_tg__ZTV9S19582C14__A2__9S19582C15[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__A5__9S19582C15[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C14__A5__9S19582C15[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C14__A2__9S19582C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19582C15[];
extern  VTBL_ENTRY _ZTV9S19582C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C15[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19582C22D0Ev,_ZThn76_N9S19582C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19582C22D1Ev,_ZThn76_N9S19582C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19582C22D0Ev,_ZThn36_N9S19582C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19582C22D0Ev,_ZThn28_N9S19582C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19582C22D1Ev,_ZThn36_N9S19582C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19582C22D1Ev,_ZThn28_N9S19582C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19582C24D0Ev,_ZThn64_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19582C24D1Ev,_ZThn64_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19582C24D0Ev,_ZThn24_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19582C24D1Ev,_ZThn24_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19582C19D0Ev,_ZThn44_N9S19582C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19582C19D1Ev,_ZThn44_N9S19582C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19582C19D0Ev,_ZThn8_N9S19582C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19582C19D1Ev,_ZThn8_N9S19582C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19582C15D0Ev,_ZTv0_n52_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19582C15D0Ev,_ZThn148_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19582C15D1Ev,_ZTv0_n52_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19582C15D1Ev,_ZThn148_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19582C15D0Ev,_ZThn224_N9S19582C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19582C15D0Ev,_ZThn132_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19582C15D1Ev,_ZThn224_N9S19582C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19582C15D1Ev,_ZThn132_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19582C15D0Ev,_ZThn184_N9S19582C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19582C15D0Ev,_ZThn176_N9S19582C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19582C15D0Ev,_ZThn96_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19582C15D1Ev,_ZThn184_N9S19582C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19582C15D1Ev,_ZThn176_N9S19582C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19582C15D1Ev,_ZThn96_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19582C15D0Ev,_ZTv0_n48_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19582C15D0Ev,_ZThn88_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19582C15D1Ev,_ZTv0_n48_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19582C15D1Ev,_ZThn88_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C15 = {  "S19582C15", // class name
  bases_S19582C15, 46,
  &(vtc_S19582C15[0]), // expected_vtbl_contents
  &(vtt_S19582C15[0]), // expected_vtt_contents
  ABISELECT(432,236), // object size
  NSPAIRA(_ZTI9S19582C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19582C15),168, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19582C15),101, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19582C1  : virtual S19582C2 , virtual S19582C13 , virtual S19582C15 {
  int s19582c1f0;
  virtual  ~S19582C1(); // _ZN8S19582C1D2Ev
  S19582C1(); // tgen
};
//SIG(1 S19582C1) C1{ VBC2{ BC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC7 BC9{ m Fp} VBC5 v2}} BC5 BC6 BC10{ m} BC11{ VBC6 VBC9} vd} VBC12{ vd m} vd} VBC13{ BC14{ BC5 BC6 BC7 vd} vd} VBC15{ BC6 VBC16{ VBC10 VBC17{ BC18{ m Fi}}} VBC5 VBC19{ BC8 VBC20{ BC9 BC7 VBC8 BC5 BC14 vd} VBC21{ BC14} VBC4 BC10 vd} VBC22{ BC11 VBC18 BC5 VBC23{ BC9 BC10 VBC5 VBC21} BC24{ VBC25{ VBC14 VBC9 Fp[9]} BC6 BC4 vd Fp} vd} vd FD[6]} vd Fi}


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

static void Test_S19582C1()
{
  extern Class_Descriptor cd_S19582C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,68)];
    init_test(&cd_S19582C1, buf);
    S19582C1 *dp, &lv = *(dp=new (buf) S19582C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,268), "sizeof(S19582C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19582C1)");
    /*is_ambiguous_... S19582C1::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*), 0, "S19582C1");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C3*)(S19582C2*), 0, "S19582C1");
    check_base_class_offset(lv, (S19894C34*)(S19582C11*)(S19582C3*)(S19582C2*), 0, "S19582C1");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C13*), 0, "S19582C1");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C20*), 0, "S19582C1");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C20*), 0, "S19582C1");
    check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*)(S19582C21*), 0, "S19582C1");
    check_base_class_offset(lv, (S19894C34*)(S19582C11*)(S19582C22*), 0, "S19582C1");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C22*), 0, "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C14 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C5*)(S19582C14*), 0, "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*), 0, "S19582C1");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C3*)(S19582C2*), 0, "S19582C1");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C13*), 0, "S19582C1");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C20*), 0, "S19582C1");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C20*), 0, "S19582C1");
    check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*)(S19582C21*), 0, "S19582C1");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C22*), 0, "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C5*)(S19582C14*), 0, "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C4 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C4*), ABISELECT(40,20), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C8*), ABISELECT(40,20), "S19582C1");
    /*is_ambiguous_... S19582C15::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C15*), ABISELECT(40,20), "S19582C1");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C8*)(S19582C19*), ABISELECT(40,20), "S19582C1");
    /*is_ambiguous_... S19582C23::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C23*), ABISELECT(40,20), "S19582C1");
    check_base_class_offset(lv, (S19582C5*)(S19582C4*)(S19582C24*)(S19582C22*), ABISELECT(40,20), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*), ABISELECT(56,28), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*), ABISELECT(64,32), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C4 */ AMB_check_base_class_offset(lv, (S19582C8*)(S19582C4*), ABISELECT(56,28), "S19582C1");
    check_base_class_offset(lv, (S19582C8*)(S19582C20*), ABISELECT(56,28), "S19582C1");
    check_base_class_offset(lv, (S19582C8*)(S19582C4*)(S19582C24*)(S19582C22*), ABISELECT(56,28), "S19582C1");
    check_base_class_offset(lv, (S19582C4*)(S19582C3*)(S19582C2*), 0, "S19582C1");
    check_base_class_offset(lv, (S19582C4*)(S19582C19*), 0, "S19582C1");
    /*is_ambiguous_... S19582C3::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C3*)(S19582C2*), ABISELECT(16,8), "S19582C1");
    /*is_ambiguous_... S19582C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C3*)(S19582C2*), ABISELECT(16,8), "S19582C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C3*)(S19582C2*), ABISELECT(16,8), "S19582C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C11*)(S19582C3*)(S19582C2*), ABISELECT(72,36), "S19582C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C11*)(S19582C22*), ABISELECT(72,36), "S19582C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C25*), ABISELECT(72,36), "S19582C1");
    check_base_class_offset(lv, (S19582C11*)(S19582C3*)(S19582C2*), ABISELECT(32,16), "S19582C1");
    check_base_class_offset(lv, (S19582C3*)(S19582C2*), ABISELECT(16,8), "S19582C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19582C2*), ABISELECT(80,40), "S19582C1");
    check_base_class_offset(lv, (S19582C2*), ABISELECT(16,8), "S19582C1");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C13*), ABISELECT(88,44), "S19582C1");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C13*), ABISELECT(88,44), "S19582C1");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C13*), ABISELECT(104,52), "S19582C1");
    check_base_class_offset(lv, (S19582C14*)(S19582C13*), ABISELECT(88,44), "S19582C1");
    check_base_class_offset(lv, (S19582C13*), ABISELECT(88,44), "S19582C1");
    /*is_ambiguous_... S19582C15::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C15*), ABISELECT(112,56), "S19582C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C16*), 0, "S19582C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S19582C17_nt*), ABISELECT(224,132), "S19582C1");
    check_base_class_offset(lv, (S19582C17_nt*)(S19582C16*), ABISELECT(224,132), "S19582C1");
    check_base_class_offset(lv, (S19582C16*)(S19582C15*), ABISELECT(112,56), "S19582C1");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C8*)(S19582C19*), ABISELECT(232,136), "S19582C1");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C8*)(S19582C19*), ABISELECT(240,140), "S19582C1");
    /*is_ambiguous_... S19582C19::S19582C8 */ AMB_check_base_class_offset(lv, (S19582C8*)(S19582C19*), ABISELECT(232,136), "S19582C1");
    /*is_ambiguous_... S19582C20::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19582C20*), ABISELECT(256,148), "S19582C1");
    /*is_ambiguous_... S19582C20::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C20*), ABISELECT(248,144), "S19582C1");
    /*is_ambiguous_... S19582C20::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C20*), ABISELECT(264,152), "S19582C1");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C20*), ABISELECT(280,160), "S19582C1");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C20*), ABISELECT(280,160), "S19582C1");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C20*), ABISELECT(296,168), "S19582C1");
    check_base_class_offset(lv, (S19582C14*)(S19582C20*), ABISELECT(280,160), "S19582C1");
    check_base_class_offset(lv, (S19582C20*)(S19582C19*), ABISELECT(248,144), "S19582C1");
    check_base_class_offset(lv, (S19582C5*)(S19582C14*)(S19582C21*), ABISELECT(304,172), "S19582C1");
    /*is_ambiguous_... S19582C14::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*)(S19582C21*), ABISELECT(304,172), "S19582C1");
    /*is_ambiguous_... S19582C14::S19582C7 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*)(S19582C21*), ABISELECT(320,180), "S19582C1");
    check_base_class_offset(lv, (S19582C14*)(S19582C21*), ABISELECT(304,172), "S19582C1");
    check_base_class_offset(lv, (S19582C21*)(S19582C19*), ABISELECT(304,172), "S19582C1");
    check_base_class_offset(lv, (S19582C21*)(S19582C23*), ABISELECT(304,172), "S19582C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C19*), ABISELECT(232,136), "S19582C1");
    check_base_class_offset(lv, (S19582C19*)(S19582C15*), ABISELECT(232,136), "S19582C1");
    check_base_class_offset(lv, (S19582C11*)(S19582C22*), ABISELECT(328,184), "S19582C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S19582C22*), ABISELECT(368,204), "S19582C1");
    /*is_ambiguous_... S19582C22::S19582C5 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C22*), ABISELECT(336,188), "S19582C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19582C23*), ABISELECT(384,212), "S19582C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19582C23*), ABISELECT(376,208), "S19582C1");
    check_base_class_offset(lv, (S19582C23*)(S19582C22*), ABISELECT(376,208), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C5*)(S19582C14*), ABISELECT(472,256), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C14 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C14*), ABISELECT(472,256), "S19582C1");
    /*is_ambiguous_... S19582C1::S19582C14 */ AMB_check_base_class_offset(lv, (S19582C7*)(S19582C14*), ABISELECT(488,264), "S19582C1");
    check_base_class_offset(lv, (S19582C14*)(S19582C25*), ABISELECT(472,256), "S19582C1");
    check_base_class_offset(lv, (S19582C25*)(S19582C24*)(S19582C22*), ABISELECT(392,216), "S19582C1");
    /*is_ambiguous_... S19582C24::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19582C24*)(S19582C22*), ABISELECT(352,196), "S19582C1");
    check_base_class_offset(lv, (S19582C4*)(S19582C24*)(S19582C22*), ABISELECT(352,196), "S19582C1");
    check_base_class_offset(lv, (S19582C24*)(S19582C22*), ABISELECT(352,196), "S19582C1");
    check_base_class_offset(lv, (S19582C22*)(S19582C15*), ABISELECT(328,184), "S19582C1");
    check_base_class_offset(lv, (S19582C15*), ABISELECT(112,56), "S19582C1");
    check_field_offset(lv, s19582c1f0, ABISELECT(8,4), "S19582C1.s19582c1f0");
    test_class_info(&lv, &cd_S19582C1);
    dp->~S19582C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19582C1(Test_S19582C1, "S19582C1", ABISELECT(496,268));

#else // __cplusplus

extern void _ZN8S19582C1C1Ev();
extern void _ZN8S19582C1D2Ev();
Name_Map name_map_S19582C1[] = {
  NSPAIR(_ZN8S19582C1C1Ev),
  NSPAIR(_ZN8S19582C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C11;
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
extern Class_Descriptor cd_S19582C3;
extern VTBL_ENTRY _ZTI8S19582C3[];
extern  VTBL_ENTRY _ZTV8S19582C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19582C2;
extern VTBL_ENTRY _ZTI8S19582C2[];
extern  VTBL_ENTRY _ZTV8S19582C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C2[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C13;
extern VTBL_ENTRY _ZTI9S19582C13[];
extern  VTBL_ENTRY _ZTV9S19582C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C13[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19582C17_nt;
extern VTBL_ENTRY _ZTI12S19582C17_nt[];
extern Class_Descriptor cd_S19582C16;
extern VTBL_ENTRY _ZTI9S19582C16[];
extern  VTBL_ENTRY _ZTV9S19582C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C16[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C8;
extern VTBL_ENTRY _ZTI8S19582C8[];
extern  VTBL_ENTRY _ZTV8S19582C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C20;
extern VTBL_ENTRY _ZTI9S19582C20[];
extern  VTBL_ENTRY _ZTV9S19582C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C20[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C21;
extern VTBL_ENTRY _ZTI9S19582C21[];
extern  VTBL_ENTRY _ZTV9S19582C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C21[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19582C19;
extern VTBL_ENTRY _ZTI9S19582C19[];
extern  VTBL_ENTRY _ZTV9S19582C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C19[];
extern Class_Descriptor cd_S19582C11;
extern VTBL_ENTRY _ZTI9S19582C11[];
extern  VTBL_ENTRY _ZTV9S19582C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C11[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19582C23;
extern VTBL_ENTRY _ZTI9S19582C23[];
extern  VTBL_ENTRY _ZTV9S19582C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C23[];
extern Class_Descriptor cd_S19582C5;
extern VTBL_ENTRY _ZTI8S19582C5[];
extern  VTBL_ENTRY _ZTV8S19582C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C7;
extern VTBL_ENTRY _ZTI8S19582C7[];
extern  VTBL_ENTRY _ZTV8S19582C7[];
extern Class_Descriptor cd_S19582C14;
extern VTBL_ENTRY _ZTI9S19582C14[];
extern  VTBL_ENTRY _ZTV9S19582C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C14[];
extern Class_Descriptor cd_S19582C25;
extern VTBL_ENTRY _ZTI9S19582C25[];
extern  VTBL_ENTRY _ZTV9S19582C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C25[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19582C4;
extern VTBL_ENTRY _ZTI8S19582C4[];
extern  VTBL_ENTRY _ZTV8S19582C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C4[];
extern Class_Descriptor cd_S19582C24;
extern VTBL_ENTRY _ZTI9S19582C24[];
extern  VTBL_ENTRY _ZTV9S19582C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C24[];
extern Class_Descriptor cd_S19582C22;
extern VTBL_ENTRY _ZTI9S19582C22[];
extern  VTBL_ENTRY _ZTV9S19582C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C22[];
extern Class_Descriptor cd_S19582C15;
extern VTBL_ENTRY _ZTI9S19582C15[];
extern  VTBL_ENTRY _ZTV9S19582C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19582C15[];
static Base_Class bases_S19582C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19582C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(40,20), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(56,28), //bcp->offset
    51, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19582C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19582C11,    ABISELECT(32,16), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19582C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19582C2,    ABISELECT(16,8), //bcp->offset
    27, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19582C5,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(104,52), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19582C13,    ABISELECT(88,44), //bcp->offset
    65, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3223C8_nt,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19582C17_nt,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19582C16,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S19582C7,    ABISELECT(232,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
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19582C8,    ABISELECT(232,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19582C5,    ABISELECT(264,152), //bcp->offset
    126, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19582C5,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(296,168), //bcp->offset
    140, //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
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(280,160), //bcp->offset
    132, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19582C20,    ABISELECT(248,144), //bcp->offset
    115, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(304,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(304,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(320,180), //bcp->offset
    152, //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
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(304,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19582C21,    ABISELECT(304,172), //bcp->offset
    143, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(232,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19582C19,    ABISELECT(232,136), //bcp->offset
    99, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S19582C11,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S3223C8_nt,    ABISELECT(368,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(336,188), //bcp->offset
    170, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(376,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19582C23,    ABISELECT(376,208), //bcp->offset
    189, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S19582C5,    ABISELECT(472,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(472,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19582C7,    ABISELECT(488,264), //bcp->offset
    220, //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
    31, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19582C14,    ABISELECT(472,256), //bcp->offset
    211, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S19582C25,    ABISELECT(392,216), //bcp->offset
    200, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19582C4,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19582C24,    ABISELECT(352,196), //bcp->offset
    176, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19582C22,    ABISELECT(328,184), //bcp->offset
    155, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S19582C15,    ABISELECT(112,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19582C1[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C1D1Ev();
extern void _ZN8S19582C1D0Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19582C1D1Ev,_ZTv0_n44_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19582C1D1Ev,_ZThn8_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19582C1D0Ev,_ZTv0_n44_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19582C1D0Ev,_ZThn8_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19582C1D1Ev,_ZTv0_n12_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19582C1D1Ev,_ZThn40_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19582C1D0Ev,_ZTv0_n12_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19582C1D0Ev,_ZThn40_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S19582C1D1Ev,_ZThn44_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S19582C1D0Ev,_ZThn44_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n160_N8S19582C1D1Ev,_ZTv0_n80_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19582C1D1Ev,_ZThn56_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S19582C1D0Ev,_ZTv0_n80_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19582C1D0Ev,_ZThn56_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void ABISELECT(_ZTv0_n96_N8S19582C1D1Ev,_ZTv0_n48_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn232_N8S19582C1D1Ev,_ZThn136_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19582C1D0Ev,_ZTv0_n48_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn232_N8S19582C1D0Ev,_ZThn136_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S19582C1D1Ev,_ZThn144_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S19582C1D0Ev,_ZThn144_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S19582C1D1Ev,_ZTvn16_n32_N8S19582C1D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S19582C1D0Ev,_ZTvn16_n32_N8S19582C1D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19582C1D1Ev,_ZThn172_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19582C1D0Ev,_ZThn172_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S19582C1D1Ev,_ZTv0_n52_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn328_N8S19582C1D1Ev,_ZThn184_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19582C1D0Ev,_ZTv0_n52_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn328_N8S19582C1D0Ev,_ZThn184_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn24_n104_N8S19582C1D1Ev,_ZTvn12_n52_N8S19582C1D1Ev)();
extern void ABISELECT(_ZTvn24_n104_N8S19582C1D0Ev,_ZTvn12_n52_N8S19582C1D0Ev)();
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S19582C1D1Ev,_ZThn208_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S19582C1D0Ev,_ZThn208_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn392_N8S19582C1D1Ev,_ZThn216_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn392_N8S19582C1D0Ev,_ZThn216_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev)();
extern void ABISELECT(_ZThn472_N8S19582C1D1Ev,_ZThn256_N8S19582C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev)();
extern void ABISELECT(_ZThn472_N8S19582C1D0Ev,_ZThn256_N8S19582C1D0Ev)() __attribute__((weak));
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY vtc_S19582C1[] = {
  ABISELECT(472,256),
  ABISELECT(392,216),
  ABISELECT(376,208),
  ABISELECT(368,204),
  ABISELECT(328,184),
  ABISELECT(304,172),
  ABISELECT(248,144),
  ABISELECT(232,136),
  ABISELECT(224,132),
  0,
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(80,40),
  ABISELECT(72,36),
  0,
  ABISELECT(16,8),
  ABISELECT(56,28),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19582C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19582C1D1Ev,_ZTv0_n44_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19582C1D0Ev,_ZTv0_n44_N8S19582C1D0Ev),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19582C1D1Ev,_ZTv0_n12_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19582C1D0Ev,_ZTv0_n12_N8S19582C1D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(360,200),
  ABISELECT(280,160),
  ABISELECT(264,152),
  ABISELECT(256,148),
  ABISELECT(-40,-20),
  ABISELECT(216,128),
  ABISELECT(-112,-56),
  ABISELECT(192,116),
  ABISELECT(-56,-28),
  ABISELECT(136,88),
  ABISELECT(120,80),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-72,-36),
  0,
  ABISELECT(112,76),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S19582C1D1Ev,_ZTv0_n80_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S19582C1D0Ev,_ZTv0_n80_N8S19582C1D0Ev),
  ABISELECT(-232,-136),
  0,
  0,
  ABISELECT(-232,-136),
  ABISELECT(72,36),
  ABISELECT(-176,-108),
  ABISELECT(16,8),
  ABISELECT(-232,-136),
  ABISELECT(-232,-136),
  ABISELECT(-192,-116),
  ABISELECT(-232,-136),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19582C1D1Ev,_ZTv0_n48_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19582C1D0Ev,_ZTv0_n48_N8S19582C1D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19582C1D1Ev,_ZTvn16_n32_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S19582C1D0Ev,_ZTvn16_n32_N8S19582C1D0Ev),
  ABISELECT(-296,-168),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-328,-184),
  ABISELECT(-272,-156),
  ABISELECT(144,72),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  ABISELECT(-288,-164),
  ABISELECT(48,24),
  ABISELECT(-328,-184),
  ABISELECT(40,20),
  ABISELECT(-256,-148),
  ABISELECT(-328,-184),
  ABISELECT(-328,-184),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19582C1D1Ev,_ZTv0_n52_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19582C1D0Ev,_ZTv0_n52_N8S19582C1D0Ev),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  ABISELECT(-280,-160),
  ABISELECT(120,60),
  ABISELECT(40,20),
  ABISELECT(-296,-168),
  ABISELECT(-352,-196),
  ABISELECT(-352,-196),
  ABISELECT(-312,-176),
  ABISELECT(-352,-196),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19582C1D1Ev,_ZTvn12_n52_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N8S19582C1D0Ev,_ZTvn12_n52_N8S19582C1D0Ev),
  ABISELECT(-376,-208),
  ABISELECT(-72,-36),
  ABISELECT(-376,-208),
  ABISELECT(-376,-208),
  ABISELECT(-336,-188),
  ABISELECT(-376,-208),
  ABISELECT(-376,-208),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev),
  ABISELECT(-392,-216),
  ABISELECT(-320,-180),
  ABISELECT(-392,-216),
  ABISELECT(-392,-216),
  ABISELECT(80,40),
  ABISELECT(-392,-216),
  ABISELECT(-392,-216),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev),
  ABISELECT(-488,-264),
  (VTBL_ENTRY)&(_ZTI8S19582C1[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19582C1[];
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C2D1Ev();
extern void _ZN8S19582C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C2__8S19582C1[] = {
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19582C2D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C3D1Ev();
extern void _ZN8S19582C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C38S19582C2__8S19582C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19582C3D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C58S19582C38S19582C2__A1__8S19582C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C58S19582C38S19582C2__A1__8S19582C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C118S19582C38S19582C2__8S19582C1[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__8S19582C38S19582C2__8S19582C1[] = {
  ABISELECT(56,28),
  0,
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C38S19582C2__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C38S19582C2__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C11__8S19582C38S19582C2__8S19582C1[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C3[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__8S19582C2__8S19582C1[] = {
  ABISELECT(56,28),
  0,
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C2__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C2__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C118S19582C3__8S19582C2__8S19582C1[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19582C2D1Ev,_ZTv0_n12_N8S19582C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19582C2D1Ev,_ZThn32_N8S19582C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19582C2D0Ev,_ZTv0_n12_N8S19582C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19582C2D0Ev,_ZThn32_N8S19582C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19582C2__8S19582C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19582C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19582C2D1Ev,_ZTv0_n12_N8S19582C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19582C2D0Ev,_ZTv0_n12_N8S19582C2D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__8S19582C1[] = {
  ABISELECT(56,28),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C4__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C4__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C5__8S19582C1[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C8__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C8__8S19582C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C13D1Ev();
extern void _ZN9S19582C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C13__8S19582C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C13[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C13D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C13__8S19582C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C13__A2__8S19582C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C13__A2__8S19582C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C13__8S19582C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C13__8S19582C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19582C13[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN9S19582C15D1Ev();
extern void _ZN9S19582C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C15__8S19582C1[] = {
  ABISELECT(360,200),
  ABISELECT(280,160),
  ABISELECT(264,152),
  ABISELECT(256,148),
  ABISELECT(-40,-20),
  ABISELECT(216,128),
  ABISELECT(-112,-56),
  ABISELECT(192,116),
  ABISELECT(-56,-28),
  ABISELECT(136,88),
  ABISELECT(120,80),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-72,-36),
  0,
  ABISELECT(112,76),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN9S19582C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C15D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C15__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__9S19582C15__8S19582C1[] = {
  ABISELECT(56,28),
  0,
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S19582C15D1Ev,_ZTv0_n48_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S19582C15D1Ev,_ZThn80_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19582C15D0Ev,_ZTv0_n48_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S19582C15D0Ev,_ZThn80_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C19__9S19582C15__8S19582C1[] = {
  ABISELECT(-120,-80),
  0,
  0,
  ABISELECT(-232,-136),
  ABISELECT(72,36),
  ABISELECT(-176,-108),
  ABISELECT(16,8),
  ABISELECT(-232,-136),
  ABISELECT(-232,-136),
  ABISELECT(-192,-116),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19582C15D1Ev,_ZTv0_n48_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19582C15D0Ev,_ZTv0_n48_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19582C15D1Ev,_ZThn88_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19582C15D0Ev,_ZThn88_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C20__9S19582C15__8S19582C1[] = {
  ABISELECT(-136,-88),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__A1__9S19582C15__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C20__A1__9S19582C15__8S19582C1[] = {
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19582C15D1Ev,_ZTvn16_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19582C15D0Ev,_ZTvn16_n32_N9S19582C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C20__9S19582C15__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C15D1Ev,_ZTvn16_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C15D0Ev,_ZTvn16_n32_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C20__A4__9S19582C15__8S19582C1[] = {
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S19582C15D1Ev,_ZThn116_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S19582C15D0Ev,_ZThn116_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C15__8S19582C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A5__9S19582C15__8S19582C1[] = {
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void ABISELECT(_ZTv0_n104_N9S19582C15D1Ev,_ZTv0_n52_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn216_N9S19582C15D1Ev,_ZThn128_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19582C15D0Ev,_ZTv0_n52_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn216_N9S19582C15D0Ev,_ZThn128_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C22__9S19582C15__8S19582C1[] = {
  ABISELECT(-216,-128),
  ABISELECT(-272,-156),
  ABISELECT(144,72),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  ABISELECT(-288,-164),
  ABISELECT(48,24),
  ABISELECT(-328,-184),
  ABISELECT(40,20),
  ABISELECT(-256,-148),
  ABISELECT(-328,-184),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19582C15D1Ev,_ZTv0_n52_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19582C15D0Ev,_ZTv0_n52_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C22__A4__9S19582C15__8S19582C1[] = {
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn264_N9S19582C15D1Ev,_ZThn152_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn264_N9S19582C15D0Ev,_ZThn152_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C23__9S19582C15__8S19582C1[] = {
  ABISELECT(-264,-152),
  ABISELECT(-72,-36),
  ABISELECT(-376,-208),
  ABISELECT(-376,-208),
  ABISELECT(-336,-188),
  ABISELECT(-376,-208),
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn24_n104_N9S19582C15D1Ev,_ZTvn12_n52_N9S19582C15D1Ev)();
extern void ABISELECT(_ZTvn24_n104_N9S19582C15D0Ev,_ZTvn12_n52_N9S19582C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C249S19582C22__9S19582C15__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(120,60),
  ABISELECT(40,20),
  ABISELECT(-296,-168),
  ABISELECT(-352,-196),
  ABISELECT(-352,-196),
  ABISELECT(-312,-176),
  ABISELECT(-352,-196),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N9S19582C15D1Ev,_ZTvn12_n52_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n104_N9S19582C15D0Ev,_ZTvn12_n52_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn280_N9S19582C15D1Ev,_ZThn160_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn280_N9S19582C15D0Ev,_ZThn160_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C15__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-320,-180),
  ABISELECT(-392,-216),
  ABISELECT(-392,-216),
  ABISELECT(80,40),
  ABISELECT(-392,-216),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev)();
extern void ABISELECT(_ZThn360_N9S19582C15D1Ev,_ZThn200_N9S19582C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev)();
extern void ABISELECT(_ZThn360_N9S19582C15D0Ev,_ZThn200_N9S19582C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__A2__9S19582C15__8S19582C1[] = {
  ABISELECT(-360,-200),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-360,-200),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A6__9S19582C15__8S19582C1[] = {
  ABISELECT(-376,-208),
  (VTBL_ENTRY)&(_ZTI9S19582C15[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C16__8S19582C1[] = {
  ABISELECT(112,76),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C16[0]),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
extern void _ZN9S19582C19D1Ev();
extern void _ZN9S19582C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C19__8S19582C1[] = {
  ABISELECT(-232,-136),
  ABISELECT(72,36),
  ABISELECT(-176,-108),
  ABISELECT(16,8),
  ABISELECT(-232,-136),
  ABISELECT(-232,-136),
  ABISELECT(-192,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
  (VTBL_ENTRY)&_ZN9S19582C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C19D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C89S19582C19__A1__8S19582C1[] = {
  ABISELECT(-232,-136),
  ABISELECT(-232,-136),
  ABISELECT(-192,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C89S19582C19__A1__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A1__8S19582C89S19582C19__A1__8S19582C1[] = {
  0,
  ABISELECT(232,136),
  (VTBL_ENTRY)&(_ZTI8S19582C8[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C19__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C4__9S19582C19__8S19582C1[] = {
  ABISELECT(56,28),
  0,
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(232,136),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S19582C19D1Ev,_ZThn8_N9S19582C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev)();
extern void ABISELECT(_ZThn16_N9S19582C19D0Ev,_ZThn8_N9S19582C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C20__9S19582C19__8S19582C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__A1__9S19582C19__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C20__A1__9S19582C19__8S19582C1[] = {
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTvn32_n64_N9S19582C19D1Ev,_ZTvn16_n32_N9S19582C19D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N9S19582C19D0Ev,_ZTvn16_n32_N9S19582C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C20__9S19582C19__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C19D1Ev,_ZTvn16_n32_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N9S19582C19D0Ev,_ZTvn16_n32_N9S19582C19D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C20__A4__9S19582C19__8S19582C1[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev)();
extern void ABISELECT(_ZThn72_N9S19582C19D1Ev,_ZThn36_N9S19582C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev)();
extern void ABISELECT(_ZThn72_N9S19582C19D0Ev,_ZThn36_N9S19582C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C19__8S19582C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A5__9S19582C19__8S19582C1[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19582C19[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C20D1Ev();
extern void _ZN9S19582C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C20__8S19582C1[] = {
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C20D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C20__A3__8S19582C1[] = {
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C20__A3__8S19582C1[] = {
  0,
  ABISELECT(264,152),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C20__A1__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C20__A4__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C20__A4__8S19582C1[] = {
  0,
  ABISELECT(280,160),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C20__A1__8S19582C1[] = {
  0,
  ABISELECT(280,160),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C20__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C20__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__A2__9S19582C20__8S19582C1[] = {
  0,
  ABISELECT(248,144),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C20__8S19582C1[] = {
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-264,-152),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C20__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19582C20[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D1Ev,_ZThn16_N9S19582C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19582C20D0Ev,_ZThn16_N9S19582C20D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C21D1Ev();
extern void _ZN9S19582C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C21__8S19582C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C21D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C149S19582C21__A2__8S19582C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C149S19582C21__A5__8S19582C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A5__8S19582C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C149S19582C21__A2__8S19582C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C21__8S19582C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S19582C21[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN9S19582C22D1Ev();
extern void _ZN9S19582C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C22__8S19582C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(144,72),
  ABISELECT(64,32),
  ABISELECT(-24,-12),
  ABISELECT(-288,-164),
  ABISELECT(48,24),
  ABISELECT(-328,-184),
  ABISELECT(40,20),
  ABISELECT(-256,-148),
  ABISELECT(-328,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN9S19582C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19582C119S19582C22__A1__8S19582C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-328,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C11[0]),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C22__A6__8S19582C1[] = {
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C22__A6__8S19582C1[] = {
  0,
  ABISELECT(336,188),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C24D1Ev();
extern void _ZN9S19582C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C249S19582C22__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(120,60),
  ABISELECT(40,20),
  ABISELECT(-296,-168),
  ABISELECT(-352,-196),
  ABISELECT(-352,-196),
  ABISELECT(-312,-176),
  ABISELECT(-352,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C24D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C49S19582C249S19582C22__A1__8S19582C1[] = {
  ABISELECT(-296,-168),
  ABISELECT(-352,-196),
  ABISELECT(-352,-196),
  ABISELECT(-312,-176),
  ABISELECT(-352,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__8S19582C49S19582C249S19582C22__A1__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(312,176),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C49S19582C249S19582C22__A1__8S19582C1[] = {
  0,
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__8S19582C49S19582C249S19582C22__A1__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(296,168),
  (VTBL_ENTRY)&(_ZTI8S19582C4[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn40_N9S19582C24D1Ev,_ZThn20_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn40_N9S19582C24D0Ev,_ZThn20_N9S19582C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C249S19582C22__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-320,-180),
  ABISELECT(-392,-216),
  ABISELECT(-392,-216),
  ABISELECT(80,40),
  ABISELECT(-392,-216),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev)();
extern void ABISELECT(_ZThn120_N9S19582C24D1Ev,_ZThn60_N9S19582C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev)();
extern void ABISELECT(_ZThn120_N9S19582C24D0Ev,_ZThn60_N9S19582C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C249S19582C22__8S19582C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C249S19582C22__8S19582C1[] = {
  0,
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C249S19582C22__8S19582C1[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C249S19582C22__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(312,176),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C249S19582C22__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(296,168),
  (VTBL_ENTRY)&(_ZTI9S19582C24[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A__9S19582C22__8S19582C1[] = {
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C22__8S19582C1[] = {
  0,
  ABISELECT(328,184),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn48_N9S19582C22D1Ev,_ZThn24_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn48_N9S19582C22D0Ev,_ZThn24_N9S19582C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C23__9S19582C22__8S19582C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-72,-36),
  ABISELECT(-376,-208),
  ABISELECT(-376,-208),
  ABISELECT(-336,-188),
  ABISELECT(-376,-208),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__A1__9S19582C22__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C22__8S19582C1[] = {
  ABISELECT(24,12),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C22__8S19582C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZThn24_N9S19582C22D1Ev,_ZThn12_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn24_N9S19582C22D0Ev,_ZThn12_N9S19582C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C24__9S19582C22__8S19582C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(120,60),
  ABISELECT(40,20),
  ABISELECT(-296,-168),
  ABISELECT(-352,-196),
  ABISELECT(-352,-196),
  ABISELECT(-312,-176),
  ABISELECT(-352,-196),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19582C22D1Ev,_ZThn12_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19582C22D0Ev,_ZThn12_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S19582C22D1Ev,_ZThn32_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn64_N9S19582C22D0Ev,_ZThn32_N9S19582C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C25__9S19582C22__8S19582C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-320,-180),
  ABISELECT(-392,-216),
  ABISELECT(-392,-216),
  ABISELECT(80,40),
  ABISELECT(-392,-216),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S19582C22D1Ev,_ZThn72_N9S19582C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev)();
extern void ABISELECT(_ZThn144_N9S19582C22D0Ev,_ZThn72_N9S19582C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__A1__9S19582C22__8S19582C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A2__9S19582C22__8S19582C1[] = {
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN8S19582C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C8__9S19582C22__8S19582C1[] = {
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S19582C22[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19582C82v2Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C23D1Ev();
extern void _ZN9S19582C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C23__8S19582C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-376,-208),
  ABISELECT(-376,-208),
  ABISELECT(-336,-188),
  ABISELECT(-376,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C23D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C5__9S19582C23__8S19582C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(336,188),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C23__8S19582C1[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19582C21__9S19582C23__8S19582C1[] = {
  ABISELECT(72,36),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D1Ev,_ZTv0_n24_N9S19582C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C23D0Ev,_ZTv0_n24_N9S19582C23D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C23__8S19582C1[] = {
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19582C23[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C25D1Ev();
extern void _ZN9S19582C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C25__8S19582C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(-392,-216),
  ABISELECT(-392,-216),
  ABISELECT(80,40),
  ABISELECT(-392,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C25D0Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev)();
extern void ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19582C14__9S19582C25__8S19582C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev),
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C25__8S19582C1[] = {
  0,
  ABISELECT(392,216),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C79S19582C14__A1__9S19582C25__8S19582C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19582C25[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
extern void _ZN9S19582C14D1Ev();
extern void _ZN9S19582C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19582C14__A3__8S19582C1[] = {
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19582C14D0Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C59S19582C14__A7__8S19582C1[] = {
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__8S19582C59S19582C14__A7__8S19582C1[] = {
  0,
  ABISELECT(472,256),
  (VTBL_ENTRY)&(_ZTI8S19582C5[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
extern void _ZN8S19582C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19582C7__9S19582C14__A3__8S19582C1[] = {
  0,
  ABISELECT(472,256),
  (VTBL_ENTRY)&(_ZTI9S19582C14[0]),
  (VTBL_ENTRY)&_ZN8S19582C72v1Ev,
};
static  VTT_ENTRY vtt_S19582C1[] = {
  {&(_ZTV8S19582C1[24]),  24,223},
  {&(_ZTV8S19582C1[38]),  38,223},
  {&(_ZTV8S19582C1[24]),  24,223},
  {&(_ZTV8S19582C1[50]),  50,223},
  {&(_ZTV8S19582C1[24]),  24,223},
  {&(_ZTV8S19582C1[58]),  58,223},
  {&(_ZTV8S19582C1[45]),  45,223},
  {&(_ZTV8S19582C1[63]),  63,223},
  {&(_ZTV8S19582C1[71]),  71,223},
  {&(_ZTV8S19582C1[76]),  76,223},
  {&(_ZTV8S19582C1[97]),  97,223},
  {&(_ZTV8S19582C1[97]),  97,223},
  {&(_ZTV8S19582C1[111]),  111,223},
  {&(_ZTV8S19582C1[123]),  123,223},
  {&(_ZTV8S19582C1[131]),  131,223},
  {&(_ZTV8S19582C1[137]),  137,223},
  {&(_ZTV8S19582C1[142]),  142,223},
  {&(_ZTV8S19582C1[149]),  149,223},
  {&(_ZTV8S19582C1[154]),  154,223},
  {&(_ZTV8S19582C1[168]),  168,223},
  {&(_ZTV8S19582C1[175]),  175,223},
  {&(_ZTV8S19582C1[197]),  197,223},
  {&(_ZTV8S19582C1[186]),  186,223},
  {&(_ZTV8S19582C1[208]),  208,223},
  {&(_ZTV8S19582C1[217]),  217,223},
  {&(_ZTV8S19582C1[222]),  222,223},
  {&(_tg__ZTV8S19582C2__8S19582C1[10]),  10,13},
  {&(_tg__ZTV8S19582C38S19582C2__8S19582C1[9]),  9,12},
  {&(_tg__ZTV8S19582C58S19582C38S19582C2__A1__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C58S19582C38S19582C2__A1__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C118S19582C38S19582C2__8S19582C1[4]),  4,4},
  {&(_tg__ZTV8S19582C4__8S19582C38S19582C2__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C38S19582C2__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C4__8S19582C38S19582C2__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C8__8S19582C38S19582C2__8S19582C1[7]),  7,9},
  {&(_tg__ZTV9S19582C11__8S19582C38S19582C2__8S19582C1[4]),  4,4},
  {&(_tg__ZTV8S19582C4__8S19582C2__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C2__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C4__8S19582C2__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C8__8S19582C2__8S19582C1[7]),  7,9},
  {&(_tg__ZTV9S19582C118S19582C3__8S19582C2__8S19582C1[4]),  4,4},
  {&(_tg__ZTV12S21216C26_nt__8S19582C2__8S19582C1[3]),  3,5},
  {&(_tg__ZTV8S19582C4__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C4__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C4__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C8__8S19582C4__8S19582C1[7]),  7,9},
  {&(_tg__ZTV8S19582C5__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C5__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C1[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C8__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C8__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C13__8S19582C1[5]),  5,8},
  {&(_tg__ZTV9S19582C149S19582C13__8S19582C1[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C13__A2__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C13__A2__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C13__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C13__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C15__8S19582C1[19]),  19,21},
  {&(_tg__ZTV9S19582C15__8S19582C1[19]),  19,21},
  {&(_tg__ZTV8S19582C5__9S19582C15__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C4__9S19582C15__8S19582C1[7]),  7,8},
  {&(_tg__ZTV9S19582C19__9S19582C15__8S19582C1[12]),  12,16},
  {&(_tg__ZTV9S19582C20__9S19582C15__8S19582C1[8]),  8,11},
  {&(_tg__ZTV8S19582C8__A1__9S19582C15__8S19582C1[7]),  7,9},
  {&(_tg__ZTV8S19582C59S19582C20__A1__9S19582C15__8S19582C1[5]),  5,6},
  {&(_tg__ZTV9S19582C149S19582C20__9S19582C15__8S19582C1[5]),  5,8},
  {&(_tg__ZTV8S19582C79S19582C149S19582C20__A4__9S19582C15__8S19582C1[2]),  2,3},
  {&(_tg__ZTV9S19582C21__9S19582C15__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A5__9S19582C15__8S19582C1[2]),  2,3},
  {&(_tg__ZTV8S19582C4__9S19582C15__8S19582C1[7]),  7,8},
  {&(_tg__ZTV9S19582C22__9S19582C15__8S19582C1[13]),  13,15},
  {&(_tg__ZTV8S19582C59S19582C22__A4__9S19582C15__8S19582C1[5]),  5,6},
  {&(_tg__ZTV9S19582C23__9S19582C15__8S19582C1[8]),  8,11},
  {&(_tg__ZTV9S19582C249S19582C22__9S19582C15__8S19582C1[10]),  10,13},
  {&(_tg__ZTV9S19582C25__9S19582C15__8S19582C1[8]),  8,11},
  {&(_tg__ZTV9S19582C14__A2__9S19582C15__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C14__A6__9S19582C15__8S19582C1[2]),  2,3},
  {&(_tg__ZTV9S19582C16__8S19582C1[4]),  4,4},
  {&(_tg__ZTV9S19582C19__8S19582C1[9]),  9,13},
  {&(_tg__ZTV8S19582C89S19582C19__A1__8S19582C1[5]),  5,7},
  {&(_tg__ZTV8S19582C5__8S19582C89S19582C19__A1__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A1__8S19582C89S19582C19__A1__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C5__9S19582C19__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C4__9S19582C19__8S19582C1[7]),  7,8},
  {&(_tg__ZTV9S19582C20__9S19582C19__8S19582C1[8]),  8,11},
  {&(_tg__ZTV8S19582C8__A1__9S19582C19__8S19582C1[7]),  7,9},
  {&(_tg__ZTV8S19582C59S19582C20__A1__9S19582C19__8S19582C1[5]),  5,6},
  {&(_tg__ZTV9S19582C149S19582C20__9S19582C19__8S19582C1[5]),  5,8},
  {&(_tg__ZTV8S19582C79S19582C149S19582C20__A4__9S19582C19__8S19582C1[2]),  2,3},
  {&(_tg__ZTV9S19582C21__9S19582C19__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A5__9S19582C19__8S19582C1[2]),  2,3},
  {&(_tg__ZTV8S19582C4__9S19582C19__8S19582C1[7]),  7,8},
  {&(_tg__ZTV9S19582C20__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C59S19582C20__A3__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C20__A3__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C149S19582C20__A1__8S19582C1[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C20__A4__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C20__A4__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C20__A1__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C8__9S19582C20__8S19582C1[7]),  7,9},
  {&(_tg__ZTV8S19582C5__9S19582C20__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__A2__9S19582C20__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C5__A__9S19582C20__8S19582C1[5]),  5,6},
  {&(_tg__ZTV9S19582C14__9S19582C20__8S19582C1[5]),  5,8},
  {&(_tg__ZTV9S19582C21__8S19582C1[5]),  5,8},
  {&(_tg__ZTV9S19582C149S19582C21__A2__8S19582C1[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C149S19582C21__A5__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C149S19582C21__A5__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C149S19582C21__A2__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C21__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C22__8S19582C1[12]),  12,14},
  {&(_tg__ZTV9S19582C119S19582C22__A1__8S19582C1[4]),  4,4},
  {&(_tg__ZTV8S19582C59S19582C22__A6__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C22__A6__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C249S19582C22__8S19582C1[10]),  10,13},
  {&(_tg__ZTV8S19582C49S19582C249S19582C22__A1__8S19582C1[7]),  7,8},
  {&(_tg__ZTV8S19582C5__8S19582C49S19582C249S19582C22__A1__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C49S19582C249S19582C22__A1__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C8__8S19582C49S19582C249S19582C22__A1__8S19582C1[7]),  7,9},
  {&(_tg__ZTV9S19582C25__9S19582C249S19582C22__8S19582C1[8]),  8,11},
  {&(_tg__ZTV9S19582C14__9S19582C249S19582C22__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C7__9S19582C249S19582C22__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C249S19582C22__8S19582C1[2]),  2,3},
  {&(_tg__ZTV8S19582C5__A1__9S19582C249S19582C22__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C8__9S19582C249S19582C22__8S19582C1[7]),  7,9},
  {&(_tg__ZTV8S19582C5__A__9S19582C22__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__9S19582C22__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C23__9S19582C22__8S19582C1[8]),  8,11},
  {&(_tg__ZTV8S19582C5__A1__9S19582C22__8S19582C1[5]),  5,6},
  {&(_tg__ZTV9S19582C21__9S19582C22__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C22__8S19582C1[2]),  2,3},
  {&(_tg__ZTV9S19582C24__9S19582C22__8S19582C1[10]),  10,13},
  {&(_tg__ZTV9S19582C25__9S19582C22__8S19582C1[8]),  8,11},
  {&(_tg__ZTV9S19582C14__A1__9S19582C22__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C14__A2__9S19582C22__8S19582C1[2]),  2,3},
  {&(_tg__ZTV8S19582C8__9S19582C22__8S19582C1[7]),  7,9},
  {&(_tg__ZTV9S19582C23__8S19582C1[7]),  7,10},
  {&(_tg__ZTV8S19582C5__9S19582C23__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__9S19582C23__8S19582C1[3]),  3,4},
  {&(_tg__ZTV9S19582C21__9S19582C23__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C79S19582C149S19582C21__A1__9S19582C23__8S19582C1[2]),  2,3},
  {&(_tg__ZTV9S19582C25__8S19582C1[7]),  7,10},
  {&(_tg__ZTV9S19582C14__9S19582C25__8S19582C1[6]),  6,9},
  {&(_tg__ZTV8S19582C7__9S19582C25__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C79S19582C14__A1__9S19582C25__8S19582C1[2]),  2,3},
  {&(_tg__ZTV9S19582C14__A3__8S19582C1[5]),  5,8},
  {&(_tg__ZTV8S19582C59S19582C14__A7__8S19582C1[5]),  5,6},
  {&(_tg__ZTV8S19582C7__8S19582C59S19582C14__A7__8S19582C1[3]),  3,4},
  {&(_tg__ZTV8S19582C7__9S19582C14__A3__8S19582C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19582C1[];
extern  VTBL_ENTRY _ZTV8S19582C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19582C1[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D0Ev,_ZTv0_n24_N9S19582C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D0Ev,_ZThn40_N9S19582C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C25D1Ev,_ZTv0_n24_N9S19582C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19582C25D1Ev,_ZThn40_N9S19582C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C22D0Ev,_ZTv0_n24_N9S19582C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19582C22D0Ev,_ZThn72_N9S19582C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C22D1Ev,_ZTv0_n24_N9S19582C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19582C22D1Ev,_ZThn72_N9S19582C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C22D0Ev,_ZTv0_n32_N9S19582C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19582C22D0Ev,_ZThn32_N9S19582C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19582C22D0Ev,_ZThn24_N9S19582C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C22D1Ev,_ZTv0_n32_N9S19582C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19582C22D1Ev,_ZThn32_N9S19582C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19582C22D1Ev,_ZThn24_N9S19582C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D0Ev,_ZTv0_n24_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19582C24D0Ev,_ZThn60_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C24D1Ev,_ZTv0_n24_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19582C24D1Ev,_ZThn60_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D0Ev,_ZTv0_n32_N9S19582C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19582C24D0Ev,_ZThn20_N9S19582C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C24D1Ev,_ZTv0_n32_N9S19582C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19582C24D1Ev,_ZThn20_N9S19582C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C19D0Ev,_ZTv0_n24_N9S19582C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19582C19D0Ev,_ZThn36_N9S19582C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C19D1Ev,_ZTv0_n24_N9S19582C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19582C19D1Ev,_ZThn36_N9S19582C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C19D0Ev,_ZTv0_n32_N9S19582C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19582C19D0Ev,_ZThn8_N9S19582C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C19D1Ev,_ZTv0_n32_N9S19582C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19582C19D1Ev,_ZThn8_N9S19582C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19582C15D0Ev,_ZTv0_n52_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19582C15D0Ev,_ZThn128_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19582C15D1Ev,_ZTv0_n52_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19582C15D1Ev,_ZThn128_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C15D0Ev,_ZTv0_n24_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N9S19582C15D0Ev,_ZThn200_N9S19582C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19582C15D0Ev,_ZThn116_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19582C15D1Ev,_ZTv0_n24_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N9S19582C15D1Ev,_ZThn200_N9S19582C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19582C15D1Ev,_ZThn116_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C15D0Ev,_ZTv0_n32_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19582C15D0Ev,_ZThn160_N9S19582C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19582C15D0Ev,_ZThn152_N9S19582C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19582C15D0Ev,_ZThn88_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19582C15D1Ev,_ZTv0_n32_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19582C15D1Ev,_ZThn160_N9S19582C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19582C15D1Ev,_ZThn152_N9S19582C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19582C15D1Ev,_ZThn88_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19582C15D0Ev,_ZTv0_n48_N9S19582C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19582C15D0Ev,_ZThn80_N9S19582C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19582C15D1Ev,_ZTv0_n48_N9S19582C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19582C15D1Ev,_ZThn80_N9S19582C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19582C2D0Ev,_ZTv0_n12_N8S19582C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19582C2D0Ev,_ZThn32_N8S19582C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19582C2D1Ev,_ZTv0_n12_N8S19582C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19582C2D1Ev,_ZThn32_N8S19582C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19582C1D0Ev,_ZTv0_n52_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19582C1D0Ev,_ZThn184_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19582C1D1Ev,_ZTv0_n52_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19582C1D1Ev,_ZThn184_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19582C1D0Ev,_ZTv0_n32_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19582C1D0Ev,_ZThn216_N8S19582C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19582C1D0Ev,_ZThn208_N8S19582C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19582C1D0Ev,_ZThn144_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19582C1D1Ev,_ZTv0_n32_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19582C1D1Ev,_ZThn216_N8S19582C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19582C1D1Ev,_ZThn208_N8S19582C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19582C1D1Ev,_ZThn144_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19582C1D0Ev,_ZTv0_n48_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19582C1D0Ev,_ZThn136_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19582C1D1Ev,_ZTv0_n48_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19582C1D1Ev,_ZThn136_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S19582C1D0Ev,_ZTv0_n80_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19582C1D0Ev,_ZThn56_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S19582C1D1Ev,_ZTv0_n80_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19582C1D1Ev,_ZThn56_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19582C1D0Ev,_ZTv0_n24_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19582C1D0Ev,_ZThn256_N8S19582C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19582C1D0Ev,_ZThn172_N8S19582C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19582C1D0Ev,_ZThn44_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19582C1D1Ev,_ZTv0_n24_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19582C1D1Ev,_ZThn256_N8S19582C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19582C1D1Ev,_ZThn172_N8S19582C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19582C1D1Ev,_ZThn44_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19582C1D0Ev,_ZTv0_n12_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19582C1D0Ev,_ZThn40_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19582C1D1Ev,_ZTv0_n12_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19582C1D1Ev,_ZThn40_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19582C1D0Ev,_ZTv0_n44_N8S19582C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19582C1D0Ev,_ZThn8_N8S19582C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19582C1D1Ev,_ZTv0_n44_N8S19582C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19582C1D1Ev,_ZThn8_N8S19582C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19582C1 = {  "S19582C1", // class name
  bases_S19582C1, 59,
  &(vtc_S19582C1[0]), // expected_vtbl_contents
  &(vtt_S19582C1[0]), // expected_vtt_contents
  ABISELECT(496,268), // object size
  NSPAIRA(_ZTI8S19582C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19582C1),223, //virtual function table var
  24, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19582C1),149, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5245C3  {
  ::S19894C34 s5245c3f0;
  ::S3223C13_nt s5245c3f1;
  ::S3223C4_nt s5245c3f2;
  ::S3223C13_nt s5245c3f3;
  ::S3223C13_nt s5245c3f4;
  virtual  ~S5245C3(); // _ZN7S5245C3D1Ev
  virtual void  v5(); // _ZN7S5245C32v5Ev
  virtual void  v6(); // _ZN7S5245C32v6Ev
  virtual void  v7(); // _ZN7S5245C32v7Ev
  virtual void  v8(); // _ZN7S5245C32v8Ev
  virtual void  v9(); // _ZN7S5245C32v9Ev
  virtual void  v10(); // _ZN7S5245C33v10Ev
  S5245C3(); // tgen
};
//SIG(-1 S5245C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m} FC3{ m Fi[3]} FC4{ m Fi[2]} FC3 FC3}


 S5245C3 ::~S5245C3(){ note_dtor("S5245C3", this);}
void  S5245C3 ::v5(){vfunc_called(this, "_ZN7S5245C32v5Ev");}
void  S5245C3 ::v6(){vfunc_called(this, "_ZN7S5245C32v6Ev");}
void  S5245C3 ::v7(){vfunc_called(this, "_ZN7S5245C32v7Ev");}
void  S5245C3 ::v8(){vfunc_called(this, "_ZN7S5245C32v8Ev");}
void  S5245C3 ::v9(){vfunc_called(this, "_ZN7S5245C32v9Ev");}
void  S5245C3 ::v10(){vfunc_called(this, "_ZN7S5245C33v10Ev");}
S5245C3 ::S5245C3(){ note_ctor("S5245C3", this);} // tgen

static void Test_S5245C3()
{
  extern Class_Descriptor cd_S5245C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S5245C3, buf);
    S5245C3 *dp, &lv = *(dp=new (buf) S5245C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S5245C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C3)");
    check_field_offset(lv, s5245c3f0, ABISELECT(8,4), "S5245C3.s5245c3f0");
    check_field_offset(lv, s5245c3f1, ABISELECT(12,8), "S5245C3.s5245c3f1");
    check_field_offset(lv, s5245c3f2, ABISELECT(24,20), "S5245C3.s5245c3f2");
    check_field_offset(lv, s5245c3f3, ABISELECT(32,28), "S5245C3.s5245c3f3");
    check_field_offset(lv, s5245c3f4, ABISELECT(44,40), "S5245C3.s5245c3f4");
    test_class_info(&lv, &cd_S5245C3);
    dp->~S5245C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C3(Test_S5245C3, "S5245C3", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN7S5245C3C1Ev();
extern void _ZN7S5245C3D1Ev();
Name_Map name_map_S5245C3[] = {
  NSPAIR(_ZN7S5245C3C1Ev),
  NSPAIR(_ZN7S5245C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5245C3[];
extern void _ZN7S5245C3D1Ev();
extern void _ZN7S5245C3D0Ev();
extern void _ZN7S5245C32v5Ev();
extern void _ZN7S5245C32v6Ev();
extern void _ZN7S5245C32v7Ev();
extern void _ZN7S5245C32v8Ev();
extern void _ZN7S5245C32v9Ev();
extern void _ZN7S5245C33v10Ev();
static  VTBL_ENTRY vtc_S5245C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5245C3[0]),
  (VTBL_ENTRY)&_ZN7S5245C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5245C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5245C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S5245C3[];
extern  VTBL_ENTRY _ZTV7S5245C3[];
Class_Descriptor cd_S5245C3 = {  "S5245C3", // class name
  0,0,//no base classes
  &(vtc_S5245C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI7S5245C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5245C3),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  S5245C2  : S5245C3 {
  virtual  ~S5245C2(); // _ZN7S5245C2D1Ev
  virtual void  v11(); // _ZN7S5245C23v11Ev
  S5245C2(); // tgen
};
//SIG(-1 S5245C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 FC3{ m} FC4{ m Fi[3]} FC5{ m Fi[2]} FC4 FC4} vd v1}


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

static void Test_S5245C2()
{
  extern Class_Descriptor cd_S5245C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S5245C2, buf);
    S5245C2 *dp, &lv = *(dp=new (buf) S5245C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S5245C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C2)");
    check_base_class_offset(lv, (S5245C3*), 0, "S5245C2");
    test_class_info(&lv, &cd_S5245C2);
    dp->~S5245C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C2(Test_S5245C2, "S5245C2", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN7S5245C2C1Ev();
extern void _ZN7S5245C2D1Ev();
Name_Map name_map_S5245C2[] = {
  NSPAIR(_ZN7S5245C2C1Ev),
  NSPAIR(_ZN7S5245C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5245C3;
extern VTBL_ENTRY _ZTI7S5245C3[];
extern  VTBL_ENTRY _ZTV7S5245C3[];
static Base_Class bases_S5245C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5245C2[];
extern void _ZN7S5245C2D1Ev();
extern void _ZN7S5245C2D0Ev();
extern void _ZN7S5245C32v5Ev();
extern void _ZN7S5245C32v6Ev();
extern void _ZN7S5245C32v7Ev();
extern void _ZN7S5245C32v8Ev();
extern void _ZN7S5245C32v9Ev();
extern void _ZN7S5245C33v10Ev();
extern void _ZN7S5245C23v11Ev();
static  VTBL_ENTRY vtc_S5245C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5245C2[0]),
  (VTBL_ENTRY)&_ZN7S5245C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5245C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5245C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5245C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S5245C2[];
extern  VTBL_ENTRY _ZTV7S5245C2[];
Class_Descriptor cd_S5245C2 = {  "S5245C2", // class name
  bases_S5245C2, 1,
  &(vtc_S5245C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI7S5245C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5245C2),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  S5245C10  {
  ::S5757C13_nt s5245c10f0;
  unsigned int s5245c10f1:1;
  virtual  ~S5245C10(); // _ZN8S5245C10D1Ev
  virtual void  v12(); // _ZN8S5245C103v12Ev
  virtual void  v13(); // _ZN8S5245C103v13Ev
  virtual void  v14(); // _ZN8S5245C103v14Ev
  virtual void  v15(); // _ZN8S5245C103v15Ev
  virtual void  v16(); // _ZN8S5245C103v16Ev
  virtual void  v17(); // _ZN8S5245C103v17Ev
  virtual void  v18(); // _ZN8S5245C103v18Ev
  S5245C10(); // tgen
};
//SIG(-1 S5245C10) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S5245C10 ::~S5245C10(){ note_dtor("S5245C10", this);}
void  S5245C10 ::v12(){vfunc_called(this, "_ZN8S5245C103v12Ev");}
void  S5245C10 ::v13(){vfunc_called(this, "_ZN8S5245C103v13Ev");}
void  S5245C10 ::v14(){vfunc_called(this, "_ZN8S5245C103v14Ev");}
void  S5245C10 ::v15(){vfunc_called(this, "_ZN8S5245C103v15Ev");}
void  S5245C10 ::v16(){vfunc_called(this, "_ZN8S5245C103v16Ev");}
void  S5245C10 ::v17(){vfunc_called(this, "_ZN8S5245C103v17Ev");}
void  S5245C10 ::v18(){vfunc_called(this, "_ZN8S5245C103v18Ev");}
S5245C10 ::S5245C10(){ note_ctor("S5245C10", this);} // tgen

static void Test_S5245C10()
{
  extern Class_Descriptor cd_S5245C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S5245C10, buf);
    S5245C10 *dp, &lv = *(dp=new (buf) S5245C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S5245C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C10)");
    check_field_offset(lv, s5245c10f0, ABISELECT(8,4), "S5245C10.s5245c10f0");
    set_bf_and_test(lv, s5245c10f1, ABISELECT(32,16), 0, 1, 1, "S5245C10");
    test_class_info(&lv, &cd_S5245C10);
    dp->~S5245C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C10(Test_S5245C10, "S5245C10", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S5245C10C1Ev();
extern void _ZN8S5245C10D1Ev();
Name_Map name_map_S5245C10[] = {
  NSPAIR(_ZN8S5245C10C1Ev),
  NSPAIR(_ZN8S5245C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S5245C10[];
extern void _ZN8S5245C10D1Ev();
extern void _ZN8S5245C10D0Ev();
extern void _ZN8S5245C103v12Ev();
extern void _ZN8S5245C103v13Ev();
extern void _ZN8S5245C103v14Ev();
extern void _ZN8S5245C103v15Ev();
extern void _ZN8S5245C103v16Ev();
extern void _ZN8S5245C103v17Ev();
extern void _ZN8S5245C103v18Ev();
static  VTBL_ENTRY vtc_S5245C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5245C10[0]),
  (VTBL_ENTRY)&_ZN8S5245C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5245C10D0Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v12Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v13Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v14Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v15Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v16Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v17Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v18Ev,
};
extern VTBL_ENTRY _ZTI8S5245C10[];
extern  VTBL_ENTRY _ZTV8S5245C10[];
Class_Descriptor cd_S5245C10 = {  "S5245C10", // class name
  0,0,//no base classes
  &(vtc_S5245C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S5245C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S5245C10),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  S5245C9  : S5245C10 {
  ::S5757C17_nt s5245c9f0;
  ::S5757C17_nt s5245c9f1;
  ::S19894C6_nt s5245c9f2;
  ::S19894C6_nt s5245c9f3;
  ::S19894C6_nt s5245c9f4;
  ::S19894C6_nt s5245c9f5;
  ::S19894C6_nt s5245c9f6;
  ::S5757C20_nt s5245c9f7;
  virtual void  v19(); // _ZN7S5245C93v19Ev
  virtual void  v20(); // _ZN7S5245C93v20Ev
  virtual void  v21(); // _ZN7S5245C93v21Ev
  ~S5245C9(); // tgen
  S5245C9(); // tgen
};
//SIG(-1 S5245C9) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S5245C9 ::v19(){vfunc_called(this, "_ZN7S5245C93v19Ev");}
void  S5245C9 ::v20(){vfunc_called(this, "_ZN7S5245C93v20Ev");}
void  S5245C9 ::v21(){vfunc_called(this, "_ZN7S5245C93v21Ev");}
S5245C9 ::~S5245C9(){ note_dtor("S5245C9", this);} // tgen
S5245C9 ::S5245C9(){ note_ctor("S5245C9", this);} // tgen

static void Test_S5245C9()
{
  extern Class_Descriptor cd_S5245C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S5245C9, buf);
    S5245C9 *dp, &lv = *(dp=new (buf) S5245C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S5245C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C9)");
    check_base_class_offset(lv, (S5245C10*), 0, "S5245C9");
    check_field_offset(lv, s5245c9f0, ABISELECT(40,20), "S5245C9.s5245c9f0");
    check_field_offset(lv, s5245c9f1, ABISELECT(304,216), "S5245C9.s5245c9f1");
    check_field_offset(lv, s5245c9f2, ABISELECT(568,412), "S5245C9.s5245c9f2");
    check_field_offset(lv, s5245c9f3, ABISELECT(576,416), "S5245C9.s5245c9f3");
    check_field_offset(lv, s5245c9f4, ABISELECT(584,420), "S5245C9.s5245c9f4");
    check_field_offset(lv, s5245c9f5, ABISELECT(592,424), "S5245C9.s5245c9f5");
    check_field_offset(lv, s5245c9f6, ABISELECT(600,428), "S5245C9.s5245c9f6");
    check_field_offset(lv, s5245c9f7, ABISELECT(608,432), "S5245C9.s5245c9f7");
    test_class_info(&lv, &cd_S5245C9);
    dp->~S5245C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C9(Test_S5245C9, "S5245C9", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN7S5245C9C1Ev();
extern void _ZN7S5245C9D1Ev();
Name_Map name_map_S5245C9[] = {
  NSPAIR(_ZN7S5245C9C1Ev),
  NSPAIR(_ZN7S5245C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5245C10;
extern VTBL_ENTRY _ZTI8S5245C10[];
extern  VTBL_ENTRY _ZTV8S5245C10[];
static Base_Class bases_S5245C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5245C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5245C9[];
extern void _ZN7S5245C9D1Ev();
extern void _ZN7S5245C9D0Ev();
extern void _ZN8S5245C103v12Ev();
extern void _ZN8S5245C103v13Ev();
extern void _ZN8S5245C103v14Ev();
extern void _ZN8S5245C103v15Ev();
extern void _ZN8S5245C103v16Ev();
extern void _ZN8S5245C103v17Ev();
extern void _ZN8S5245C103v18Ev();
extern void _ZN7S5245C93v19Ev();
extern void _ZN7S5245C93v20Ev();
extern void _ZN7S5245C93v21Ev();
static  VTBL_ENTRY vtc_S5245C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5245C9[0]),
  (VTBL_ENTRY)&_ZN7S5245C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5245C9D0Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v12Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v13Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v14Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v15Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v16Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v17Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v18Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v19Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v20Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v21Ev,
};
extern VTBL_ENTRY _ZTI7S5245C9[];
extern  VTBL_ENTRY _ZTV7S5245C9[];
Class_Descriptor cd_S5245C9 = {  "S5245C9", // class name
  bases_S5245C9, 1,
  &(vtc_S5245C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI7S5245C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5245C9),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5245C8  : S5245C9 {
  ::S7075C15 s5245c8f0;
  void *s5245c8f1;
  int s5245c8f2;
  virtual void  v22(); // _ZN7S5245C83v22Ev
  virtual void  v23(); // _ZN7S5245C83v23Ev
  virtual void  v24(); // _ZN7S5245C83v24Ev
  virtual void  v25(); // _ZN7S5245C83v25Ev
  ~S5245C8(); // tgen
  S5245C8(); // tgen
};
//SIG(-1 S5245C8) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[3]} Fi:1} v12 v13 v14 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 v3 v4 FC10{ FC11{ m Fp Fc[3] Fi} FC11 FC11} Fp Fi}


void  S5245C8 ::v22(){vfunc_called(this, "_ZN7S5245C83v22Ev");}
void  S5245C8 ::v23(){vfunc_called(this, "_ZN7S5245C83v23Ev");}
void  S5245C8 ::v24(){vfunc_called(this, "_ZN7S5245C83v24Ev");}
void  S5245C8 ::v25(){vfunc_called(this, "_ZN7S5245C83v25Ev");}
S5245C8 ::~S5245C8(){ note_dtor("S5245C8", this);} // tgen
S5245C8 ::S5245C8(){ note_ctor("S5245C8", this);} // tgen

static void Test_S5245C8()
{
  extern Class_Descriptor cd_S5245C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(87,124)];
    init_test(&cd_S5245C8, buf);
    S5245C8 *dp, &lv = *(dp=new (buf) S5245C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,492), "sizeof(S5245C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C8)");
    check_base_class_offset(lv, (S5245C10*)(S5245C9*), 0, "S5245C8");
    check_base_class_offset(lv, (S5245C9*), 0, "S5245C8");
    check_field_offset(lv, s5245c8f0, ABISELECT(624,448), "S5245C8.s5245c8f0");
    check_field_offset(lv, s5245c8f1, ABISELECT(672,484), "S5245C8.s5245c8f1");
    check_field_offset(lv, s5245c8f2, ABISELECT(680,488), "S5245C8.s5245c8f2");
    test_class_info(&lv, &cd_S5245C8);
    dp->~S5245C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C8(Test_S5245C8, "S5245C8", ABISELECT(688,492));

#else // __cplusplus

extern void _ZN7S5245C8C1Ev();
extern void _ZN7S5245C8D1Ev();
Name_Map name_map_S5245C8[] = {
  NSPAIR(_ZN7S5245C8C1Ev),
  NSPAIR(_ZN7S5245C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5245C10;
extern VTBL_ENTRY _ZTI8S5245C10[];
extern  VTBL_ENTRY _ZTV8S5245C10[];
extern Class_Descriptor cd_S5245C9;
extern VTBL_ENTRY _ZTI7S5245C9[];
extern  VTBL_ENTRY _ZTV7S5245C9[];
static Base_Class bases_S5245C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5245C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5245C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5245C8[];
extern void _ZN7S5245C8D1Ev();
extern void _ZN7S5245C8D0Ev();
extern void _ZN8S5245C103v12Ev();
extern void _ZN8S5245C103v13Ev();
extern void _ZN8S5245C103v14Ev();
extern void _ZN8S5245C103v15Ev();
extern void _ZN8S5245C103v16Ev();
extern void _ZN8S5245C103v17Ev();
extern void _ZN8S5245C103v18Ev();
extern void _ZN7S5245C93v19Ev();
extern void _ZN7S5245C93v20Ev();
extern void _ZN7S5245C93v21Ev();
extern void _ZN7S5245C83v22Ev();
extern void _ZN7S5245C83v23Ev();
extern void _ZN7S5245C83v24Ev();
extern void _ZN7S5245C83v25Ev();
static  VTBL_ENTRY vtc_S5245C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5245C8[0]),
  (VTBL_ENTRY)&_ZN7S5245C8D1Ev,
  (VTBL_ENTRY)&_ZN7S5245C8D0Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v12Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v13Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v14Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v15Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v16Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v17Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v18Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v19Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v20Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v21Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v22Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v23Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v24Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v25Ev,
};
extern VTBL_ENTRY _ZTI7S5245C8[];
extern  VTBL_ENTRY _ZTV7S5245C8[];
Class_Descriptor cd_S5245C8 = {  "S5245C8", // class name
  bases_S5245C8, 2,
  &(vtc_S5245C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(688,492), // object size
  NSPAIRA(_ZTI7S5245C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5245C8),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5245C7  : S5245C8 {
  ::S5244C20 s5245c7f0;
  virtual void  v26(); // _ZN7S5245C73v26Ev
  virtual void  v27(); // _ZN7S5245C73v27Ev
  virtual void  v28(); // _ZN7S5245C73v28Ev
  ~S5245C7(); // tgen
  S5245C7(); // tgen
};
//SIG(-1 S5245C7) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 FC5{ m Fp[3]} Fi:1} v11 v12 v13 FC6{ m FC7{ Fp Fi[2]}[16] Fi} FC6 FC8{ m Fp} FC8 FC8 FC8 FC8 FC9{ m FC10{ Fc[3] Fi} Fi[2]}} v14 v15 v16 v17 FC11{ FC12{ m Fp Fc[3] Fi} FC12 FC12} Fp Fi} v1 v2 v3 FC13{ BC11 FC12}}


void  S5245C7 ::v26(){vfunc_called(this, "_ZN7S5245C73v26Ev");}
void  S5245C7 ::v27(){vfunc_called(this, "_ZN7S5245C73v27Ev");}
void  S5245C7 ::v28(){vfunc_called(this, "_ZN7S5245C73v28Ev");}
S5245C7 ::~S5245C7(){ note_dtor("S5245C7", this);} // tgen
S5245C7 ::S5245C7(){ note_ctor("S5245C7", this);} // tgen

static void Test_S5245C7()
{
  extern Class_Descriptor cd_S5245C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(95,136)];
    init_test(&cd_S5245C7, buf);
    S5245C7 *dp, &lv = *(dp=new (buf) S5245C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,540), "sizeof(S5245C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C7)");
    check_base_class_offset(lv, (S5245C10*)(S5245C9*)(S5245C8*), 0, "S5245C7");
    check_base_class_offset(lv, (S5245C9*)(S5245C8*), 0, "S5245C7");
    check_base_class_offset(lv, (S5245C8*), 0, "S5245C7");
    check_field_offset(lv, s5245c7f0, ABISELECT(688,492), "S5245C7.s5245c7f0");
    test_class_info(&lv, &cd_S5245C7);
    dp->~S5245C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C7(Test_S5245C7, "S5245C7", ABISELECT(752,540));

#else // __cplusplus

extern void _ZN7S5245C7C1Ev();
extern void _ZN7S5245C7D1Ev();
Name_Map name_map_S5245C7[] = {
  NSPAIR(_ZN7S5245C7C1Ev),
  NSPAIR(_ZN7S5245C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5245C10;
extern VTBL_ENTRY _ZTI8S5245C10[];
extern  VTBL_ENTRY _ZTV8S5245C10[];
extern Class_Descriptor cd_S5245C9;
extern VTBL_ENTRY _ZTI7S5245C9[];
extern  VTBL_ENTRY _ZTV7S5245C9[];
extern Class_Descriptor cd_S5245C8;
extern VTBL_ENTRY _ZTI7S5245C8[];
extern  VTBL_ENTRY _ZTV7S5245C8[];
static Base_Class bases_S5245C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5245C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5245C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5245C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5245C7[];
extern void _ZN7S5245C7D1Ev();
extern void _ZN7S5245C7D0Ev();
extern void _ZN8S5245C103v12Ev();
extern void _ZN8S5245C103v13Ev();
extern void _ZN8S5245C103v14Ev();
extern void _ZN8S5245C103v15Ev();
extern void _ZN8S5245C103v16Ev();
extern void _ZN8S5245C103v17Ev();
extern void _ZN8S5245C103v18Ev();
extern void _ZN7S5245C93v19Ev();
extern void _ZN7S5245C93v20Ev();
extern void _ZN7S5245C93v21Ev();
extern void _ZN7S5245C83v22Ev();
extern void _ZN7S5245C83v23Ev();
extern void _ZN7S5245C83v24Ev();
extern void _ZN7S5245C83v25Ev();
extern void _ZN7S5245C73v26Ev();
extern void _ZN7S5245C73v27Ev();
extern void _ZN7S5245C73v28Ev();
static  VTBL_ENTRY vtc_S5245C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5245C7[0]),
  (VTBL_ENTRY)&_ZN7S5245C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5245C7D0Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v12Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v13Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v14Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v15Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v16Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v17Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v18Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v19Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v20Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v21Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v22Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v23Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v24Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v25Ev,
  (VTBL_ENTRY)&_ZN7S5245C73v26Ev,
  (VTBL_ENTRY)&_ZN7S5245C73v27Ev,
  (VTBL_ENTRY)&_ZN7S5245C73v28Ev,
};
extern VTBL_ENTRY _ZTI7S5245C7[];
extern  VTBL_ENTRY _ZTV7S5245C7[];
Class_Descriptor cd_S5245C7 = {  "S5245C7", // class name
  bases_S5245C7, 3,
  &(vtc_S5245C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(752,540), // object size
  NSPAIRA(_ZTI7S5245C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5245C7),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  S5245C1  : S5245C2 , S5245C7 {
  virtual void  v1(); // _ZN7S5245C12v1Ev
  virtual void  v2(); // _ZN7S5245C12v2Ev
  virtual void  v3(); // _ZN7S5245C12v3Ev
  virtual void  v4(); // _ZN7S5245C12v4Ev
  ~S5245C1(); // tgen
  S5245C1(); // tgen
};
//SIG(1 S5245C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 FC4{ m} FC5{ m Fi[3]} FC6{ m Fi[2]} FC5 FC5} vd v11} BC7{ BC8{ BC9{ BC10{ vd v12 v13 v14 v15 v16 v17 v18 FC11{ m Fp[3]} Fi:1} v19 v20 v21 FC12{ m FC13{ Fp Fi[2]}[16] Fi} FC12 FC14{ m Fp} FC14 FC14 FC14 FC14 FC15{ m FC16{ Fc[3] Fi} Fi[2]}} v22 v23 v24 v25 FC17{ FC18{ m Fp Fc[3] Fi} FC18 FC18} Fp Fi} v26 v27 v28 FC19{ BC17 FC18}} v1 v2 v3 v4}


void  S5245C1 ::v1(){vfunc_called(this, "_ZN7S5245C12v1Ev");}
void  S5245C1 ::v2(){vfunc_called(this, "_ZN7S5245C12v2Ev");}
void  S5245C1 ::v3(){vfunc_called(this, "_ZN7S5245C12v3Ev");}
void  S5245C1 ::v4(){vfunc_called(this, "_ZN7S5245C12v4Ev");}
S5245C1 ::~S5245C1(){ note_dtor("S5245C1", this);} // tgen
S5245C1 ::S5245C1(){ note_ctor("S5245C1", this);} // tgen

static void Test_S5245C1()
{
  extern Class_Descriptor cd_S5245C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(102,149)];
    init_test(&cd_S5245C1, buf);
    S5245C1 *dp, &lv = *(dp=new (buf) S5245C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(808,592), "sizeof(S5245C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5245C1)");
    check_base_class_offset(lv, (S5245C3*)(S5245C2*), 0, "S5245C1");
    check_base_class_offset(lv, (S5245C2*), 0, "S5245C1");
    check_base_class_offset(lv, (S5245C10*)(S5245C9*)(S5245C8*)(S5245C7*), ABISELECT(56,52), "S5245C1");
    check_base_class_offset(lv, (S5245C9*)(S5245C8*)(S5245C7*), ABISELECT(56,52), "S5245C1");
    check_base_class_offset(lv, (S5245C8*)(S5245C7*), ABISELECT(56,52), "S5245C1");
    check_base_class_offset(lv, (S5245C7*), ABISELECT(56,52), "S5245C1");
    test_class_info(&lv, &cd_S5245C1);
    dp->~S5245C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5245C1(Test_S5245C1, "S5245C1", ABISELECT(808,592));

#else // __cplusplus

extern void _ZN7S5245C1C1Ev();
extern void _ZN7S5245C1D1Ev();
Name_Map name_map_S5245C1[] = {
  NSPAIR(_ZN7S5245C1C1Ev),
  NSPAIR(_ZN7S5245C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5245C3;
extern VTBL_ENTRY _ZTI7S5245C3[];
extern  VTBL_ENTRY _ZTV7S5245C3[];
extern Class_Descriptor cd_S5245C2;
extern VTBL_ENTRY _ZTI7S5245C2[];
extern  VTBL_ENTRY _ZTV7S5245C2[];
extern Class_Descriptor cd_S5245C10;
extern VTBL_ENTRY _ZTI8S5245C10[];
extern  VTBL_ENTRY _ZTV8S5245C10[];
extern Class_Descriptor cd_S5245C9;
extern VTBL_ENTRY _ZTI7S5245C9[];
extern  VTBL_ENTRY _ZTV7S5245C9[];
extern Class_Descriptor cd_S5245C8;
extern VTBL_ENTRY _ZTI7S5245C8[];
extern  VTBL_ENTRY _ZTV7S5245C8[];
extern Class_Descriptor cd_S5245C7;
extern VTBL_ENTRY _ZTI7S5245C7[];
extern  VTBL_ENTRY _ZTV7S5245C7[];
static Base_Class bases_S5245C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5245C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5245C10,    ABISELECT(56,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5245C9,    ABISELECT(56,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
    4, //immediately_derived
  0, 0},
  {&cd_S5245C8,    ABISELECT(56,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S5245C7,    ABISELECT(56,52), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5245C1[];
extern void _ZN7S5245C1D1Ev();
extern void _ZN7S5245C1D0Ev();
extern void _ZN7S5245C32v5Ev();
extern void _ZN7S5245C32v6Ev();
extern void _ZN7S5245C32v7Ev();
extern void _ZN7S5245C32v8Ev();
extern void _ZN7S5245C32v9Ev();
extern void _ZN7S5245C33v10Ev();
extern void _ZN7S5245C23v11Ev();
extern void _ZN7S5245C12v1Ev();
extern void _ZN7S5245C12v2Ev();
extern void _ZN7S5245C12v3Ev();
extern void _ZN7S5245C12v4Ev();
extern void ABISELECT(_ZThn56_N7S5245C1D1Ev,_ZThn52_N7S5245C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S5245C1D0Ev,_ZThn52_N7S5245C1D0Ev)();
extern void _ZN8S5245C103v12Ev();
extern void _ZN8S5245C103v13Ev();
extern void _ZN8S5245C103v14Ev();
extern void _ZN8S5245C103v15Ev();
extern void _ZN8S5245C103v16Ev();
extern void _ZN8S5245C103v17Ev();
extern void _ZN8S5245C103v18Ev();
extern void _ZN7S5245C93v19Ev();
extern void _ZN7S5245C93v20Ev();
extern void _ZN7S5245C93v21Ev();
extern void _ZN7S5245C83v22Ev();
extern void _ZN7S5245C83v23Ev();
extern void _ZN7S5245C83v24Ev();
extern void _ZN7S5245C83v25Ev();
extern void _ZN7S5245C73v26Ev();
extern void _ZN7S5245C73v27Ev();
extern void _ZN7S5245C73v28Ev();
static  VTBL_ENTRY vtc_S5245C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5245C1[0]),
  (VTBL_ENTRY)&_ZN7S5245C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5245C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5245C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5245C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5245C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5245C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5245C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5245C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5245C12v4Ev,
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI7S5245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5245C1D1Ev,_ZThn52_N7S5245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5245C1D0Ev,_ZThn52_N7S5245C1D0Ev),
  (VTBL_ENTRY)&_ZN8S5245C103v12Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v13Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v14Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v15Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v16Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v17Ev,
  (VTBL_ENTRY)&_ZN8S5245C103v18Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v19Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v20Ev,
  (VTBL_ENTRY)&_ZN7S5245C93v21Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v22Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v23Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v24Ev,
  (VTBL_ENTRY)&_ZN7S5245C83v25Ev,
  (VTBL_ENTRY)&_ZN7S5245C73v26Ev,
  (VTBL_ENTRY)&_ZN7S5245C73v27Ev,
  (VTBL_ENTRY)&_ZN7S5245C73v28Ev,
};
extern VTBL_ENTRY _ZTI7S5245C1[];
extern  VTBL_ENTRY _ZTV7S5245C1[];
Class_Descriptor cd_S5245C1 = {  "S5245C1", // class name
  bases_S5245C1, 6,
  &(vtc_S5245C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(808,592), // object size
  NSPAIRA(_ZTI7S5245C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5245C1),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S19584C7C1Ev();
extern void _ZN8S19584C7D1Ev();
Name_Map name_map_S19584C7[] = {
  NSPAIR(_ZN8S19584C7C1Ev),
  NSPAIR(_ZN8S19584C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19584C7[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C7[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
Class_Descriptor cd_S19584C7 = {  "S19584C7", // class name
  0,0,//no base classes
  &(vtc_S19584C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19584C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19584C7),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  S19584C5  : virtual S19894C34 , virtual S19584C7 {
  ::S19584C7 s19584c5f0;
  ~S19584C5(); // tgen
  S19584C5(); // tgen
};
//SIG(-1 S19584C5) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S19584C5()
{
  extern Class_Descriptor cd_S19584C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19584C5, buf);
    S19584C5 *dp, &lv = *(dp=new (buf) S19584C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19584C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19584C5");
    check_base_class_offset(lv, (S19584C7*), 0, "S19584C5");
    check_field_offset(lv, s19584c5f0, ABISELECT(8,4), "S19584C5.s19584c5f0");
    test_class_info(&lv, &cd_S19584C5);
    dp->~S19584C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C5(Test_S19584C5, "S19584C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19584C5C1Ev();
extern void _ZN8S19584C5D1Ev();
Name_Map name_map_S19584C5[] = {
  NSPAIR(_ZN8S19584C5C1Ev),
  NSPAIR(_ZN8S19584C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
static Base_Class bases_S19584C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C7,    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 _ZTI8S19584C5[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19584C5[];
static  VTT_ENTRY vtt_S19584C5[] = {
  {&(_ZTV8S19584C5[5]),  5,6},
  {&(_ZTV8S19584C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
Class_Descriptor cd_S19584C5 = {  "S19584C5", // class name
  bases_S19584C5, 2,
  &(vtc_S19584C5[0]), // expected_vtbl_contents
  &(vtt_S19584C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19584C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19584C5),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19584C5),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  S19584C8  : S19584C7 , S19894C6_nt , virtual S19584C5 {
  virtual void  v2(); // _ZN8S19584C82v2Ev
  ~S19584C8(); // tgen
  S19584C8(); // tgen
};
//SIG(-1 S19584C8) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S19584C8()
{
  extern Class_Descriptor cd_S19584C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19584C8, buf);
    S19584C8 *dp, &lv = *(dp=new (buf) S19584C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19584C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C8)");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*), 0, "S19584C8");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19584C8");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C8");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(16,8), "S19584C8");
    check_base_class_offset(lv, (S19584C5*), ABISELECT(16,8), "S19584C8");
    test_class_info(&lv, &cd_S19584C8);
    dp->~S19584C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C8(Test_S19584C8, "S19584C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19584C8C1Ev();
extern void _ZN8S19584C8D1Ev();
Name_Map name_map_S19584C8[] = {
  NSPAIR(_ZN8S19584C8C1Ev),
  NSPAIR(_ZN8S19584C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
static Base_Class bases_S19584C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19584C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S19584C8[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C8[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19584C8[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C8[] = {
  {&(_ZTV8S19584C8[5]),  5,13},
  {&(_ZTV8S19584C8[12]),  12,13},
  {&(_ZTV8S19584C8[12]),  12,13},
  {&(_tg__ZTV8S19584C5__8S19584C8[5]),  5,6},
  {&(_tg__ZTV8S19584C5__8S19584C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
Class_Descriptor cd_S19584C8 = {  "S19584C8", // class name
  bases_S19584C8, 5,
  &(vtc_S19584C8[0]), // expected_vtbl_contents
  &(vtt_S19584C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19584C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19584C8),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19584C8),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C4  : virtual S19584C5 , virtual S19584C8 {
  ~S19584C4(); // tgen
  S19584C4(); // tgen
};
//SIG(-1 S19584C4) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S19584C4()
{
  extern Class_Descriptor cd_S19584C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19584C4, buf);
    S19584C4 *dp, &lv = *(dp=new (buf) S19584C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19584C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C4)");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C4");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*), 0, "S19584C4");
    check_base_class_offset(lv, (S19584C5*), ABISELECT(8,4), "S19584C4");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(8,4), "S19584C4");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(24,12), "S19584C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(32,16), "S19584C4");
    check_base_class_offset(lv, (S19584C8*), ABISELECT(24,12), "S19584C4");
    test_class_info(&lv, &cd_S19584C4);
    dp->~S19584C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C4(Test_S19584C4, "S19584C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19584C4C1Ev();
extern void _ZN8S19584C4D1Ev();
Name_Map name_map_S19584C4[] = {
  NSPAIR(_ZN8S19584C4C1Ev),
  NSPAIR(_ZN8S19584C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
static Base_Class bases_S19584C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19584C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19584C4[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY vtc_S19584C4[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19584C4[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__8S19584C4[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__8S19584C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__8S19584C4[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C4[] = {
  {&(_ZTV8S19584C4[7]),  7,23},
  {&(_ZTV8S19584C4[13]),  13,23},
  {&(_ZTV8S19584C4[7]),  7,23},
  {&(_ZTV8S19584C4[21]),  21,23},
  {&(_tg__ZTV8S19584C5__8S19584C4[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__8S19584C4[3]),  3,4},
  {&(_tg__ZTV8S19584C8__8S19584C4[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__8S19584C4[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__8S19584C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19584C4[];
extern  VTBL_ENTRY _ZTV8S19584C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C4[];
Class_Descriptor cd_S19584C4 = {  "S19584C4", // class name
  bases_S19584C4, 6,
  &(vtc_S19584C4[0]), // expected_vtbl_contents
  &(vtt_S19584C4[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19584C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19584C4),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19584C4),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C11  : virtual S19894C34 , virtual S19894C6_nt {
  ~S19584C11(); // tgen
  S19584C11(); // tgen
};
//SIG(-1 S19584C11) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S19584C11()
{
  extern Class_Descriptor cd_S19584C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19584C11, buf);
    S19584C11 *dp, &lv = *(dp=new (buf) S19584C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19584C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C11)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19584C11");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19584C11");
    test_class_info(&lv, &cd_S19584C11);
    dp->~S19584C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C11(Test_S19584C11, "S19584C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19584C11C1Ev();
extern void _ZN9S19584C11D1Ev();
Name_Map name_map_S19584C11[] = {
  NSPAIR(_ZN9S19584C11C1Ev),
  NSPAIR(_ZN9S19584C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19584C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19584C11[];
static  VTBL_ENTRY vtc_S19584C11[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C11[0]),
};
extern VTBL_ENTRY _ZTV9S19584C11[];
static  VTT_ENTRY vtt_S19584C11[] = {
  {&(_ZTV9S19584C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19584C11[];
extern  VTBL_ENTRY _ZTV9S19584C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C11[];
Class_Descriptor cd_S19584C11 = {  "S19584C11", // class name
  bases_S19584C11, 2,
  &(vtc_S19584C11[0]), // expected_vtbl_contents
  &(vtt_S19584C11[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19584C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19584C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C11),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  S19584C3  : virtual S19584C4 , S19584C5 , S19894C34 , S19894C17_nt , S19584C11 {
  virtual  ~S19584C3(); // _ZN8S19584C3D2Ev
  S19584C3(); // tgen
};
//SIG(-1 S19584C3) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S19584C3()
{
  extern Class_Descriptor cd_S19584C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19584C3, buf);
    S19584C3 *dp, &lv = *(dp=new (buf) S19584C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19584C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C3)");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), ABISELECT(48,24), "S19584C3");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), ABISELECT(48,24), "S19584C3");
    check_base_class_offset(lv, (S19894C34*)(S19584C11*), ABISELECT(48,24), "S19584C3");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(24,12), "S19584C3");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(24,12), "S19584C3");
    check_base_class_offset(lv, (S19584C5*)(S19584C4*), ABISELECT(32,16), "S19584C3");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(32,16), "S19584C3");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(48,24), "S19584C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(56,28), "S19584C3");
    check_base_class_offset(lv, (S19584C8*)(S19584C4*), ABISELECT(48,24), "S19584C3");
    check_base_class_offset(lv, (S19584C4*), ABISELECT(24,12), "S19584C3");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*), 0, "S19584C3");
    /*is_ambiguous_... S19584C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19584C3");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19584C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C11*), ABISELECT(64,32), "S19584C3");
    check_base_class_offset(lv, (S19584C11*), ABISELECT(16,8), "S19584C3");
    test_class_info(&lv, &cd_S19584C3);
    dp->~S19584C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C3(Test_S19584C3, "S19584C3", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S19584C3C1Ev();
extern void _ZN8S19584C3D2Ev();
Name_Map name_map_S19584C3[] = {
  NSPAIR(_ZN8S19584C3C1Ev),
  NSPAIR(_ZN8S19584C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C4;
extern VTBL_ENTRY _ZTI8S19584C4[];
extern  VTBL_ENTRY _ZTV8S19584C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C4[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C11;
extern VTBL_ENTRY _ZTI9S19584C11[];
extern  VTBL_ENTRY _ZTV9S19584C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C11[];
static Base_Class bases_S19584C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19584C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19584C4,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19584C11,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI8S19584C3[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C3D1Ev();
extern void _ZN8S19584C3D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY vtc_S19584C3[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19584C3D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19584C3[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A__8S19584C3[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__A__8S19584C3[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C11__8S19584C3[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C11[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__8S19584C3[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C4__8S19584C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C4__8S19584C3[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__8S19584C3[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C3[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__8S19584C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__8S19584C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C3[] = {
  {&(_ZTV8S19584C3[9]),  9,39},
  {&(_tg__ZTV8S19584C5__A__8S19584C3[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__A__8S19584C3[3]),  3,4},
  {&(_tg__ZTV9S19584C11__8S19584C3[4]),  4,4},
  {&(_ZTV8S19584C3[23]),  23,39},
  {&(_ZTV8S19584C3[29]),  29,39},
  {&(_ZTV8S19584C3[23]),  23,39},
  {&(_ZTV8S19584C3[37]),  37,39},
  {&(_ZTV8S19584C3[16]),  16,39},
  {&(_tg__ZTV8S19584C4__8S19584C3[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C4__8S19584C3[5]),  5,6},
  {&(_tg__ZTV8S19584C4__8S19584C3[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C4__8S19584C3[7]),  7,9},
  {&(_tg__ZTV8S19584C5__8S19584C3[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__8S19584C3[3]),  3,4},
  {&(_tg__ZTV8S19584C8__8S19584C3[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__8S19584C3[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__8S19584C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19584C3[];
extern  VTBL_ENTRY _ZTV8S19584C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C3[];
Class_Descriptor cd_S19584C3 = {  "S19584C3", // class name
  bases_S19584C3, 12,
  &(vtc_S19584C3[0]), // expected_vtbl_contents
  &(vtt_S19584C3[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S19584C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19584C3),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19584C3),18, //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  S19584C2  : S19584C3 {
  int s19584c2f0;
  virtual  ~S19584C2(); // _ZN8S19584C2D2Ev
  S19584C2(); // tgen
};
//SIG(-1 S19584C2) C1{ BC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC6 BC8{ m Fp} VBC4 v2}} BC4 BC5 BC9{ m} BC10{ VBC5 VBC8} vd} vd Fi}


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

static void Test_S19584C2()
{
  extern Class_Descriptor cd_S19584C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19584C2, buf);
    S19584C2 *dp, &lv = *(dp=new (buf) S19584C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19584C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C2)");
    /*is_ambiguous_... S19584C2::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), ABISELECT(56,28), "S19584C2");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C3*), ABISELECT(56,28), "S19584C2");
    check_base_class_offset(lv, (S19894C34*)(S19584C11*)(S19584C3*), ABISELECT(56,28), "S19584C2");
    /*is_ambiguous_... S19584C2::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(32,16), "S19584C2");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C3*), ABISELECT(32,16), "S19584C2");
    check_base_class_offset(lv, (S19584C5*)(S19584C4*), ABISELECT(40,20), "S19584C2");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(40,20), "S19584C2");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(56,28), "S19584C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(64,32), "S19584C2");
    check_base_class_offset(lv, (S19584C8*)(S19584C4*), ABISELECT(56,28), "S19584C2");
    check_base_class_offset(lv, (S19584C4*)(S19584C3*), ABISELECT(32,16), "S19584C2");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C3*), 0, "S19584C2");
    /*is_ambiguous_... S19584C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C3*), 0, "S19584C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C3*), 0, "S19584C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C11*)(S19584C3*), ABISELECT(72,36), "S19584C2");
    check_base_class_offset(lv, (S19584C11*)(S19584C3*), ABISELECT(16,8), "S19584C2");
    check_base_class_offset(lv, (S19584C3*), 0, "S19584C2");
    check_field_offset(lv, s19584c2f0, ABISELECT(24,12), "S19584C2.s19584c2f0");
    test_class_info(&lv, &cd_S19584C2);
    dp->~S19584C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C2(Test_S19584C2, "S19584C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19584C2C1Ev();
extern void _ZN8S19584C2D2Ev();
Name_Map name_map_S19584C2[] = {
  NSPAIR(_ZN8S19584C2C1Ev),
  NSPAIR(_ZN8S19584C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C4;
extern VTBL_ENTRY _ZTI8S19584C4[];
extern  VTBL_ENTRY _ZTV8S19584C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C4[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C11;
extern VTBL_ENTRY _ZTI9S19584C11[];
extern  VTBL_ENTRY _ZTV9S19584C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C11[];
extern Class_Descriptor cd_S19584C3;
extern VTBL_ENTRY _ZTI8S19584C3[];
extern  VTBL_ENTRY _ZTV8S19584C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C3[];
static Base_Class bases_S19584C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(40,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(56,28), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19584C4,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19584C11,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19584C3,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19584C2[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C2D1Ev();
extern void _ZN8S19584C2D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY vtc_S19584C2[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19584C2D0Ev,
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19584C2[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C3D1Ev();
extern void _ZN8S19584C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C3__8S19584C2[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19584C3D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C58S19584C3__A1__8S19584C2[] = {
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C58S19584C3__A1__8S19584C2[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C118S19584C3__8S19584C2[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C11[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__8S19584C3__8S19584C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C3__8S19584C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C3__8S19584C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C11__8S19584C3__8S19584C2[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__8S19584C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C4__8S19584C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C4__8S19584C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__8S19584C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C2[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__8S19584C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__8S19584C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C2[] = {
  {&(_ZTV8S19584C2[9]),  9,39},
  {&(_tg__ZTV8S19584C3__8S19584C2[9]),  9,12},
  {&(_tg__ZTV8S19584C58S19584C3__A1__8S19584C2[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C58S19584C3__A1__8S19584C2[3]),  3,4},
  {&(_tg__ZTV9S19584C118S19584C3__8S19584C2[4]),  4,4},
  {&(_tg__ZTV8S19584C4__8S19584C3__8S19584C2[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C3__8S19584C2[5]),  5,6},
  {&(_tg__ZTV8S19584C4__8S19584C3__8S19584C2[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C3__8S19584C2[7]),  7,9},
  {&(_tg__ZTV9S19584C11__8S19584C3__8S19584C2[4]),  4,4},
  {&(_ZTV8S19584C2[23]),  23,39},
  {&(_ZTV8S19584C2[29]),  29,39},
  {&(_ZTV8S19584C2[23]),  23,39},
  {&(_ZTV8S19584C2[37]),  37,39},
  {&(_ZTV8S19584C2[16]),  16,39},
  {&(_tg__ZTV8S19584C4__8S19584C2[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C4__8S19584C2[5]),  5,6},
  {&(_tg__ZTV8S19584C4__8S19584C2[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C4__8S19584C2[7]),  7,9},
  {&(_tg__ZTV8S19584C5__8S19584C2[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__8S19584C2[3]),  3,4},
  {&(_tg__ZTV8S19584C8__8S19584C2[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__8S19584C2[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__8S19584C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19584C2[];
extern  VTBL_ENTRY _ZTV8S19584C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C2[];
Class_Descriptor cd_S19584C2 = {  "S19584C2", // class name
  bases_S19584C2, 13,
  &(vtc_S19584C2[0]), // expected_vtbl_contents
  &(vtt_S19584C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19584C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19584C2),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19584C2),24, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C12  : S19584C5 , virtual S19894C6_nt , S19584C8 {
  int s19584c12f0;
  ~S19584C12(); // tgen
  S19584C12(); // tgen
};
//SIG(-1 S19584C12) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S19584C12()
{
  extern Class_Descriptor cd_S19584C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S19584C12, buf);
    S19584C12 *dp, &lv = *(dp=new (buf) S19584C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19584C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C12)");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C12");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C12");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), 0, "S19584C12");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), 0, "S19584C12");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*), 0, "S19584C12");
    /*is_ambiguous_... S19584C12::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S19584C12");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(16,8), "S19584C12");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(24,12), "S19584C12");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(48,24), "S19584C12");
    check_base_class_offset(lv, (S19584C8*), ABISELECT(16,8), "S19584C12");
    check_field_offset(lv, s19584c12f0, ABISELECT(32,16), "S19584C12.s19584c12f0");
    test_class_info(&lv, &cd_S19584C12);
    dp->~S19584C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C12(Test_S19584C12, "S19584C12", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S19584C12C1Ev();
extern void _ZN9S19584C12D1Ev();
Name_Map name_map_S19584C12[] = {
  NSPAIR(_ZN9S19584C12C1Ev),
  NSPAIR(_ZN9S19584C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
static Base_Class bases_S19584C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19584C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C7,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19584C5,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19584C8,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C12[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C12[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C12[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A__9S19584C12[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__9S19584C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__9S19584C12[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A1__9S19584C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__A1__9S19584C12[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C12[] = {
  {&(_ZTV9S19584C12[7]),  7,21},
  {&(_tg__ZTV8S19584C5__A__9S19584C12[5]),  5,6},
  {&(_tg__ZTV8S19584C5__A__9S19584C12[5]),  5,6},
  {&(_tg__ZTV8S19584C8__9S19584C12[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__9S19584C12[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__9S19584C12[3]),  3,4},
  {&(_ZTV9S19584C12[7]),  7,21},
  {&(_ZTV9S19584C12[13]),  13,21},
  {&(_ZTV9S19584C12[20]),  20,21},
  {&(_tg__ZTV8S19584C5__A1__9S19584C12[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__A1__9S19584C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19584C12[];
extern  VTBL_ENTRY _ZTV9S19584C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C12[];
Class_Descriptor cd_S19584C12 = {  "S19584C12", // class name
  bases_S19584C12, 8,
  &(vtc_S19584C12[0]), // expected_vtbl_contents
  &(vtt_S19584C12[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S19584C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19584C12),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C12),11, //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  S19584C16  : S19584C5 , S19894C34 , S19584C7 {
  virtual  ~S19584C16(); // _ZN9S19584C16D2Ev
  S19584C16(); // tgen
};
//SIG(-1 S19584C16) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S19584C16()
{
  extern Class_Descriptor cd_S19584C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19584C16, buf);
    S19584C16 *dp, &lv = *(dp=new (buf) S19584C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19584C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C16)");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*), ABISELECT(24,12), "S19584C16");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*), 0, "S19584C16");
    check_base_class_offset(lv, (S19584C5*), 0, "S19584C16");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19584C16");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*), ABISELECT(16,8), "S19584C16");
    test_class_info(&lv, &cd_S19584C16);
    dp->~S19584C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C16(Test_S19584C16, "S19584C16", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19584C16C1Ev();
extern void _ZN9S19584C16D2Ev();
Name_Map name_map_S19584C16[] = {
  NSPAIR(_ZN9S19584C16C1Ev),
  NSPAIR(_ZN9S19584C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
static Base_Class bases_S19584C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19584C7,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C16[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C16[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C16[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C16[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C16[] = {
  {&(_ZTV9S19584C16[5]),  5,11},
  {&(_tg__ZTV8S19584C5__9S19584C16[5]),  5,6},
  {&(_tg__ZTV8S19584C5__9S19584C16[5]),  5,6},
  {&(_ZTV9S19584C16[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
Class_Descriptor cd_S19584C16 = {  "S19584C16", // class name
  bases_S19584C16, 5,
  &(vtc_S19584C16[0]), // expected_vtbl_contents
  &(vtt_S19584C16[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19584C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19584C16),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C16),4, //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  S19584C15  : S19584C16 {
  ~S19584C15(); // tgen
  S19584C15(); // tgen
};
//SIG(-1 S19584C15) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S19584C15()
{
  extern Class_Descriptor cd_S19584C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19584C15, buf);
    S19584C15 *dp, &lv = *(dp=new (buf) S19584C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19584C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C15)");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*), ABISELECT(24,12), "S19584C15");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*), 0, "S19584C15");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*), 0, "S19584C15");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*), 0, "S19584C15");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*), ABISELECT(16,8), "S19584C15");
    check_base_class_offset(lv, (S19584C16*), 0, "S19584C15");
    test_class_info(&lv, &cd_S19584C15);
    dp->~S19584C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C15(Test_S19584C15, "S19584C15", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19584C15C1Ev();
extern void _ZN9S19584C15D1Ev();
Name_Map name_map_S19584C15[] = {
  NSPAIR(_ZN9S19584C15C1Ev),
  NSPAIR(_ZN9S19584C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
static Base_Class bases_S19584C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19584C7,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C15[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C15D1Ev();
extern void _ZN9S19584C15D0Ev();
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C15[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C15[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C15[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C16__9S19584C15[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C15[] = {
  {&(_ZTV9S19584C15[5]),  5,11},
  {&(_tg__ZTV9S19584C16__9S19584C15[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C16__9S19584C15[5]),  5,6},
  {&(_tg__ZTV8S19584C59S19584C16__9S19584C15[5]),  5,6},
  {&(_tg__ZTV9S19584C16__9S19584C15[5]),  5,8},
  {&(_ZTV9S19584C15[5]),  5,11},
};
extern VTBL_ENTRY _ZTI9S19584C15[];
extern  VTBL_ENTRY _ZTV9S19584C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C15[];
Class_Descriptor cd_S19584C15 = {  "S19584C15", // class name
  bases_S19584C15, 6,
  &(vtc_S19584C15[0]), // expected_vtbl_contents
  &(vtt_S19584C15[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19584C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19584C15),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C15),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  S19584C14  : S19894C6_nt , S19894C17_nt , virtual S19584C5 , virtual S19584C15 {
  ~S19584C14(); // tgen
  S19584C14(); // tgen
};
//SIG(-1 S19584C14) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S19584C14()
{
  extern Class_Descriptor cd_S19584C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19584C14, buf);
    S19584C14 *dp, &lv = *(dp=new (buf) S19584C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19584C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C14)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19584C14");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19584C14");
    /*is_ambiguous_... S19584C14::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C14");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*)(S19584C15*), 0, "S19584C14");
    /*is_ambiguous_... S19584C14::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), 0, "S19584C14");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*)(S19584C15*), 0, "S19584C14");
    /*is_ambiguous_... S19584C14::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*), ABISELECT(16,8), "S19584C14");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*)(S19584C15*), ABISELECT(32,16), "S19584C14");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*)(S19584C15*), ABISELECT(32,16), "S19584C14");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*)(S19584C15*), ABISELECT(48,24), "S19584C14");
    check_base_class_offset(lv, (S19584C16*)(S19584C15*), ABISELECT(32,16), "S19584C14");
    check_base_class_offset(lv, (S19584C15*), ABISELECT(32,16), "S19584C14");
    test_class_info(&lv, &cd_S19584C14);
    dp->~S19584C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C14(Test_S19584C14, "S19584C14", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19584C14C1Ev();
extern void _ZN9S19584C14D1Ev();
Name_Map name_map_S19584C14[] = {
  NSPAIR(_ZN9S19584C14C1Ev),
  NSPAIR(_ZN9S19584C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19584C15;
extern VTBL_ENTRY _ZTI9S19584C15[];
extern  VTBL_ENTRY _ZTV9S19584C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C15[];
static Base_Class bases_S19584C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19584C7,    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
    4, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S19584C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19584C15,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C14[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C14D1Ev();
extern void _ZN9S19584C14D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S19584C14D1Ev,_ZThn16_N9S19584C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S19584C14D0Ev,_ZThn16_N9S19584C14D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C14[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C14[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__9S19584C14[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C15D1Ev();
extern void _ZN9S19584C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C15__9S19584C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C169S19584C15__9S19584C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C169S19584C15__A1__9S19584C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C169S19584C15__A1__9S19584C14[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C169S19584C15__9S19584C14[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C15__9S19584C14[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C14[] = {
  {&(_ZTV9S19584C14[7]),  7,28},
  {&(_ZTV9S19584C14[15]),  15,28},
  {&(_ZTV9S19584C14[7]),  7,28},
  {&(_ZTV9S19584C14[22]),  22,28},
  {&(_ZTV9S19584C14[27]),  27,28},
  {&(_tg__ZTV8S19584C5__9S19584C14[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__9S19584C14[3]),  3,4},
  {&(_tg__ZTV9S19584C15__9S19584C14[5]),  5,8},
  {&(_tg__ZTV9S19584C169S19584C15__9S19584C14[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C169S19584C15__A1__9S19584C14[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C169S19584C15__A1__9S19584C14[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C169S19584C15__9S19584C14[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C15__9S19584C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19584C14[];
extern  VTBL_ENTRY _ZTV9S19584C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C14[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19584C14D0Ev,_ZThn16_N9S19584C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19584C14D1Ev,_ZThn16_N9S19584C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C14 = {  "S19584C14", // class name
  bases_S19584C14, 10,
  &(vtc_S19584C14[0]), // expected_vtbl_contents
  &(vtt_S19584C14[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19584C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19584C14),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C14),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C18  : virtual S19584C5 , S19584C12 , virtual S21216C26_nt , S19894C34 , virtual S19894C17_nt {
  ::S19894C34 s19584c18f0;
  virtual  ~S19584C18(); // _ZN9S19584C18D2Ev
  S19584C18(); // tgen
};
//SIG(-1 S19584C18) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S19584C18()
{
  extern Class_Descriptor cd_S19584C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S19584C18, buf);
    S19584C18 *dp, &lv = *(dp=new (buf) S19584C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S19584C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C18)");
    /*is_ambiguous_... S19584C18::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), ABISELECT(56,32), "S19584C18");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C12*), ABISELECT(56,32), "S19584C18");
    /*is_ambiguous_... S19584C18::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(40,24), "S19584C18");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C12*), ABISELECT(40,24), "S19584C18");
    /*is_ambiguous_... S19584C18::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*), ABISELECT(40,24), "S19584C18");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*)(S19584C12*), ABISELECT(40,24), "S19584C18");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C12*), 0, "S19584C18");
    /*is_ambiguous_... S19584C12::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C12*), ABISELECT(56,32), "S19584C18");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*)(S19584C12*), ABISELECT(16,8), "S19584C18");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*)(S19584C12*), ABISELECT(24,12), "S19584C18");
    check_base_class_offset(lv, (S19584C8*)(S19584C12*), ABISELECT(16,8), "S19584C18");
    check_base_class_offset(lv, (S19584C12*), 0, "S19584C18");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(64,36), "S19584C18");
    /*is_ambiguous_... S19584C18::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19584C18");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19584C18");
    check_field_offset(lv, s19584c18f0, ABISELECT(36,20), "S19584C18.s19584c18f0");
    test_class_info(&lv, &cd_S19584C18);
    dp->~S19584C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C18(Test_S19584C18, "S19584C18", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN9S19584C18C1Ev();
extern void _ZN9S19584C18D2Ev();
Name_Map name_map_S19584C18[] = {
  NSPAIR(_ZN9S19584C18C1Ev),
  NSPAIR(_ZN9S19584C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C12;
extern VTBL_ENTRY _ZTI9S19584C12[];
extern  VTBL_ENTRY _ZTV9S19584C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C12[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S19584C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19584C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19584C18[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C18D1Ev();
extern void _ZN9S19584C18D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19584C18D1Ev,_ZThn36_N9S19584C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19584C18D0Ev,_ZThn36_N9S19584C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19584C18[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C18D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19584C18[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C12__9S19584C18[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C12__A1__9S19584C18[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C12__A1__9S19584C18[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C12__9S19584C18[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C89S19584C12__9S19584C18[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A1__9S19584C12__9S19584C18[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C12__9S19584C18[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C18[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C18[] = {
  {&(_ZTV9S19584C18[9]),  9,30},
  {&(_tg__ZTV9S19584C12__9S19584C18[7]),  7,8},
  {&(_tg__ZTV8S19584C59S19584C12__A1__9S19584C18[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C12__A1__9S19584C18[3]),  3,4},
  {&(_tg__ZTV8S19584C89S19584C12__9S19584C18[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C89S19584C12__9S19584C18[5]),  5,6},
  {&(_tg__ZTV8S19584C5__8S19584C89S19584C12__9S19584C18[5]),  5,6},
  {&(_tg__ZTV8S19584C5__A1__9S19584C12__9S19584C18[5]),  5,6},
  {&(_tg__ZTV8S19584C8__9S19584C12__9S19584C18[5]),  5,7},
  {&(_tg__ZTV8S19584C5__A1__9S19584C12__9S19584C18[5]),  5,6},
  {&(_ZTV9S19584C18[24]),  24,30},
  {&(_ZTV9S19584C18[24]),  24,30},
  {&(_ZTV9S19584C18[17]),  17,30},
  {&(_ZTV9S19584C18[28]),  28,30},
  {&(_tg__ZTV8S19584C5__9S19584C18[5]),  5,6},
  {&(_tg__ZTV8S19584C5__9S19584C18[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S19584C18[];
extern  VTBL_ENTRY _ZTV9S19584C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C18[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19584C18D0Ev,_ZThn36_N9S19584C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19584C18D1Ev,_ZThn36_N9S19584C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C18 = {  "S19584C18", // class name
  bases_S19584C18, 12,
  &(vtc_S19584C18[0]), // expected_vtbl_contents
  &(vtt_S19584C18[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI9S19584C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19584C18),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C13  : virtual S19584C14 , S21216C26_nt , S19584C16 , virtual S19584C18 {
  void *s19584c13f0[4];
  ~S19584C13(); // tgen
  S19584C13(); // tgen
};
//SIG(-1 S19584C13) C1{ VBC2{ BC3{ m Fp} BC4{ m} VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC9{ BC5 BC6 BC7 vd}}} BC10{ vd m} BC9 VBC11{ VBC5 BC12{ BC5 VBC3 BC13{ BC7 BC3 VBC5 v2} Fi} VBC10 BC6 VBC4 vd FC6} Fp[4]}


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

static void Test_S19584C13()
{
  extern Class_Descriptor cd_S19584C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S19584C13, buf);
    S19584C13 *dp, &lv = *(dp=new (buf) S19584C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19584C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C13)");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C14*), ABISELECT(72,36), "S19584C13");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C14*), ABISELECT(64,32), "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C13");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*)(S19584C15*), 0, "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*), 0, "S19584C13");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C12*)(S19584C18*), 0, "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(64,32), "S19584C13");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*)(S19584C15*), ABISELECT(64,32), "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*), ABISELECT(64,32), "S19584C13");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C12*)(S19584C18*), ABISELECT(64,32), "S19584C13");
    /*is_ambiguous_... S19584C14::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C14*), ABISELECT(80,40), "S19584C13");
    /*is_ambiguous_... S19584C18::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C18*), ABISELECT(80,40), "S19584C13");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(80,40), "S19584C13");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*)(S19584C15*), ABISELECT(96,48), "S19584C13");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*)(S19584C15*), ABISELECT(96,48), "S19584C13");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*)(S19584C15*), ABISELECT(112,56), "S19584C13");
    check_base_class_offset(lv, (S19584C16*)(S19584C15*), ABISELECT(96,48), "S19584C13");
    check_base_class_offset(lv, (S19584C15*)(S19584C14*), ABISELECT(96,48), "S19584C13");
    check_base_class_offset(lv, (S19584C14*), ABISELECT(64,32), "S19584C13");
    /*is_ambiguous_... S19584C13::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C16*), ABISELECT(8,4), "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*), ABISELECT(8,4), "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*), ABISELECT(24,12), "S19584C13");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C16*), ABISELECT(8,4), "S19584C13");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C12*)(S19584C18*), ABISELECT(120,60), "S19584C13");
    /*is_ambiguous_... S19584C12::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C12*)(S19584C18*), ABISELECT(160,84), "S19584C13");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(136,68), "S19584C13");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(144,72), "S19584C13");
    check_base_class_offset(lv, (S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(136,68), "S19584C13");
    check_base_class_offset(lv, (S19584C12*)(S19584C18*), ABISELECT(120,60), "S19584C13");
    check_base_class_offset(lv, (S21216C26_nt*)(S19584C18*), ABISELECT(168,88), "S19584C13");
    /*is_ambiguous_... S19584C18::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C18*), ABISELECT(120,60), "S19584C13");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C18*), 0, "S19584C13");
    check_base_class_offset(lv, (S19584C18*), ABISELECT(120,60), "S19584C13");
    check_field_offset(lv, s19584c13f0, ABISELECT(32,16), "S19584C13.s19584c13f0");
    test_class_info(&lv, &cd_S19584C13);
    dp->~S19584C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C13(Test_S19584C13, "S19584C13", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19584C13C1Ev();
extern void _ZN9S19584C13D1Ev();
Name_Map name_map_S19584C13[] = {
  NSPAIR(_ZN9S19584C13C1Ev),
  NSPAIR(_ZN9S19584C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19584C15;
extern VTBL_ENTRY _ZTI9S19584C15[];
extern  VTBL_ENTRY _ZTV9S19584C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C15[];
extern Class_Descriptor cd_S19584C14;
extern VTBL_ENTRY _ZTI9S19584C14[];
extern  VTBL_ENTRY _ZTV9S19584C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C12;
extern VTBL_ENTRY _ZTI9S19584C12[];
extern  VTBL_ENTRY _ZTV9S19584C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C12[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19584C18;
extern VTBL_ENTRY _ZTI9S19584C18[];
extern  VTBL_ENTRY _ZTV9S19584C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C18[];
static Base_Class bases_S19584C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(80,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(112,56), //bcp->offset
    50, //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19584C15,    ABISELECT(96,48), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19584C14,    ABISELECT(64,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19584C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19584C7,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19584C5,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(136,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19584C12,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(168,88), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19584C18,    ABISELECT(120,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C13[];
extern void _ZN9S19584C13D1Ev();
extern void _ZN9S19584C13D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZThn8_N9S19584C13D1Ev,_ZThn4_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19584C13D0Ev,_ZThn4_N9S19584C13D0Ev)();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19584C13D1Ev,_ZTv0_n32_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19584C13D1Ev,_ZThn32_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19584C13D0Ev,_ZTv0_n32_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19584C13D0Ev,_ZThn32_N9S19584C13D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C13D1Ev,_ZTv0_n24_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19584C13D1Ev,_ZThn48_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C13D0Ev,_ZTv0_n24_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19584C13D0Ev,_ZThn48_N9S19584C13D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19584C13D1Ev,_ZTv0_n44_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S19584C13D1Ev,_ZThn60_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19584C13D0Ev,_ZTv0_n44_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn120_N9S19584C13D0Ev,_ZThn60_N9S19584C13D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19584C13D1Ev,_ZTv0_n12_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S19584C13D1Ev,_ZThn88_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19584C13D0Ev,_ZTv0_n12_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S19584C13D0Ev,_ZThn88_N9S19584C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19584C13[] = {
  0,
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  0,
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN9S19584C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C13D0Ev,
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19584C13D1Ev,_ZThn4_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19584C13D0Ev,_ZThn4_N9S19584C13D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C13D1Ev,_ZTv0_n32_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C13D0Ev,_ZTv0_n32_N9S19584C13D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C13D1Ev,_ZTv0_n24_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C13D0Ev,_ZTv0_n24_N9S19584C13D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19584C13D1Ev,_ZTv0_n44_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19584C13D0Ev,_ZTv0_n44_N9S19584C13D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C13D1Ev,_ZTv0_n12_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C13D0Ev,_ZTv0_n12_N9S19584C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19584C13[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C16__A1__9S19584C13[] = {
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C16__A2__9S19584C13[] = {
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C16__A2__9S19584C13[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C16__A1__9S19584C13[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C14D1Ev();
extern void _ZN9S19584C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C14__9S19584C13[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C14D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C14__9S19584C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S19584C14D1Ev,_ZThn16_N9S19584C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S19584C14D0Ev,_ZThn16_N9S19584C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C15__9S19584C14__9S19584C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C79S19584C169S19584C15__A1__9S19584C14__9S19584C13[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__9S19584C13[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C15D1Ev();
extern void _ZN9S19584C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C15__9S19584C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C169S19584C15__9S19584C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C169S19584C15__A1__9S19584C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C169S19584C15__A1__9S19584C13[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C169S19584C15__9S19584C13[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C15__9S19584C13[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C18D1Ev();
extern void _ZN9S19584C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C18__9S19584C13[] = {
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C18D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C129S19584C18__9S19584C13[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C129S19584C18__A3__9S19584C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C129S19584C18__A3__9S19584C13[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C129S19584C18__9S19584C13[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C89S19584C129S19584C18__9S19584C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C89S19584C129S19584C18__9S19584C13[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C129S19584C18__9S19584C13[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C129S19584C18__9S19584C13[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A1__9S19584C129S19584C18__9S19584C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C18__9S19584C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C18__9S19584C13[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C12__9S19584C18__9S19584C13[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19584C18D1Ev,_ZThn28_N9S19584C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19584C18D0Ev,_ZThn28_N9S19584C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19584C18__9S19584C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev),
};
static  VTT_ENTRY vtt_S19584C13[] = {
  {&(_ZTV9S19584C13[11]),  11,79},
  {&(_tg__ZTV9S19584C16__A1__9S19584C13[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C16__A2__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C16__A2__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C16__A1__9S19584C13[3]),  3,4},
  {&(_ZTV9S19584C13[32]),  32,79},
  {&(_ZTV9S19584C13[40]),  40,79},
  {&(_ZTV9S19584C13[32]),  32,79},
  {&(_ZTV9S19584C13[47]),  47,79},
  {&(_ZTV9S19584C13[52]),  52,79},
  {&(_ZTV9S19584C13[18]),  18,79},
  {&(_ZTV9S19584C13[64]),  64,79},
  {&(_ZTV9S19584C13[72]),  72,79},
  {&(_ZTV9S19584C13[77]),  77,79},
  {&(_tg__ZTV9S19584C14__9S19584C13[7]),  7,10},
  {&(_tg__ZTV8S19584C5__9S19584C14__9S19584C13[5]),  5,6},
  {&(_tg__ZTV9S19584C14__9S19584C13[7]),  7,10},
  {&(_tg__ZTV9S19584C15__9S19584C14__9S19584C13[6]),  6,9},
  {&(_tg__ZTV8S19584C79S19584C169S19584C15__A1__9S19584C14__9S19584C13[2]),  2,3},
  {&(_tg__ZTV8S19584C5__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__9S19584C13[3]),  3,4},
  {&(_tg__ZTV9S19584C15__9S19584C13[5]),  5,8},
  {&(_tg__ZTV9S19584C169S19584C15__9S19584C13[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C169S19584C15__A1__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C169S19584C15__A1__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C169S19584C15__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C15__9S19584C13[3]),  3,4},
  {&(_tg__ZTV9S19584C18__9S19584C13[9]),  9,12},
  {&(_tg__ZTV9S19584C129S19584C18__9S19584C13[7]),  7,8},
  {&(_tg__ZTV8S19584C59S19584C129S19584C18__A3__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C129S19584C18__A3__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C89S19584C129S19584C18__9S19584C13[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C89S19584C129S19584C18__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C89S19584C129S19584C18__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C129S19584C18__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C8__9S19584C129S19584C18__9S19584C13[5]),  5,7},
  {&(_tg__ZTV8S19584C5__A1__9S19584C129S19584C18__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C5__9S19584C18__9S19584C13[5]),  5,6},
  {&(_tg__ZTV8S19584C7__9S19584C18__9S19584C13[3]),  3,4},
  {&(_tg__ZTV8S19584C89S19584C12__9S19584C18__9S19584C13[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__9S19584C18__9S19584C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19584C13[];
extern  VTBL_ENTRY _ZTV9S19584C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C13[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19584C18D0Ev,_ZThn28_N9S19584C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19584C18D1Ev,_ZThn28_N9S19584C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19584C14D0Ev,_ZThn16_N9S19584C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19584C14D1Ev,_ZThn16_N9S19584C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C13D0Ev,_ZTv0_n12_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19584C13D0Ev,_ZThn88_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C13D1Ev,_ZTv0_n12_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19584C13D1Ev,_ZThn88_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19584C13D0Ev,_ZTv0_n44_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19584C13D0Ev,_ZThn60_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19584C13D1Ev,_ZTv0_n44_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19584C13D1Ev,_ZThn60_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C13D0Ev,_ZTv0_n24_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19584C13D0Ev,_ZThn48_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C13D1Ev,_ZTv0_n24_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19584C13D1Ev,_ZThn48_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C13D0Ev,_ZTv0_n32_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19584C13D0Ev,_ZThn32_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C13D1Ev,_ZTv0_n32_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19584C13D1Ev,_ZThn32_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C13 = {  "S19584C13", // class name
  bases_S19584C13, 26,
  &(vtc_S19584C13[0]), // expected_vtbl_contents
  &(vtt_S19584C13[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19584C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19584C13),79, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C13),41, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C20  : S21216C26_nt , virtual S3619C26 , virtual S19584C11 , S19584C4 {
  ~S19584C20(); // tgen
  S19584C20(); // tgen
};
//SIG(-1 S19584C20) C1{ BC2{ vd m} VBC3{ m} VBC4{ VBC5{ m} VBC6{ m Fp}} BC7{ VBC8{ VBC5 VBC9{ v1} FC9} VBC10{ BC9 BC6 VBC8 v2}}}


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

static void Test_S19584C20()
{
  extern Class_Descriptor cd_S19584C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S19584C20, buf);
    S19584C20 *dp, &lv = *(dp=new (buf) S19584C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19584C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C20)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S19584C20");
    check_base_class_offset(lv, (S3619C26*), 0, "S19584C20");
    check_base_class_offset(lv, (S19894C34*)(S19584C11*), 0, "S19584C20");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C11*), ABISELECT(24,12), "S19584C20");
    check_base_class_offset(lv, (S19584C11*), ABISELECT(16,8), "S19584C20");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(8,4), "S19584C20");
    check_base_class_offset(lv, (S19584C5*)(S19584C4*), ABISELECT(32,16), "S19584C20");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(32,16), "S19584C20");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(48,24), "S19584C20");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(56,28), "S19584C20");
    check_base_class_offset(lv, (S19584C8*)(S19584C4*), ABISELECT(48,24), "S19584C20");
    check_base_class_offset(lv, (S19584C4*), ABISELECT(8,4), "S19584C20");
    test_class_info(&lv, &cd_S19584C20);
    dp->~S19584C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C20(Test_S19584C20, "S19584C20", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S19584C20C1Ev();
extern void _ZN9S19584C20D1Ev();
Name_Map name_map_S19584C20[] = {
  NSPAIR(_ZN9S19584C20C1Ev),
  NSPAIR(_ZN9S19584C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C11;
extern VTBL_ENTRY _ZTI9S19584C11[];
extern  VTBL_ENTRY _ZTV9S19584C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C11[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C4;
extern VTBL_ENTRY _ZTI8S19584C4[];
extern  VTBL_ENTRY _ZTV8S19584C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C4[];
static Base_Class bases_S19584C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19584C11,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(48,24), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19584C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S19584C20[];
extern void _ZN9S19584C20D1Ev();
extern void _ZN9S19584C20D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY vtc_S19584C20[] = {
  ABISELECT(48,24),
  ABISELECT(8,4),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN9S19584C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C20D0Ev,
  ABISELECT(40,20),
  0,
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern VTBL_ENTRY _ZTV9S19584C20[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__9S19584C20[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C4__9S19584C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C4__9S19584C20[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C11__9S19584C20[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C11[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__9S19584C20[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__9S19584C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__9S19584C20[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C20[] = {
  {&(_ZTV9S19584C20[9]),  9,38},
  {&(_tg__ZTV8S19584C4__9S19584C20[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C4__9S19584C20[5]),  5,6},
  {&(_tg__ZTV8S19584C4__9S19584C20[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C4__9S19584C20[7]),  7,9},
  {&(_ZTV9S19584C20[23]),  23,38},
  {&(_ZTV9S19584C20[18]),  18,38},
  {&(_ZTV9S19584C20[28]),  28,38},
  {&(_ZTV9S19584C20[18]),  18,38},
  {&(_ZTV9S19584C20[36]),  36,38},
  {&(_tg__ZTV9S19584C11__9S19584C20[4]),  4,4},
  {&(_tg__ZTV8S19584C5__9S19584C20[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__9S19584C20[3]),  3,4},
  {&(_tg__ZTV8S19584C8__9S19584C20[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__9S19584C20[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__9S19584C20[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19584C20[];
extern  VTBL_ENTRY _ZTV9S19584C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C20[];
Class_Descriptor cd_S19584C20 = {  "S19584C20", // class name
  bases_S19584C20, 11,
  &(vtc_S19584C20[0]), // expected_vtbl_contents
  &(vtt_S19584C20[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S19584C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19584C20),38, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C20),16, //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  S19584C23  : virtual S19584C16 , virtual S19894C6_nt {
  void *s19584c23f0[9];
  ~S19584C23(); // tgen
  S19584C23(); // tgen
};
//SIG(-1 S19584C23) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S19584C23()
{
  extern Class_Descriptor cd_S19584C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19584C23, buf);
    S19584C23 *dp, &lv = *(dp=new (buf) S19584C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19584C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C23)");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*), 0, "S19584C23");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*), 0, "S19584C23");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*), ABISELECT(80,40), "S19584C23");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*), ABISELECT(80,40), "S19584C23");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*), ABISELECT(96,48), "S19584C23");
    check_base_class_offset(lv, (S19584C16*), ABISELECT(80,40), "S19584C23");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S19584C23");
    check_field_offset(lv, s19584c23f0, ABISELECT(8,4), "S19584C23.s19584c23f0");
    test_class_info(&lv, &cd_S19584C23);
    dp->~S19584C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C23(Test_S19584C23, "S19584C23", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN9S19584C23C1Ev();
extern void _ZN9S19584C23D1Ev();
Name_Map name_map_S19584C23[] = {
  NSPAIR(_ZN9S19584C23C1Ev),
  NSPAIR(_ZN9S19584C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19584C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19584C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C23[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C23D1Ev();
extern void _ZN9S19584C23D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S19584C23D1Ev,_ZThn40_N9S19584C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S19584C23D0Ev,_ZThn40_N9S19584C23D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C23[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C23D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C23[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C16__9S19584C23[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C16__9S19584C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C16__9S19584C23[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C23[] = {
  {&(_ZTV9S19584C23[7]),  7,22},
  {&(_ZTV9S19584C23[16]),  16,22},
  {&(_ZTV9S19584C23[7]),  7,22},
  {&(_ZTV9S19584C23[21]),  21,22},
  {&(_tg__ZTV9S19584C16__9S19584C23[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C16__9S19584C23[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C16__9S19584C23[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C16__9S19584C23[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19584C23[];
extern  VTBL_ENTRY _ZTV9S19584C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C23[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19584C23D0Ev,_ZThn40_N9S19584C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19584C23D1Ev,_ZThn40_N9S19584C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C23 = {  "S19584C23", // class name
  bases_S19584C23, 7,
  &(vtc_S19584C23[0]), // expected_vtbl_contents
  &(vtt_S19584C23[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI9S19584C23),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19584C23),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C23),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C22  : virtual S19894C17_nt , virtual S19584C5 , S19584C7 , virtual S19584C23 {
  virtual  ~S19584C22(); // _ZN9S19584C22D2Ev
  S19584C22(); // tgen
};
//SIG(-1 S19584C22) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ v1} FC5} BC5 VBC6{ VBC7{ BC3 BC4 BC5 vd} VBC8{ m Fp} Fp[9]} vd}


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

static void Test_S19584C22()
{
  extern Class_Descriptor cd_S19584C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S19584C22, buf);
    S19584C22 *dp, &lv = *(dp=new (buf) S19584C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S19584C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C22)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19584C22");
    /*is_ambiguous_... S19584C22::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C22");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*), 0, "S19584C22");
    /*is_ambiguous_... S19584C22::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(8,4), "S19584C22");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*), ABISELECT(8,4), "S19584C22");
    /*is_ambiguous_... S19584C22::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*), ABISELECT(8,4), "S19584C22");
    /*is_ambiguous_... S19584C22::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*), 0, "S19584C22");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*), ABISELECT(104,52), "S19584C22");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*), ABISELECT(104,52), "S19584C22");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*), ABISELECT(120,60), "S19584C22");
    check_base_class_offset(lv, (S19584C16*)(S19584C23*), ABISELECT(104,52), "S19584C22");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C23*), ABISELECT(128,64), "S19584C22");
    check_base_class_offset(lv, (S19584C23*), ABISELECT(24,12), "S19584C22");
    test_class_info(&lv, &cd_S19584C22);
    dp->~S19584C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C22(Test_S19584C22, "S19584C22", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN9S19584C22C1Ev();
extern void _ZN9S19584C22D2Ev();
Name_Map name_map_S19584C22[] = {
  NSPAIR(_ZN9S19584C22C1Ev),
  NSPAIR(_ZN9S19584C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C23;
extern VTBL_ENTRY _ZTI9S19584C23[];
extern  VTBL_ENTRY _ZTV9S19584C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C23[];
static Base_Class bases_S19584C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19584C5,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(120,60), //bcp->offset
    38, //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
    8, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(104,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19584C23,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C22[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C22D1Ev();
extern void _ZN9S19584C22D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19584C22D1Ev,_ZTv0_n32_N9S19584C22D1Ev)();
extern void ABISELECT(_ZThn24_N9S19584C22D1Ev,_ZThn12_N9S19584C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19584C22D0Ev,_ZTv0_n32_N9S19584C22D0Ev)();
extern void ABISELECT(_ZThn24_N9S19584C22D0Ev,_ZThn12_N9S19584C22D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C22D1Ev,_ZTv0_n24_N9S19584C22D1Ev)();
extern void ABISELECT(_ZThn104_N9S19584C22D1Ev,_ZThn52_N9S19584C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C22D0Ev,_ZTv0_n24_N9S19584C22D0Ev)();
extern void ABISELECT(_ZThn104_N9S19584C22D0Ev,_ZThn52_N9S19584C22D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C22[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C22D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C22D1Ev,_ZTv0_n32_N9S19584C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C22D0Ev,_ZTv0_n32_N9S19584C22D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C22D1Ev,_ZTv0_n24_N9S19584C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C22D0Ev,_ZTv0_n24_N9S19584C22D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C22[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C22[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C23D1Ev();
extern void _ZN9S19584C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C23__9S19584C22[] = {
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C23D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S19584C23D1Ev,_ZThn40_N9S19584C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S19584C23D0Ev,_ZThn40_N9S19584C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C23__9S19584C22[] = {
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C23__9S19584C22[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C79S19584C16__A1__9S19584C23__9S19584C22[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C22[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C16__A1__9S19584C22[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C16__A1__9S19584C22[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C16__9S19584C22[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C22[] = {
  {&(_ZTV9S19584C22[9]),  9,41},
  {&(_ZTV9S19584C22[17]),  17,41},
  {&(_ZTV9S19584C22[17]),  17,41},
  {&(_ZTV9S19584C22[26]),  26,41},
  {&(_ZTV9S19584C22[35]),  35,41},
  {&(_ZTV9S19584C22[40]),  40,41},
  {&(_tg__ZTV8S19584C5__9S19584C22[5]),  5,6},
  {&(_tg__ZTV8S19584C5__9S19584C22[5]),  5,6},
  {&(_tg__ZTV9S19584C23__9S19584C22[7]),  7,10},
  {&(_tg__ZTV9S19584C16__9S19584C23__9S19584C22[6]),  6,9},
  {&(_tg__ZTV8S19584C7__9S19584C23__9S19584C22[3]),  3,4},
  {&(_tg__ZTV8S19584C79S19584C16__A1__9S19584C23__9S19584C22[2]),  2,3},
  {&(_tg__ZTV9S19584C16__9S19584C22[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C16__A1__9S19584C22[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C16__A1__9S19584C22[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C16__9S19584C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19584C22[];
extern  VTBL_ENTRY _ZTV9S19584C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C22[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19584C23D0Ev,_ZThn40_N9S19584C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19584C23D1Ev,_ZThn40_N9S19584C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C22D0Ev,_ZTv0_n24_N9S19584C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19584C22D0Ev,_ZThn52_N9S19584C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C22D1Ev,_ZTv0_n24_N9S19584C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19584C22D1Ev,_ZThn52_N9S19584C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C22D0Ev,_ZTv0_n32_N9S19584C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19584C22D0Ev,_ZThn12_N9S19584C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C22D1Ev,_ZTv0_n32_N9S19584C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19584C22D1Ev,_ZThn12_N9S19584C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C22 = {  "S19584C22", // class name
  bases_S19584C22, 11,
  &(vtc_S19584C22[0]), // expected_vtbl_contents
  &(vtt_S19584C22[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI9S19584C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19584C22),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C22),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C19  : virtual S19894C17_nt , virtual S19584C20 , S19584C22 , S19584C8 {
  char s19584c19f0;
  virtual  ~S19584C19(); // _ZN9S19584C19D2Ev
  S19584C19(); // tgen
};
//SIG(-1 S19584C19) C1{ VBC2{ m} VBC3{ BC4{ vd m} VBC5{ m} VBC6{ VBC7{ m} VBC8{ m Fp}} BC9{ VBC10{ VBC7 VBC11{ v1} FC11} VBC12{ BC11 BC8 VBC10 v2}}} BC13{ VBC2 VBC10 BC11 VBC14{ VBC15{ BC10 BC7 BC11 vd} VBC8 Fp[9]} vd} BC12 vd Fc}


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

static void Test_S19584C19()
{
  extern Class_Descriptor cd_S19584C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[26];
    init_test(&cd_S19584C19, buf);
    S19584C19 *dp, &lv = *(dp=new (buf) S19584C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,100), "sizeof(S19584C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C19)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19584C19");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C22*), 0, "S19584C19");
    check_base_class_offset(lv, (S21216C26_nt*)(S19584C20*), ABISELECT(32,16), "S19584C19");
    check_base_class_offset(lv, (S3619C26*)(S19584C20*), 0, "S19584C19");
    check_base_class_offset(lv, (S19894C34*)(S19584C11*), 0, "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C19");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*), 0, "S19584C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C11*), ABISELECT(56,28), "S19584C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C23*), ABISELECT(56,28), "S19584C19");
    check_base_class_offset(lv, (S19584C11*)(S19584C20*), ABISELECT(48,24), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(40,20), "S19584C19");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*), ABISELECT(40,20), "S19584C19");
    check_base_class_offset(lv, (S19584C5*)(S19584C4*)(S19584C20*), ABISELECT(64,32), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(64,32), "S19584C19");
    /*is_ambiguous_... S19584C22::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C22*), ABISELECT(64,32), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(64,32), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(80,40), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(88,44), "S19584C19");
    check_base_class_offset(lv, (S19584C8*)(S19584C4*)(S19584C20*), ABISELECT(80,40), "S19584C19");
    check_base_class_offset(lv, (S19584C4*)(S19584C20*), ABISELECT(40,20), "S19584C19");
    check_base_class_offset(lv, (S19584C20*), ABISELECT(32,16), "S19584C19");
    /*is_ambiguous_... S19584C22::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C22*), 0, "S19584C19");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*), ABISELECT(176,88), "S19584C19");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*), ABISELECT(176,88), "S19584C19");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*), ABISELECT(192,96), "S19584C19");
    check_base_class_offset(lv, (S19584C16*)(S19584C23*), ABISELECT(176,88), "S19584C19");
    check_base_class_offset(lv, (S19584C23*)(S19584C22*), ABISELECT(96,48), "S19584C19");
    check_base_class_offset(lv, (S19584C22*), 0, "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(8,4), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(16,8), "S19584C19");
    /*is_ambiguous_... S19584C19::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C8*), ABISELECT(8,4), "S19584C19");
    check_field_offset(lv, s19584c19f0, ABISELECT(24,12), "S19584C19.s19584c19f0");
    test_class_info(&lv, &cd_S19584C19);
    dp->~S19584C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C19(Test_S19584C19, "S19584C19", ABISELECT(200,100));

#else // __cplusplus

extern void _ZN9S19584C19C1Ev();
extern void _ZN9S19584C19D2Ev();
Name_Map name_map_S19584C19[] = {
  NSPAIR(_ZN9S19584C19C1Ev),
  NSPAIR(_ZN9S19584C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C11;
extern VTBL_ENTRY _ZTI9S19584C11[];
extern  VTBL_ENTRY _ZTV9S19584C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C11[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C4;
extern VTBL_ENTRY _ZTI8S19584C4[];
extern  VTBL_ENTRY _ZTV8S19584C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C4[];
extern Class_Descriptor cd_S19584C20;
extern VTBL_ENTRY _ZTI9S19584C20[];
extern  VTBL_ENTRY _ZTV9S19584C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C20[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19584C23;
extern VTBL_ENTRY _ZTI9S19584C23[];
extern  VTBL_ENTRY _ZTV9S19584C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C23[];
extern Class_Descriptor cd_S19584C22;
extern VTBL_ENTRY _ZTI9S19584C22[];
extern  VTBL_ENTRY _ZTV9S19584C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C22[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
static Base_Class bases_S19584C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19584C11,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(64,32), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19584C7,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(80,40), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19584C4,    ABISELECT(40,20), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19584C20,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19584C5,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(192,96), //bcp->offset
    82, //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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(176,88), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19584C23,    ABISELECT(96,48), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19584C22,    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_S19584C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19584C19[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C19D1Ev();
extern void _ZN9S19584C19D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S19584C19D1Ev,_ZTv0_n40_N9S19584C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19584C19D1Ev,_ZThn16_N9S19584C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19584C19D0Ev,_ZTv0_n40_N9S19584C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S19584C19D0Ev,_ZThn16_N9S19584C19D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19584C19D1Ev,_ZTv0_n32_N9S19584C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S19584C19D1Ev,_ZThn48_N9S19584C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19584C19D0Ev,_ZTv0_n32_N9S19584C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S19584C19D0Ev,_ZThn48_N9S19584C19D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C19D1Ev,_ZTv0_n24_N9S19584C19D1Ev)();
extern void ABISELECT(_ZThn176_N9S19584C19D1Ev,_ZThn88_N9S19584C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C19D0Ev,_ZTv0_n24_N9S19584C19D0Ev)();
extern void ABISELECT(_ZThn176_N9S19584C19D0Ev,_ZThn88_N9S19584C19D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY vtc_S19584C19[] = {
  ABISELECT(80,40),
  ABISELECT(48,24),
  0,
  ABISELECT(32,16),
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(96,48),
  ABISELECT(40,20),
  0,
  ABISELECT(64,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C19D0Ev,
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(8,4),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19584C19D1Ev,_ZTv0_n40_N9S19584C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19584C19D0Ev,_ZTv0_n40_N9S19584C19D0Ev),
  ABISELECT(40,20),
  0,
  ABISELECT(-40,-20),
  ABISELECT(24,12),
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C19D1Ev,_ZTv0_n32_N9S19584C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C19D0Ev,_ZTv0_n32_N9S19584C19D0Ev),
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C19D1Ev,_ZTv0_n24_N9S19584C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C19D0Ev,_ZTv0_n24_N9S19584C19D0Ev),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19584C19[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S19584C19[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C22D1Ev();
extern void _ZN9S19584C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C22__9S19584C19[] = {
  ABISELECT(56,28),
  ABISELECT(176,88),
  ABISELECT(96,48),
  ABISELECT(40,20),
  0,
  ABISELECT(64,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C22D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C22__9S19584C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C22__9S19584C19[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19584C22D1Ev,_ZTv0_n32_N9S19584C22D1Ev)();
extern void ABISELECT(_ZThn96_N9S19584C22D1Ev,_ZThn48_N9S19584C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19584C22D0Ev,_ZTv0_n32_N9S19584C22D0Ev)();
extern void ABISELECT(_ZThn96_N9S19584C22D0Ev,_ZThn48_N9S19584C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C23__9S19584C22__9S19584C19[] = {
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C22D1Ev,_ZTv0_n32_N9S19584C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C22D0Ev,_ZTv0_n32_N9S19584C22D0Ev),
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C22D1Ev,_ZTv0_n24_N9S19584C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S19584C22D1Ev,_ZThn88_N9S19584C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C22D0Ev,_ZTv0_n24_N9S19584C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S19584C22D0Ev,_ZThn88_N9S19584C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C22__9S19584C19[] = {
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C22D1Ev,_ZTv0_n24_N9S19584C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C22D0Ev,_ZTv0_n24_N9S19584C22D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C79S19584C16__A2__9S19584C22__9S19584C19[] = {
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19584C22[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__A__9S19584C19[] = {
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__A__9S19584C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__A__9S19584C19[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN9S19584C20D1Ev();
extern void _ZN9S19584C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C20__9S19584C19[] = {
  ABISELECT(48,24),
  ABISELECT(8,4),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN9S19584C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C20D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C49S19584C20__9S19584C19[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(-40,-20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C49S19584C20__9S19584C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C49S19584C20__9S19584C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C11__9S19584C20__9S19584C19[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__9S19584C20__9S19584C19[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(-40,-20),
  ABISELECT(24,12),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C20__9S19584C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C20__9S19584C19[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C20[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C11__9S19584C19[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C11[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__9S19584C19[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C19[] = {
  ABISELECT(-40,-20),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__9S19584C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-64,-32),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__9S19584C19[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C23D1Ev();
extern void _ZN9S19584C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C23__9S19584C19[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  ABISELECT(80,40),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C23D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S19584C23D1Ev,_ZThn40_N9S19584C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S19584C23D0Ev,_ZThn40_N9S19584C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C23__9S19584C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C23__9S19584C19[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C79S19584C16__A1__9S19584C23__9S19584C19[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19584C23[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C16__9S19584C19[] = {
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C16__A1__9S19584C19[] = {
  ABISELECT(-136,-68),
  ABISELECT(-176,-88),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C16__A1__9S19584C19[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C16__9S19584C19[] = {
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTT_ENTRY vtt_S19584C19[] = {
  {&(_ZTV9S19584C19[13]),  13,85},
  {&(_tg__ZTV9S19584C22__9S19584C19[9]),  9,12},
  {&(_tg__ZTV8S19584C5__9S19584C22__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C7__9S19584C22__9S19584C19[3]),  3,4},
  {&(_tg__ZTV9S19584C23__9S19584C22__9S19584C19[8]),  8,11},
  {&(_tg__ZTV9S19584C16__9S19584C22__9S19584C19[6]),  6,9},
  {&(_tg__ZTV8S19584C79S19584C16__A2__9S19584C22__9S19584C19[2]),  2,3},
  {&(_tg__ZTV8S19584C8__A__9S19584C19[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__A__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__A__9S19584C19[3]),  3,4},
  {&(_ZTV9S19584C19[33]),  33,85},
  {&(_ZTV9S19584C19[47]),  47,85},
  {&(_ZTV9S19584C19[42]),  42,85},
  {&(_ZTV9S19584C19[52]),  52,85},
  {&(_ZTV9S19584C19[42]),  42,85},
  {&(_ZTV9S19584C19[60]),  60,85},
  {&(_ZTV9S19584C19[70]),  70,85},
  {&(_ZTV9S19584C19[79]),  79,85},
  {&(_ZTV9S19584C19[84]),  84,85},
  {&(_ZTV9S19584C19[21]),  21,85},
  {&(_tg__ZTV9S19584C20__9S19584C19[9]),  9,11},
  {&(_tg__ZTV8S19584C49S19584C20__9S19584C19[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C49S19584C20__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C49S19584C20__9S19584C19[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C49S19584C20__9S19584C19[7]),  7,9},
  {&(_tg__ZTV9S19584C11__9S19584C20__9S19584C19[4]),  4,4},
  {&(_tg__ZTV8S19584C4__9S19584C20__9S19584C19[7]),  7,8},
  {&(_tg__ZTV8S19584C5__9S19584C20__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C4__9S19584C20__9S19584C19[7]),  7,8},
  {&(_tg__ZTV8S19584C8__9S19584C20__9S19584C19[7]),  7,9},
  {&(_tg__ZTV9S19584C11__9S19584C19[4]),  4,4},
  {&(_tg__ZTV8S19584C5__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__9S19584C19[3]),  3,4},
  {&(_tg__ZTV8S19584C8__9S19584C19[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__9S19584C19[3]),  3,4},
  {&(_tg__ZTV9S19584C23__9S19584C19[7]),  7,10},
  {&(_tg__ZTV9S19584C16__9S19584C23__9S19584C19[6]),  6,9},
  {&(_tg__ZTV8S19584C7__9S19584C23__9S19584C19[3]),  3,4},
  {&(_tg__ZTV8S19584C79S19584C16__A1__9S19584C23__9S19584C19[2]),  2,3},
  {&(_tg__ZTV9S19584C16__9S19584C19[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C16__A1__9S19584C19[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C16__A1__9S19584C19[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C16__9S19584C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19584C19[];
extern  VTBL_ENTRY _ZTV9S19584C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C19[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C23D0Ev,_ZTv0_n24_N9S19584C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19584C23D0Ev,_ZThn40_N9S19584C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C23D1Ev,_ZTv0_n24_N9S19584C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19584C23D1Ev,_ZThn40_N9S19584C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C22D0Ev,_ZTv0_n24_N9S19584C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19584C22D0Ev,_ZThn88_N9S19584C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C22D1Ev,_ZTv0_n24_N9S19584C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19584C22D1Ev,_ZThn88_N9S19584C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C22D0Ev,_ZTv0_n32_N9S19584C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19584C22D0Ev,_ZThn48_N9S19584C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C22D1Ev,_ZTv0_n32_N9S19584C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19584C22D1Ev,_ZThn48_N9S19584C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C19D0Ev,_ZTv0_n24_N9S19584C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19584C19D0Ev,_ZThn88_N9S19584C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C19D1Ev,_ZTv0_n24_N9S19584C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19584C19D1Ev,_ZThn88_N9S19584C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C19D0Ev,_ZTv0_n32_N9S19584C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19584C19D0Ev,_ZThn48_N9S19584C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C19D1Ev,_ZTv0_n32_N9S19584C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19584C19D1Ev,_ZThn48_N9S19584C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19584C19D0Ev,_ZTv0_n40_N9S19584C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19584C19D0Ev,_ZThn16_N9S19584C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19584C19D1Ev,_ZTv0_n40_N9S19584C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19584C19D1Ev,_ZThn16_N9S19584C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C19 = {  "S19584C19", // class name
  bases_S19584C19, 23,
  &(vtc_S19584C19[0]), // expected_vtbl_contents
  &(vtt_S19584C19[0]), // expected_vtt_contents
  ABISELECT(200,100), // object size
  NSPAIRA(_ZTI9S19584C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19584C19),85, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19584C19),44, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19584C1  : virtual S19584C2 , S19584C12 , S19584C13 {
  ::S19584C19 s19584c1f0;
  ~S19584C1(); // tgen
  S19584C1(); // tgen
};
//SIG(1 S19584C1) C1{ VBC2{ BC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC7 BC9{ m Fp} VBC5 v2}} BC5 BC6 BC10{ m} BC11{ VBC6 VBC9} vd} vd Fi} BC12{ BC5 VBC9 BC8 Fi} BC13{ VBC14{ BC9 BC10 VBC5 VBC15{ BC16{ BC5 BC6 BC7 vd}}} BC17{ vd m} BC16 VBC18{ VBC5 BC12 VBC17 BC6 VBC10 vd FC6} Fp[4]} FC19{ VBC10 VBC20{ BC17 VBC21{ m} VBC11 BC4} BC22{ VBC10 VBC5 BC7 VBC23{ VBC16 VBC9 Fp[9]} vd} BC8 vd Fc}}


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

static void Test_S19584C1()
{
  extern Class_Descriptor cd_S19584C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(60,61)];
    init_test(&cd_S19584C1, buf);
    S19584C1 *dp, &lv = *(dp=new (buf) S19584C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(472,240), "sizeof(S19584C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19584C1)");
    /*is_ambiguous_... S19584C1::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*), 0, "S19584C1");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C3*)(S19584C2*), 0, "S19584C1");
    check_base_class_offset(lv, (S19894C34*)(S19584C11*)(S19584C3*)(S19584C2*), 0, "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C12*), 0, "S19584C1");
    check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*)(S19584C15*), 0, "S19584C1");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C16*)(S19584C13*), 0, "S19584C1");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C5*)(S19584C12*)(S19584C18*), 0, "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*), ABISELECT(336,168), "S19584C1");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C3*)(S19584C2*), ABISELECT(336,168), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C12*), ABISELECT(336,168), "S19584C1");
    check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*)(S19584C15*), ABISELECT(336,168), "S19584C1");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C16*)(S19584C13*), ABISELECT(336,168), "S19584C1");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C5*)(S19584C12*)(S19584C18*), ABISELECT(336,168), "S19584C1");
    check_base_class_offset(lv, (S19584C5*)(S19584C4*), ABISELECT(344,172), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C8*), ABISELECT(344,172), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C8*)(S19584C12*), ABISELECT(344,172), "S19584C1");
    /*is_ambiguous_... S19584C14::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C14*), ABISELECT(344,172), "S19584C1");
    /*is_ambiguous_... S19584C18::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C18*), ABISELECT(344,172), "S19584C1");
    check_base_class_offset(lv, (S19584C5*)(S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(344,172), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C8 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*), ABISELECT(360,180), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C8 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*), ABISELECT(368,184), "S19584C1");
    check_base_class_offset(lv, (S19584C8*)(S19584C4*), ABISELECT(360,180), "S19584C1");
    check_base_class_offset(lv, (S19584C4*)(S19584C3*)(S19584C2*), ABISELECT(336,168), "S19584C1");
    /*is_ambiguous_... S19584C3::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C3*)(S19584C2*), ABISELECT(304,152), "S19584C1");
    /*is_ambiguous_... S19584C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C3*)(S19584C2*), ABISELECT(304,152), "S19584C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C3*)(S19584C2*), ABISELECT(304,152), "S19584C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C11*)(S19584C3*)(S19584C2*), ABISELECT(376,188), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C12*), ABISELECT(376,188), "S19584C1");
    /*is_ambiguous_... S19584C12::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C12*)(S19584C18*), ABISELECT(376,188), "S19584C1");
    check_base_class_offset(lv, (S19584C11*)(S19584C3*)(S19584C2*), ABISELECT(320,160), "S19584C1");
    check_base_class_offset(lv, (S19584C3*)(S19584C2*), ABISELECT(304,152), "S19584C1");
    check_base_class_offset(lv, (S19584C2*), ABISELECT(304,152), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C12*), 0, "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*)(S19584C12*), ABISELECT(16,8), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*)(S19584C12*), ABISELECT(24,12), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19584C8*)(S19584C12*), ABISELECT(16,8), "S19584C1");
    /*is_ambiguous_... S19584C1::S19584C12 */ AMB_check_base_class_offset(lv, (S19584C12*), 0, "S19584C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C14*), ABISELECT(392,196), "S19584C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C14*), ABISELECT(384,192), "S19584C1");
    check_base_class_offset(lv, (S19584C5*)(S19584C16*)(S19584C15*), ABISELECT(400,200), "S19584C1");
    /*is_ambiguous_... S19584C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*)(S19584C15*), ABISELECT(400,200), "S19584C1");
    /*is_ambiguous_... S19584C16::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*)(S19584C15*), ABISELECT(416,208), "S19584C1");
    check_base_class_offset(lv, (S19584C16*)(S19584C15*), ABISELECT(400,200), "S19584C1");
    check_base_class_offset(lv, (S19584C15*)(S19584C14*), ABISELECT(400,200), "S19584C1");
    check_base_class_offset(lv, (S19584C14*)(S19584C13*), ABISELECT(384,192), "S19584C1");
    /*is_ambiguous_... S19584C13::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19584C13*), ABISELECT(40,20), "S19584C1");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C16*)(S19584C13*), ABISELECT(48,24), "S19584C1");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C16*)(S19584C13*), ABISELECT(48,24), "S19584C1");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C16*)(S19584C13*), ABISELECT(64,32), "S19584C1");
    /*is_ambiguous_... S19584C13::S19584C16 */ AMB_check_base_class_offset(lv, (S19584C16*)(S19584C13*), ABISELECT(48,24), "S19584C1");
    /*is_ambiguous_... S19584C12::S19584C5 */ AMB_check_base_class_offset(lv, (S19584C5*)(S19584C12*)(S19584C18*), ABISELECT(424,212), "S19584C1");
    /*is_ambiguous_... S19584C8::S19584C7 */ AMB_check_base_class_offset(lv, (S19584C7*)(S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(440,220), "S19584C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(448,224), "S19584C1");
    check_base_class_offset(lv, (S19584C8*)(S19584C12*)(S19584C18*), ABISELECT(440,220), "S19584C1");
    check_base_class_offset(lv, (S19584C12*)(S19584C18*), ABISELECT(424,212), "S19584C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19584C18*), ABISELECT(464,236), "S19584C1");
    /*is_ambiguous_... S19584C18::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19584C18*), ABISELECT(424,212), "S19584C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19584C18*), 0, "S19584C1");
    check_base_class_offset(lv, (S19584C18*)(S19584C13*), ABISELECT(424,212), "S19584C1");
    check_base_class_offset(lv, (S19584C13*), ABISELECT(40,20), "S19584C1");
    check_field_offset(lv, s19584c1f0, ABISELECT(104,52), "S19584C1.s19584c1f0");
    test_class_info(&lv, &cd_S19584C1);
    dp->~S19584C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19584C1(Test_S19584C1, "S19584C1", ABISELECT(472,240));

#else // __cplusplus

extern void _ZN8S19584C1C1Ev();
extern void _ZN8S19584C1D1Ev();
Name_Map name_map_S19584C1[] = {
  NSPAIR(_ZN8S19584C1C1Ev),
  NSPAIR(_ZN8S19584C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C4;
extern VTBL_ENTRY _ZTI8S19584C4[];
extern  VTBL_ENTRY _ZTV8S19584C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C4[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C11;
extern VTBL_ENTRY _ZTI9S19584C11[];
extern  VTBL_ENTRY _ZTV9S19584C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C11[];
extern Class_Descriptor cd_S19584C3;
extern VTBL_ENTRY _ZTI8S19584C3[];
extern  VTBL_ENTRY _ZTV8S19584C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C3[];
extern Class_Descriptor cd_S19584C2;
extern VTBL_ENTRY _ZTI8S19584C2[];
extern  VTBL_ENTRY _ZTV8S19584C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C2[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C12;
extern VTBL_ENTRY _ZTI9S19584C12[];
extern  VTBL_ENTRY _ZTV9S19584C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C12[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19584C15;
extern VTBL_ENTRY _ZTI9S19584C15[];
extern  VTBL_ENTRY _ZTV9S19584C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C15[];
extern Class_Descriptor cd_S19584C14;
extern VTBL_ENTRY _ZTI9S19584C14[];
extern  VTBL_ENTRY _ZTV9S19584C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19584C16;
extern VTBL_ENTRY _ZTI9S19584C16[];
extern  VTBL_ENTRY _ZTV9S19584C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C16[];
extern Class_Descriptor cd_S19584C5;
extern VTBL_ENTRY _ZTI8S19584C5[];
extern  VTBL_ENTRY _ZTV8S19584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C5[];
extern Class_Descriptor cd_S19584C7;
extern VTBL_ENTRY _ZTI8S19584C7[];
extern  VTBL_ENTRY _ZTV8S19584C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19584C8;
extern VTBL_ENTRY _ZTI8S19584C8[];
extern  VTBL_ENTRY _ZTV8S19584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C8[];
extern Class_Descriptor cd_S19584C12;
extern VTBL_ENTRY _ZTI9S19584C12[];
extern  VTBL_ENTRY _ZTV9S19584C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C12[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19584C18;
extern VTBL_ENTRY _ZTI9S19584C18[];
extern  VTBL_ENTRY _ZTV9S19584C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C18[];
extern Class_Descriptor cd_S19584C13;
extern VTBL_ENTRY _ZTI9S19584C13[];
extern  VTBL_ENTRY _ZTV9S19584C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19584C13[];
static Base_Class bases_S19584C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19584C7,    ABISELECT(336,168), //bcp->offset
    -1, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(344,172), //bcp->offset
    74, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19584C7,    ABISELECT(360,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(368,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(360,180), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19584C4,    ABISELECT(336,168), //bcp->offset
    66, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19584C5,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(376,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19584C11,    ABISELECT(320,160), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19584C3,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19584C2,    ABISELECT(304,152), //bcp->offset
    49, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19584C5,    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
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19584C12,    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
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(392,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(384,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
    26, //immediately_derived
  0, 0},
  {&cd_S19584C5,    ABISELECT(400,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(400,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(416,208), //bcp->offset
    109, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(400,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19584C15,    ABISELECT(400,200), //bcp->offset
    100, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19584C14,    ABISELECT(384,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19584C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19584C7,    ABISELECT(64,32), //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
    27, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19584C16,    ABISELECT(48,24), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19584C5,    ABISELECT(424,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19584C7,    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
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(448,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19584C8,    ABISELECT(440,220), //bcp->offset
    126, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19584C12,    ABISELECT(424,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(464,236), //bcp->offset
    133, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19584C18,    ABISELECT(424,212), //bcp->offset
    112, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19584C13,    ABISELECT(40,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19584C1[];
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C1D1Ev();
extern void _ZN8S19584C1D0Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void ABISELECT(_ZThn40_N8S19584C1D1Ev,_ZThn20_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19584C1D0Ev,_ZThn20_N8S19584C1D0Ev)();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZThn48_N8S19584C1D1Ev,_ZThn24_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19584C1D0Ev,_ZThn24_N8S19584C1D0Ev)();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19584C1D1Ev,_ZTv0_n40_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19584C1D1Ev,_ZThn152_N8S19584C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19584C1D0Ev,_ZTv0_n40_N8S19584C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19584C1D0Ev,_ZThn152_N8S19584C1D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19584C1D1Ev,_ZTv0_n32_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S19584C1D1Ev,_ZThn192_N8S19584C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19584C1D0Ev,_ZTv0_n32_N8S19584C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S19584C1D0Ev,_ZThn192_N8S19584C1D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19584C1D1Ev,_ZTv0_n24_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S19584C1D1Ev,_ZThn200_N8S19584C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19584C1D0Ev,_ZTv0_n24_N8S19584C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S19584C1D0Ev,_ZThn200_N8S19584C1D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19584C1D1Ev,_ZTv0_n44_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn424_N8S19584C1D1Ev,_ZThn212_N8S19584C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19584C1D0Ev,_ZTv0_n44_N8S19584C1D0Ev)();
extern void ABISELECT(_ZThn424_N8S19584C1D0Ev,_ZThn212_N8S19584C1D0Ev)() __attribute__((weak));
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19584C1D1Ev,_ZTv0_n12_N8S19584C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S19584C1D1Ev,_ZThn236_N8S19584C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19584C1D0Ev,_ZTv0_n12_N8S19584C1D0Ev)();
extern void ABISELECT(_ZThn464_N8S19584C1D0Ev,_ZThn236_N8S19584C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19584C1[] = {
  0,
  ABISELECT(464,236),
  ABISELECT(424,212),
  ABISELECT(400,200),
  ABISELECT(384,192),
  ABISELECT(360,180),
  ABISELECT(336,168),
  ABISELECT(304,152),
  ABISELECT(344,172),
  ABISELECT(376,188),
  ABISELECT(336,168),
  0,
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19584C1D0Ev,
  ABISELECT(320,160),
  ABISELECT(-16,-8),
  ABISELECT(328,164),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-40,-20),
  ABISELECT(424,216),
  ABISELECT(336,168),
  ABISELECT(384,192),
  ABISELECT(360,180),
  ABISELECT(296,148),
  ABISELECT(-40,-20),
  ABISELECT(304,152),
  ABISELECT(344,172),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19584C1D1Ev,_ZThn20_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19584C1D0Ev,_ZThn20_N8S19584C1D0Ev),
  ABISELECT(288,144),
  ABISELECT(-48,-24),
  ABISELECT(288,144),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19584C1D1Ev,_ZThn24_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19584C1D0Ev,_ZThn24_N8S19584C1D0Ev),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-304,-152),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-304,-152),
  ABISELECT(32,16),
  ABISELECT(-304,-152),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19584C1D1Ev,_ZTv0_n40_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19584C1D0Ev,_ZTv0_n40_N8S19584C1D0Ev),
  ABISELECT(56,28),
  ABISELECT(-320,-160),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(-336,-168),
  ABISELECT(8,4),
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-360,-180),
  ABISELECT(-16,-8),
  ABISELECT(-360,-180),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-384,-192),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-384,-192),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-384,-192),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19584C1D1Ev,_ZTv0_n32_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19584C1D0Ev,_ZTv0_n32_N8S19584C1D0Ev),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19584C1D1Ev,_ZTv0_n24_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19584C1D0Ev,_ZTv0_n24_N8S19584C1D0Ev),
  ABISELECT(-416,-208),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  ABISELECT(-424,-212),
  ABISELECT(16,8),
  ABISELECT(-424,-212),
  ABISELECT(40,24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-88,-44),
  ABISELECT(-424,-212),
  ABISELECT(-88,-44),
  ABISELECT(-424,-212),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19584C1D1Ev,_ZTv0_n44_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19584C1D0Ev,_ZTv0_n44_N8S19584C1D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-440,-220),
  ABISELECT(-96,-48),
  ABISELECT(-440,-220),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  (VTBL_ENTRY)&(_ZTI8S19584C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19584C1D1Ev,_ZTv0_n12_N8S19584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19584C1D0Ev,_ZTv0_n12_N8S19584C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19584C1[];
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C12__8S19584C1[] = {
  ABISELECT(344,172),
  ABISELECT(376,188),
  ABISELECT(336,168),
  0,
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C12__A2__8S19584C1[] = {
  ABISELECT(336,168),
  0,
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C12__A2__8S19584C1[] = {
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C12__A1__8S19584C1[] = {
  ABISELECT(320,160),
  ABISELECT(-16,-8),
  ABISELECT(328,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C89S19584C12__A1__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C89S19584C12__A1__8S19584C1[] = {
  0,
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C12__8S19584C1[] = {
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C12__8S19584C1[] = {
  ABISELECT(320,160),
  ABISELECT(-16,-8),
  ABISELECT(328,164),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A1__9S19584C12__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN9S19584C13D1Ev();
extern void _ZN9S19584C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C13__8S19584C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(424,216),
  ABISELECT(336,168),
  ABISELECT(384,192),
  ABISELECT(360,180),
  ABISELECT(296,148),
  ABISELECT(-40,-20),
  ABISELECT(304,152),
  ABISELECT(344,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN9S19584C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C13D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C169S19584C13__A1__8S19584C1[] = {
  ABISELECT(288,144),
  ABISELECT(-48,-24),
  ABISELECT(288,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C169S19584C13__A4__8S19584C1[] = {
  ABISELECT(288,144),
  ABISELECT(-48,-24),
  ABISELECT(288,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C169S19584C13__A4__8S19584C1[] = {
  0,
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C169S19584C13__A1__8S19584C1[] = {
  0,
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19584C13D1Ev,_ZTv0_n32_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn344_N9S19584C13D1Ev,_ZThn172_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19584C13D0Ev,_ZTv0_n32_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn344_N9S19584C13D0Ev,_ZThn172_N9S19584C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C14__9S19584C13__8S19584C1[] = {
  ABISELECT(-344,-172),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-384,-192),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-344,-172),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C13D1Ev,_ZTv0_n32_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19584C13D0Ev,_ZTv0_n32_N9S19584C13D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C13__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-304,-152),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C13__8S19584C1[] = {
  0,
  ABISELECT(-296,-148),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C13D1Ev,_ZTv0_n24_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn360_N9S19584C13D1Ev,_ZThn180_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C13D0Ev,_ZTv0_n24_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn360_N9S19584C13D0Ev,_ZThn180_N9S19584C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C15__9S19584C13__8S19584C1[] = {
  ABISELECT(-360,-180),
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  ABISELECT(-360,-180),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C13D1Ev,_ZTv0_n24_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C13D0Ev,_ZTv0_n24_N9S19584C13D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C79S19584C169S19584C15__A1__9S19584C13__8S19584C1[] = {
  ABISELECT(-376,-188),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZThn8_N9S19584C13D1Ev,_ZThn4_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19584C13D0Ev,_ZThn4_N9S19584C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19584C16__A1__9S19584C13__8S19584C1[] = {
  ABISELECT(288,144),
  ABISELECT(-48,-24),
  ABISELECT(288,144),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19584C13D1Ev,_ZThn4_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19584C13D0Ev,_ZThn4_N9S19584C13D0Ev),
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19584C13D1Ev,_ZTv0_n44_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn384_N9S19584C13D1Ev,_ZThn192_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19584C13D0Ev,_ZTv0_n44_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn384_N9S19584C13D0Ev,_ZThn192_N9S19584C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C18__9S19584C13__8S19584C1[] = {
  ABISELECT(-384,-192),
  ABISELECT(16,8),
  ABISELECT(-424,-212),
  ABISELECT(40,24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-88,-44),
  ABISELECT(-424,-212),
  ABISELECT(-88,-44),
  ABISELECT(-384,-192),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19584C13D1Ev,_ZTv0_n44_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19584C13D0Ev,_ZTv0_n44_N9S19584C13D0Ev),
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C129S19584C18__9S19584C13__8S19584C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-440,-220),
  ABISELECT(-96,-48),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19584C13D1Ev,_ZTv0_n12_N9S19584C13D1Ev)();
extern void ABISELECT(_ZThn424_N9S19584C13D1Ev,_ZThn216_N9S19584C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19584C13D0Ev,_ZTv0_n12_N9S19584C13D0Ev)();
extern void ABISELECT(_ZThn424_N9S19584C13D0Ev,_ZThn216_N9S19584C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__9S19584C13__8S19584C1[] = {
  ABISELECT(-424,-216),
  ABISELECT(-424,-216),
  (VTBL_ENTRY)&(_ZTI9S19584C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C13D1Ev,_ZTv0_n12_N9S19584C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C13D0Ev,_ZTv0_n12_N9S19584C13D0Ev),
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C2D1Ev();
extern void _ZN8S19584C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C2__8S19584C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-304,-152),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19584C2D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C3D1Ev();
extern void _ZN8S19584C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C38S19584C2__8S19584C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-304,-152),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19584C3D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C58S19584C38S19584C2__A1__8S19584C1[] = {
  ABISELECT(32,16),
  ABISELECT(-304,-152),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C58S19584C38S19584C2__A1__8S19584C1[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C118S19584C38S19584C2__8S19584C1[] = {
  ABISELECT(56,28),
  ABISELECT(-320,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C11[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__8S19584C38S19584C2__8S19584C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-336,-168),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C38S19584C2__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C38S19584C2__8S19584C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-360,-180),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C11__8S19584C38S19584C2__8S19584C1[] = {
  ABISELECT(56,28),
  ABISELECT(-320,-160),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C3[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__8S19584C2__8S19584C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-336,-168),
  ABISELECT(8,4),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C2__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C2__8S19584C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-360,-180),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19584C118S19584C3__8S19584C2__8S19584C1[] = {
  ABISELECT(56,28),
  ABISELECT(-320,-160),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19584C2[0]),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C4__8S19584C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-336,-168),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C4__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C4__8S19584C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-360,-180),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19584C4[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C5__8S19584C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__8S19584C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-360,-180),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C8__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C8__8S19584C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C14D1Ev();
extern void _ZN9S19584C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C14__8S19584C1[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-384,-192),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C14D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C14__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C14__8S19584C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19584C14D1Ev,_ZThn8_N9S19584C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S19584C14D0Ev,_ZThn8_N9S19584C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19584C15__9S19584C14__8S19584C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev),
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C79S19584C169S19584C15__A1__9S19584C14__8S19584C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19584C14[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C15D1Ev();
extern void _ZN9S19584C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C15__8S19584C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C15D0Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C16D1Ev();
extern void _ZN9S19584C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C169S19584C15__8S19584C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C16D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C169S19584C15__A3__8S19584C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-400,-200),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C169S19584C15__A3__8S19584C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C169S19584C15__8S19584C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19584C16[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C15__8S19584C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19584C15[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN9S19584C18D1Ev();
extern void _ZN9S19584C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C18__8S19584C1[] = {
  ABISELECT(-424,-212),
  ABISELECT(40,24),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-88,-44),
  ABISELECT(-424,-212),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN9S19584C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19584C18D0Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19584C129S19584C18__A1__8S19584C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-88,-44),
  ABISELECT(-424,-212),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C59S19584C129S19584C18__A5__8S19584C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-424,-212),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__8S19584C59S19584C129S19584C18__A5__8S19584C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19584C5[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C129S19584C18__A2__8S19584C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-440,-220),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__8S19584C89S19584C129S19584C18__A2__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__A1__8S19584C89S19584C129S19584C18__A2__8S19584C1[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S19584C8[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C129S19584C18__A1__8S19584C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C8__9S19584C129S19584C18__A1__8S19584C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-440,-220),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__A1__9S19584C129S19584C18__A1__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19584C12[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C5__9S19584C18__8S19584C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-344,-172),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C7__9S19584C18__8S19584C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
};
extern void _ZN8S19584C72v1Ev();
extern void _ZN8S19584C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19584C89S19584C12__9S19584C18__8S19584C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-440,-220),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&_ZN8S19584C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19584C82v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19584C18D1Ev,_ZThn24_N9S19584C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S19584C18D0Ev,_ZThn24_N9S19584C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19584C18__8S19584C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19584C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev),
};
static  VTT_ENTRY vtt_S19584C1[] = {
  {&(_ZTV8S19584C1[15]),  15,138},
  {&(_tg__ZTV9S19584C12__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C59S19584C12__A2__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C12__A2__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C89S19584C12__A1__8S19584C1[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C89S19584C12__A1__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C89S19584C12__A1__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C12__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C8__9S19584C12__8S19584C1[5]),  5,7},
  {&(_tg__ZTV8S19584C5__A1__9S19584C12__8S19584C1[5]),  5,6},
  {&(_tg__ZTV9S19584C13__8S19584C1[11]),  11,13},
  {&(_tg__ZTV9S19584C169S19584C13__A1__8S19584C1[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C169S19584C13__A4__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C169S19584C13__A4__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C169S19584C13__A1__8S19584C1[3]),  3,4},
  {&(_tg__ZTV9S19584C14__9S19584C13__8S19584C1[8]),  8,11},
  {&(_tg__ZTV8S19584C5__9S19584C13__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__9S19584C13__8S19584C1[3]),  3,4},
  {&(_tg__ZTV9S19584C15__9S19584C13__8S19584C1[6]),  6,9},
  {&(_tg__ZTV8S19584C79S19584C169S19584C15__A1__9S19584C13__8S19584C1[2]),  2,3},
  {&(_tg__ZTV9S19584C16__A1__9S19584C13__8S19584C1[5]),  5,8},
  {&(_tg__ZTV9S19584C18__9S19584C13__8S19584C1[11]),  11,14},
  {&(_tg__ZTV8S19584C89S19584C129S19584C18__9S19584C13__8S19584C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__9S19584C13__8S19584C1[3]),  3,5},
  {&(_ZTV8S19584C1[59]),  59,138},
  {&(_ZTV8S19584C1[73]),  73,138},
  {&(_ZTV8S19584C1[79]),  79,138},
  {&(_ZTV8S19584C1[73]),  73,138},
  {&(_ZTV8S19584C1[87]),  87,138},
  {&(_ZTV8S19584C1[66]),  66,138},
  {&(_ZTV8S19584C1[23]),  23,138},
  {&(_ZTV8S19584C1[36]),  36,138},
  {&(_ZTV8S19584C1[97]),  97,138},
  {&(_ZTV8S19584C1[106]),  106,138},
  {&(_ZTV8S19584C1[111]),  111,138},
  {&(_ZTV8S19584C1[43]),  43,138},
  {&(_ZTV8S19584C1[123]),  123,138},
  {&(_ZTV8S19584C1[131]),  131,138},
  {&(_ZTV8S19584C1[136]),  136,138},
  {&(_tg__ZTV8S19584C2__8S19584C1[9]),  9,12},
  {&(_tg__ZTV8S19584C38S19584C2__8S19584C1[9]),  9,12},
  {&(_tg__ZTV8S19584C58S19584C38S19584C2__A1__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C58S19584C38S19584C2__A1__8S19584C1[3]),  3,4},
  {&(_tg__ZTV9S19584C118S19584C38S19584C2__8S19584C1[4]),  4,4},
  {&(_tg__ZTV8S19584C4__8S19584C38S19584C2__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C38S19584C2__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C4__8S19584C38S19584C2__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C38S19584C2__8S19584C1[7]),  7,9},
  {&(_tg__ZTV9S19584C11__8S19584C38S19584C2__8S19584C1[4]),  4,4},
  {&(_tg__ZTV8S19584C4__8S19584C2__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C2__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C4__8S19584C2__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C2__8S19584C1[7]),  7,9},
  {&(_tg__ZTV9S19584C118S19584C3__8S19584C2__8S19584C1[4]),  4,4},
  {&(_tg__ZTV8S19584C4__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C5__8S19584C4__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C4__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C8__8S19584C4__8S19584C1[7]),  7,9},
  {&(_tg__ZTV8S19584C5__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C5__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C8__8S19584C1[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C8__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C8__8S19584C1[3]),  3,4},
  {&(_tg__ZTV9S19584C14__8S19584C1[7]),  7,10},
  {&(_tg__ZTV8S19584C5__9S19584C14__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__9S19584C14__8S19584C1[3]),  3,4},
  {&(_tg__ZTV9S19584C15__9S19584C14__8S19584C1[6]),  6,9},
  {&(_tg__ZTV8S19584C79S19584C169S19584C15__A1__9S19584C14__8S19584C1[2]),  2,3},
  {&(_tg__ZTV9S19584C15__8S19584C1[5]),  5,8},
  {&(_tg__ZTV9S19584C169S19584C15__8S19584C1[5]),  5,8},
  {&(_tg__ZTV8S19584C59S19584C169S19584C15__A3__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C169S19584C15__A3__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C169S19584C15__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C15__8S19584C1[3]),  3,4},
  {&(_tg__ZTV9S19584C18__8S19584C1[9]),  9,12},
  {&(_tg__ZTV9S19584C129S19584C18__A1__8S19584C1[7]),  7,8},
  {&(_tg__ZTV8S19584C59S19584C129S19584C18__A5__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__8S19584C59S19584C129S19584C18__A5__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C89S19584C129S19584C18__A2__8S19584C1[5]),  5,7},
  {&(_tg__ZTV8S19584C5__8S19584C89S19584C129S19584C18__A2__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__A1__8S19584C89S19584C129S19584C18__A2__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C7__9S19584C129S19584C18__A1__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C8__9S19584C129S19584C18__A1__8S19584C1[5]),  5,7},
  {&(_tg__ZTV8S19584C5__A1__9S19584C129S19584C18__A1__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C5__9S19584C18__8S19584C1[5]),  5,6},
  {&(_tg__ZTV8S19584C7__9S19584C18__8S19584C1[3]),  3,4},
  {&(_tg__ZTV8S19584C89S19584C12__9S19584C18__8S19584C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__9S19584C18__8S19584C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19584C1[];
extern  VTBL_ENTRY _ZTV8S19584C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19584C1[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C18D0Ev,_ZTv0_n12_N9S19584C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19584C18D0Ev,_ZThn24_N9S19584C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C18D1Ev,_ZTv0_n12_N9S19584C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19584C18D1Ev,_ZThn24_N9S19584C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C14D0Ev,_ZTv0_n24_N9S19584C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19584C14D0Ev,_ZThn8_N9S19584C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C14D1Ev,_ZTv0_n24_N9S19584C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19584C14D1Ev,_ZThn8_N9S19584C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C13D0Ev,_ZTv0_n12_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N9S19584C13D0Ev,_ZThn216_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19584C13D1Ev,_ZTv0_n12_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N9S19584C13D1Ev,_ZThn216_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19584C13D0Ev,_ZTv0_n44_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19584C13D0Ev,_ZThn192_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19584C13D1Ev,_ZTv0_n44_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19584C13D1Ev,_ZThn192_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C13D0Ev,_ZTv0_n24_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N9S19584C13D0Ev,_ZThn180_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19584C13D1Ev,_ZTv0_n24_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N9S19584C13D1Ev,_ZThn180_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C13D0Ev,_ZTv0_n32_N9S19584C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19584C13D0Ev,_ZThn172_N9S19584C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19584C13D1Ev,_ZTv0_n32_N9S19584C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19584C13D1Ev,_ZThn172_N9S19584C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19584C1D0Ev,_ZTv0_n12_N8S19584C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19584C1D0Ev,_ZThn236_N8S19584C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19584C1D1Ev,_ZTv0_n12_N8S19584C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19584C1D1Ev,_ZThn236_N8S19584C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19584C1D0Ev,_ZTv0_n44_N8S19584C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S19584C1D0Ev,_ZThn212_N8S19584C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19584C1D1Ev,_ZTv0_n44_N8S19584C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S19584C1D1Ev,_ZThn212_N8S19584C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19584C1D0Ev,_ZTv0_n24_N8S19584C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19584C1D0Ev,_ZThn200_N8S19584C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19584C1D1Ev,_ZTv0_n24_N8S19584C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19584C1D1Ev,_ZThn200_N8S19584C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19584C1D0Ev,_ZTv0_n32_N8S19584C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19584C1D0Ev,_ZThn192_N8S19584C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19584C1D1Ev,_ZTv0_n32_N8S19584C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19584C1D1Ev,_ZThn192_N8S19584C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19584C1D0Ev,_ZTv0_n40_N8S19584C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19584C1D0Ev,_ZThn152_N8S19584C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19584C1D1Ev,_ZTv0_n40_N8S19584C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19584C1D1Ev,_ZThn152_N8S19584C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19584C1 = {  "S19584C1", // class name
  bases_S19584C1, 42,
  &(vtc_S19584C1[0]), // expected_vtbl_contents
  &(vtt_S19584C1[0]), // expected_vtt_contents
  ABISELECT(472,240), // object size
  NSPAIRA(_ZTI8S19584C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19584C1),138, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19584C1),88, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2207C4  {
  ::S5757C13_nt s2207c4f0;
  unsigned int s2207c4f1:1;
  virtual  ~S2207C4(); // _ZN7S2207C4D1Ev
  virtual void  v3(); // _ZN7S2207C42v3Ev
  virtual void  v4(); // _ZN7S2207C42v4Ev
  virtual void  v5(); // _ZN7S2207C42v5Ev
  virtual void  v6(); // _ZN7S2207C42v6Ev
  virtual void  v7(); // _ZN7S2207C42v7Ev
  virtual void  v8(); // _ZN7S2207C42v8Ev
  virtual void  v9(); // _ZN7S2207C42v9Ev
  S2207C4(); // tgen
};
//SIG(-1 S2207C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S2207C4 ::~S2207C4(){ note_dtor("S2207C4", this);}
void  S2207C4 ::v3(){vfunc_called(this, "_ZN7S2207C42v3Ev");}
void  S2207C4 ::v4(){vfunc_called(this, "_ZN7S2207C42v4Ev");}
void  S2207C4 ::v5(){vfunc_called(this, "_ZN7S2207C42v5Ev");}
void  S2207C4 ::v6(){vfunc_called(this, "_ZN7S2207C42v6Ev");}
void  S2207C4 ::v7(){vfunc_called(this, "_ZN7S2207C42v7Ev");}
void  S2207C4 ::v8(){vfunc_called(this, "_ZN7S2207C42v8Ev");}
void  S2207C4 ::v9(){vfunc_called(this, "_ZN7S2207C42v9Ev");}
S2207C4 ::S2207C4(){ note_ctor("S2207C4", this);} // tgen

static void Test_S2207C4()
{
  extern Class_Descriptor cd_S2207C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S2207C4, buf);
    S2207C4 *dp, &lv = *(dp=new (buf) S2207C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S2207C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2207C4)");
    check_field_offset(lv, s2207c4f0, ABISELECT(8,4), "S2207C4.s2207c4f0");
    set_bf_and_test(lv, s2207c4f1, ABISELECT(32,16), 0, 1, 1, "S2207C4");
    test_class_info(&lv, &cd_S2207C4);
    dp->~S2207C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2207C4(Test_S2207C4, "S2207C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S2207C4C1Ev();
extern void _ZN7S2207C4D1Ev();
Name_Map name_map_S2207C4[] = {
  NSPAIR(_ZN7S2207C4C1Ev),
  NSPAIR(_ZN7S2207C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2207C4[];
extern void _ZN7S2207C4D1Ev();
extern void _ZN7S2207C4D0Ev();
extern void _ZN7S2207C42v3Ev();
extern void _ZN7S2207C42v4Ev();
extern void _ZN7S2207C42v5Ev();
extern void _ZN7S2207C42v6Ev();
extern void _ZN7S2207C42v7Ev();
extern void _ZN7S2207C42v8Ev();
extern void _ZN7S2207C42v9Ev();
static  VTBL_ENTRY vtc_S2207C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2207C4[0]),
  (VTBL_ENTRY)&_ZN7S2207C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2207C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S2207C4[];
extern  VTBL_ENTRY _ZTV7S2207C4[];
Class_Descriptor cd_S2207C4 = {  "S2207C4", // class name
  0,0,//no base classes
  &(vtc_S2207C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S2207C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2207C4),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  S2207C3  : S2207C4 {
  ::S5757C17_nt s2207c3f0;
  ::S5757C17_nt s2207c3f1;
  ::S19894C6_nt s2207c3f2;
  ::S19894C6_nt s2207c3f3;
  ::S19894C6_nt s2207c3f4;
  ::S19894C6_nt s2207c3f5;
  ::S19894C6_nt s2207c3f6;
  ::S5757C20_nt s2207c3f7;
  virtual void  v10(); // _ZN7S2207C33v10Ev
  virtual void  v11(); // _ZN7S2207C33v11Ev
  virtual void  v12(); // _ZN7S2207C33v12Ev
  ~S2207C3(); // tgen
  S2207C3(); // tgen
};
//SIG(-1 S2207C3) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S2207C3 ::v10(){vfunc_called(this, "_ZN7S2207C33v10Ev");}
void  S2207C3 ::v11(){vfunc_called(this, "_ZN7S2207C33v11Ev");}
void  S2207C3 ::v12(){vfunc_called(this, "_ZN7S2207C33v12Ev");}
S2207C3 ::~S2207C3(){ note_dtor("S2207C3", this);} // tgen
S2207C3 ::S2207C3(){ note_ctor("S2207C3", this);} // tgen

static void Test_S2207C3()
{
  extern Class_Descriptor cd_S2207C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S2207C3, buf);
    S2207C3 *dp, &lv = *(dp=new (buf) S2207C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S2207C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2207C3)");
    check_base_class_offset(lv, (S2207C4*), 0, "S2207C3");
    check_field_offset(lv, s2207c3f0, ABISELECT(40,20), "S2207C3.s2207c3f0");
    check_field_offset(lv, s2207c3f1, ABISELECT(304,216), "S2207C3.s2207c3f1");
    check_field_offset(lv, s2207c3f2, ABISELECT(568,412), "S2207C3.s2207c3f2");
    check_field_offset(lv, s2207c3f3, ABISELECT(576,416), "S2207C3.s2207c3f3");
    check_field_offset(lv, s2207c3f4, ABISELECT(584,420), "S2207C3.s2207c3f4");
    check_field_offset(lv, s2207c3f5, ABISELECT(592,424), "S2207C3.s2207c3f5");
    check_field_offset(lv, s2207c3f6, ABISELECT(600,428), "S2207C3.s2207c3f6");
    check_field_offset(lv, s2207c3f7, ABISELECT(608,432), "S2207C3.s2207c3f7");
    test_class_info(&lv, &cd_S2207C3);
    dp->~S2207C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2207C3(Test_S2207C3, "S2207C3", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN7S2207C3C1Ev();
extern void _ZN7S2207C3D1Ev();
Name_Map name_map_S2207C3[] = {
  NSPAIR(_ZN7S2207C3C1Ev),
  NSPAIR(_ZN7S2207C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2207C4;
extern VTBL_ENTRY _ZTI7S2207C4[];
extern  VTBL_ENTRY _ZTV7S2207C4[];
static Base_Class bases_S2207C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2207C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2207C3[];
extern void _ZN7S2207C3D1Ev();
extern void _ZN7S2207C3D0Ev();
extern void _ZN7S2207C42v3Ev();
extern void _ZN7S2207C42v4Ev();
extern void _ZN7S2207C42v5Ev();
extern void _ZN7S2207C42v6Ev();
extern void _ZN7S2207C42v7Ev();
extern void _ZN7S2207C42v8Ev();
extern void _ZN7S2207C42v9Ev();
extern void _ZN7S2207C33v10Ev();
extern void _ZN7S2207C33v11Ev();
extern void _ZN7S2207C33v12Ev();
static  VTBL_ENTRY vtc_S2207C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2207C3[0]),
  (VTBL_ENTRY)&_ZN7S2207C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2207C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S2207C3[];
extern  VTBL_ENTRY _ZTV7S2207C3[];
Class_Descriptor cd_S2207C3 = {  "S2207C3", // class name
  bases_S2207C3, 1,
  &(vtc_S2207C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI7S2207C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2207C3),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2207C2  : S2207C3 {
  ::S900C12 s2207c2f0;
  ::S900C15 s2207c2f1;
  virtual void  v13(); // _ZN7S2207C23v13Ev
  virtual void  v14(); // _ZN7S2207C23v14Ev
  virtual void  v15(); // _ZN7S2207C23v15Ev
  ~S2207C2(); // tgen
  S2207C2(); // tgen
};
//SIG(-1 S2207C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 FC4{ m Fp[3]} Fi:1} v11 v12 v13 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 v3 FC10{ FC11{ m Fp Fc[3] Fi} FC11[2] FC12{ m FC11[4] Fi} FC11 FC11} FC13{ m FC14{ BC15{ m Fp Fi[2]}} Fi}}


void  S2207C2 ::v13(){vfunc_called(this, "_ZN7S2207C23v13Ev");}
void  S2207C2 ::v14(){vfunc_called(this, "_ZN7S2207C23v14Ev");}
void  S2207C2 ::v15(){vfunc_called(this, "_ZN7S2207C23v15Ev");}
S2207C2 ::~S2207C2(){ note_dtor("S2207C2", this);} // tgen
S2207C2 ::S2207C2(){ note_ctor("S2207C2", this);} // tgen

static void Test_S2207C2()
{
  extern Class_Descriptor cd_S2207C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(101,145)];
    init_test(&cd_S2207C2, buf);
    S2207C2 *dp, &lv = *(dp=new (buf) S2207C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(800,576), "sizeof(S2207C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2207C2)");
    check_base_class_offset(lv, (S2207C4*)(S2207C3*), 0, "S2207C2");
    check_base_class_offset(lv, (S2207C3*), 0, "S2207C2");
    check_field_offset(lv, s2207c2f0, ABISELECT(624,448), "S2207C2.s2207c2f0");
    check_field_offset(lv, s2207c2f1, ABISELECT(776,560), "S2207C2.s2207c2f1");
    test_class_info(&lv, &cd_S2207C2);
    dp->~S2207C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2207C2(Test_S2207C2, "S2207C2", ABISELECT(800,576));

#else // __cplusplus

extern void _ZN7S2207C2C1Ev();
extern void _ZN7S2207C2D1Ev();
Name_Map name_map_S2207C2[] = {
  NSPAIR(_ZN7S2207C2C1Ev),
  NSPAIR(_ZN7S2207C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2207C4;
extern VTBL_ENTRY _ZTI7S2207C4[];
extern  VTBL_ENTRY _ZTV7S2207C4[];
extern Class_Descriptor cd_S2207C3;
extern VTBL_ENTRY _ZTI7S2207C3[];
extern  VTBL_ENTRY _ZTV7S2207C3[];
static Base_Class bases_S2207C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2207C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2207C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2207C2[];
extern void _ZN7S2207C2D1Ev();
extern void _ZN7S2207C2D0Ev();
extern void _ZN7S2207C42v3Ev();
extern void _ZN7S2207C42v4Ev();
extern void _ZN7S2207C42v5Ev();
extern void _ZN7S2207C42v6Ev();
extern void _ZN7S2207C42v7Ev();
extern void _ZN7S2207C42v8Ev();
extern void _ZN7S2207C42v9Ev();
extern void _ZN7S2207C33v10Ev();
extern void _ZN7S2207C33v11Ev();
extern void _ZN7S2207C33v12Ev();
extern void _ZN7S2207C23v13Ev();
extern void _ZN7S2207C23v14Ev();
extern void _ZN7S2207C23v15Ev();
static  VTBL_ENTRY vtc_S2207C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2207C2[0]),
  (VTBL_ENTRY)&_ZN7S2207C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2207C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2207C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2207C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2207C23v15Ev,
};
extern VTBL_ENTRY _ZTI7S2207C2[];
extern  VTBL_ENTRY _ZTV7S2207C2[];
Class_Descriptor cd_S2207C2 = {  "S2207C2", // class name
  bases_S2207C2, 2,
  &(vtc_S2207C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(800,576), // object size
  NSPAIRA(_ZTI7S2207C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2207C2),17, //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  S2207C18  {
  virtual  ~S2207C18(); // _ZN8S2207C18D1Ev
  virtual void  v16(); // _ZN8S2207C183v16Ev
  virtual void  v17(); // _ZN8S2207C183v17Ev
  virtual void  v18(); // _ZN8S2207C183v18Ev
  virtual void  v19(); // _ZN8S2207C183v19Ev
  S2207C18(); // tgen
};
//SIG(-1 S2207C18) C1{ vd v1 v2 v3 v4}


 S2207C18 ::~S2207C18(){ note_dtor("S2207C18", this);}
void  S2207C18 ::v16(){vfunc_called(this, "_ZN8S2207C183v16Ev");}
void  S2207C18 ::v17(){vfunc_called(this, "_ZN8S2207C183v17Ev");}
void  S2207C18 ::v18(){vfunc_called(this, "_ZN8S2207C183v18Ev");}
void  S2207C18 ::v19(){vfunc_called(this, "_ZN8S2207C183v19Ev");}
S2207C18 ::S2207C18(){ note_ctor("S2207C18", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S2207C18C1Ev();
extern void _ZN8S2207C18D1Ev();
Name_Map name_map_S2207C18[] = {
  NSPAIR(_ZN8S2207C18C1Ev),
  NSPAIR(_ZN8S2207C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S2207C18[];
extern void _ZN8S2207C18D1Ev();
extern void _ZN8S2207C18D0Ev();
extern void _ZN8S2207C183v16Ev();
extern void _ZN8S2207C183v17Ev();
extern void _ZN8S2207C183v18Ev();
extern void _ZN8S2207C183v19Ev();
static  VTBL_ENTRY vtc_S2207C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2207C18[0]),
  (VTBL_ENTRY)&_ZN8S2207C18D1Ev,
  (VTBL_ENTRY)&_ZN8S2207C18D0Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v16Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v17Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v18Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v19Ev,
};
extern VTBL_ENTRY _ZTI8S2207C18[];
extern  VTBL_ENTRY _ZTV8S2207C18[];
Class_Descriptor cd_S2207C18 = {  "S2207C18", // class name
  0,0,//no base classes
  &(vtc_S2207C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2207C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S2207C18),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  S2207C17  : S2207C18 {
  ::S19894C34 s2207c17f0;
  ::S3223C13_nt s2207c17f1;
  ::S3223C4_nt s2207c17f2;
  virtual void  v20(); // _ZN8S2207C173v20Ev
  virtual void  v21(); // _ZN8S2207C173v21Ev
  virtual void  v22(); // _ZN8S2207C173v22Ev
  ~S2207C17(); // tgen
  S2207C17(); // tgen
};
//SIG(-1 S2207C17) C1{ BC2{ vd v4 v5 v6 v7} v1 v2 v3 FC3{ m} FC4{ m Fi[3]} FC5{ m Fi[2]}}


void  S2207C17 ::v20(){vfunc_called(this, "_ZN8S2207C173v20Ev");}
void  S2207C17 ::v21(){vfunc_called(this, "_ZN8S2207C173v21Ev");}
void  S2207C17 ::v22(){vfunc_called(this, "_ZN8S2207C173v22Ev");}
S2207C17 ::~S2207C17(){ note_dtor("S2207C17", this);} // tgen
S2207C17 ::S2207C17(){ note_ctor("S2207C17", this);} // tgen

static void Test_S2207C17()
{
  extern Class_Descriptor cd_S2207C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S2207C17, buf);
    S2207C17 *dp, &lv = *(dp=new (buf) S2207C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S2207C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2207C17)");
    check_base_class_offset(lv, (S2207C18*), 0, "S2207C17");
    check_field_offset(lv, s2207c17f0, ABISELECT(8,4), "S2207C17.s2207c17f0");
    check_field_offset(lv, s2207c17f1, ABISELECT(12,8), "S2207C17.s2207c17f1");
    check_field_offset(lv, s2207c17f2, ABISELECT(24,20), "S2207C17.s2207c17f2");
    test_class_info(&lv, &cd_S2207C17);
    dp->~S2207C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2207C17(Test_S2207C17, "S2207C17", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN8S2207C17C1Ev();
extern void _ZN8S2207C17D1Ev();
Name_Map name_map_S2207C17[] = {
  NSPAIR(_ZN8S2207C17C1Ev),
  NSPAIR(_ZN8S2207C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2207C18;
extern VTBL_ENTRY _ZTI8S2207C18[];
extern  VTBL_ENTRY _ZTV8S2207C18[];
static Base_Class bases_S2207C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2207C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2207C17[];
extern void _ZN8S2207C17D1Ev();
extern void _ZN8S2207C17D0Ev();
extern void _ZN8S2207C183v16Ev();
extern void _ZN8S2207C183v17Ev();
extern void _ZN8S2207C183v18Ev();
extern void _ZN8S2207C183v19Ev();
extern void _ZN8S2207C173v20Ev();
extern void _ZN8S2207C173v21Ev();
extern void _ZN8S2207C173v22Ev();
static  VTBL_ENTRY vtc_S2207C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2207C17[0]),
  (VTBL_ENTRY)&_ZN8S2207C17D1Ev,
  (VTBL_ENTRY)&_ZN8S2207C17D0Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v16Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v17Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v18Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v19Ev,
  (VTBL_ENTRY)&_ZN8S2207C173v20Ev,
  (VTBL_ENTRY)&_ZN8S2207C173v21Ev,
  (VTBL_ENTRY)&_ZN8S2207C173v22Ev,
};
extern VTBL_ENTRY _ZTI8S2207C17[];
extern  VTBL_ENTRY _ZTV8S2207C17[];
Class_Descriptor cd_S2207C17 = {  "S2207C17", // class name
  bases_S2207C17, 1,
  &(vtc_S2207C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI8S2207C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S2207C17),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  S2207C1  : S2207C2 , S2207C17 {
  virtual void  v1(); // _ZN7S2207C12v1Ev
  virtual void  v2(); // _ZN7S2207C12v2Ev
  ~S2207C1(); // tgen
  S2207C1(); // tgen
};
//SIG(1 S2207C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 v7 v8 v9 FC5{ m Fp[3]} Fi:1} v10 v11 v12 FC6{ m FC7{ Fp Fi[2]}[16] Fi} FC6 FC8{ m Fp} FC8 FC8 FC8 FC8 FC9{ m FC10{ Fc[3] Fi} Fi[2]}} v13 v14 v15 FC11{ FC12{ m Fp Fc[3] Fi} FC12[2] FC13{ m FC12[4] Fi} FC12 FC12} FC14{ m FC15{ BC16{ m Fp Fi[2]}} Fi}} BC17{ BC18{ vd v16 v17 v18 v19} v20 v21 v22 FC19{ m} FC20{ m Fi[3]} FC21{ m Fi[2]}} v1 v2}


void  S2207C1 ::v1(){vfunc_called(this, "_ZN7S2207C12v1Ev");}
void  S2207C1 ::v2(){vfunc_called(this, "_ZN7S2207C12v2Ev");}
S2207C1 ::~S2207C1(){ note_dtor("S2207C1", this);} // tgen
S2207C1 ::S2207C1(){ note_ctor("S2207C1", this);} // tgen

static void Test_S2207C1()
{
  extern Class_Descriptor cd_S2207C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(105,152)];
    init_test(&cd_S2207C1, buf);
    S2207C1 *dp, &lv = *(dp=new (buf) S2207C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,604), "sizeof(S2207C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2207C1)");
    check_base_class_offset(lv, (S2207C4*)(S2207C3*)(S2207C2*), 0, "S2207C1");
    check_base_class_offset(lv, (S2207C3*)(S2207C2*), 0, "S2207C1");
    check_base_class_offset(lv, (S2207C2*), 0, "S2207C1");
    check_base_class_offset(lv, (S2207C18*)(S2207C17*), ABISELECT(800,576), "S2207C1");
    check_base_class_offset(lv, (S2207C17*), ABISELECT(800,576), "S2207C1");
    test_class_info(&lv, &cd_S2207C1);
    dp->~S2207C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2207C1(Test_S2207C1, "S2207C1", ABISELECT(832,604));

#else // __cplusplus

extern void _ZN7S2207C1C1Ev();
extern void _ZN7S2207C1D1Ev();
Name_Map name_map_S2207C1[] = {
  NSPAIR(_ZN7S2207C1C1Ev),
  NSPAIR(_ZN7S2207C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2207C4;
extern VTBL_ENTRY _ZTI7S2207C4[];
extern  VTBL_ENTRY _ZTV7S2207C4[];
extern Class_Descriptor cd_S2207C3;
extern VTBL_ENTRY _ZTI7S2207C3[];
extern  VTBL_ENTRY _ZTV7S2207C3[];
extern Class_Descriptor cd_S2207C2;
extern VTBL_ENTRY _ZTI7S2207C2[];
extern  VTBL_ENTRY _ZTV7S2207C2[];
extern Class_Descriptor cd_S2207C18;
extern VTBL_ENTRY _ZTI8S2207C18[];
extern  VTBL_ENTRY _ZTV8S2207C18[];
extern Class_Descriptor cd_S2207C17;
extern VTBL_ENTRY _ZTI8S2207C17[];
extern  VTBL_ENTRY _ZTV8S2207C17[];
static Base_Class bases_S2207C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2207C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2207C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2207C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2207C18,    ABISELECT(800,576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2207C17,    ABISELECT(800,576), //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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2207C1[];
extern void _ZN7S2207C1D1Ev();
extern void _ZN7S2207C1D0Ev();
extern void _ZN7S2207C42v3Ev();
extern void _ZN7S2207C42v4Ev();
extern void _ZN7S2207C42v5Ev();
extern void _ZN7S2207C42v6Ev();
extern void _ZN7S2207C42v7Ev();
extern void _ZN7S2207C42v8Ev();
extern void _ZN7S2207C42v9Ev();
extern void _ZN7S2207C33v10Ev();
extern void _ZN7S2207C33v11Ev();
extern void _ZN7S2207C33v12Ev();
extern void _ZN7S2207C23v13Ev();
extern void _ZN7S2207C23v14Ev();
extern void _ZN7S2207C23v15Ev();
extern void _ZN7S2207C12v1Ev();
extern void _ZN7S2207C12v2Ev();
extern void ABISELECT(_ZThn800_N7S2207C1D1Ev,_ZThn576_N7S2207C1D1Ev)();
extern void ABISELECT(_ZThn800_N7S2207C1D0Ev,_ZThn576_N7S2207C1D0Ev)();
extern void _ZN8S2207C183v16Ev();
extern void _ZN8S2207C183v17Ev();
extern void _ZN8S2207C183v18Ev();
extern void _ZN8S2207C183v19Ev();
extern void _ZN8S2207C173v20Ev();
extern void _ZN8S2207C173v21Ev();
extern void _ZN8S2207C173v22Ev();
static  VTBL_ENTRY vtc_S2207C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2207C1[0]),
  (VTBL_ENTRY)&_ZN7S2207C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2207C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2207C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2207C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2207C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2207C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2207C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2207C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2207C12v2Ev,
  ABISELECT(-800,-576),
  (VTBL_ENTRY)&(_ZTI7S2207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N7S2207C1D1Ev,_ZThn576_N7S2207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N7S2207C1D0Ev,_ZThn576_N7S2207C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2207C183v16Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v17Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v18Ev,
  (VTBL_ENTRY)&_ZN8S2207C183v19Ev,
  (VTBL_ENTRY)&_ZN8S2207C173v20Ev,
  (VTBL_ENTRY)&_ZN8S2207C173v21Ev,
  (VTBL_ENTRY)&_ZN8S2207C173v22Ev,
};
extern VTBL_ENTRY _ZTI7S2207C1[];
extern  VTBL_ENTRY _ZTV7S2207C1[];
Class_Descriptor cd_S2207C1 = {  "S2207C1", // class name
  bases_S2207C1, 5,
  &(vtc_S2207C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,604), // object size
  NSPAIRA(_ZTI7S2207C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2207C1),30, //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  S20183C2_nt  {
  void *s20183c2f0;
  virtual void  v4(); // _ZN11S20183C2_nt2v4Ev
  virtual void  v5(); // _ZN11S20183C2_nt2v5Ev
  ~S20183C2_nt(); // tgen
  S20183C2_nt(); // tgen
};
//SIG(-1 S20183C2_nt) C1{ v1 v2 Fp}


void  S20183C2_nt ::v4(){vfunc_called(this, "_ZN11S20183C2_nt2v4Ev");}
void  S20183C2_nt ::v5(){vfunc_called(this, "_ZN11S20183C2_nt2v5Ev");}
S20183C2_nt ::~S20183C2_nt(){ note_dtor("S20183C2_nt", this);} // tgen
S20183C2_nt ::S20183C2_nt(){ note_ctor("S20183C2_nt", this);} // tgen

//skip512 S20183C2_nt

#else // __cplusplus

extern void _ZN11S20183C2_ntC1Ev();
extern void _ZN11S20183C2_ntD1Ev();
Name_Map name_map_S20183C2_nt[] = {
  NSPAIR(_ZN11S20183C2_ntC1Ev),
  NSPAIR(_ZN11S20183C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20183C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
VTBL_ENTRY *P__ZTI11S20183C2_nt = _ZTI11S20183C2_nt; 
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
Class_Descriptor cd_S20183C2_nt = {  "S20183C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20183C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20183C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20183C2_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  S20183C4  : S20183C2_nt {
  virtual void  v6(); // _ZN8S20183C42v6Ev
  virtual void  v7(); // _ZN8S20183C42v7Ev
  virtual void  v8(); // _ZN8S20183C42v8Ev
  virtual void  v9(); // _ZN8S20183C42v9Ev
  virtual void  v10(); // _ZN8S20183C43v10Ev
  virtual void  v11(); // _ZN8S20183C43v11Ev
  virtual void  v12(); // _ZN8S20183C43v12Ev
  virtual void  v13(); // _ZN8S20183C43v13Ev
  virtual void  v14(); // _ZN8S20183C43v14Ev
  ~S20183C4(); // tgen
  S20183C4(); // tgen
};
//SIG(-1 S20183C4) C1{ BC2{ v10 v11 Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20183C4 ::v6(){vfunc_called(this, "_ZN8S20183C42v6Ev");}
void  S20183C4 ::v7(){vfunc_called(this, "_ZN8S20183C42v7Ev");}
void  S20183C4 ::v8(){vfunc_called(this, "_ZN8S20183C42v8Ev");}
void  S20183C4 ::v9(){vfunc_called(this, "_ZN8S20183C42v9Ev");}
void  S20183C4 ::v10(){vfunc_called(this, "_ZN8S20183C43v10Ev");}
void  S20183C4 ::v11(){vfunc_called(this, "_ZN8S20183C43v11Ev");}
void  S20183C4 ::v12(){vfunc_called(this, "_ZN8S20183C43v12Ev");}
void  S20183C4 ::v13(){vfunc_called(this, "_ZN8S20183C43v13Ev");}
void  S20183C4 ::v14(){vfunc_called(this, "_ZN8S20183C43v14Ev");}
S20183C4 ::~S20183C4(){ note_dtor("S20183C4", this);} // tgen
S20183C4 ::S20183C4(){ note_ctor("S20183C4", this);} // tgen

static void Test_S20183C4()
{
  extern Class_Descriptor cd_S20183C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20183C4, buf);
    S20183C4 *dp, &lv = *(dp=new (buf) S20183C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20183C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C4)");
    check_base_class_offset(lv, (S20183C2_nt*), 0, "S20183C4");
    test_class_info(&lv, &cd_S20183C4);
    dp->~S20183C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C4(Test_S20183C4, "S20183C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20183C4C1Ev();
extern void _ZN8S20183C4D1Ev();
Name_Map name_map_S20183C4[] = {
  NSPAIR(_ZN8S20183C4C1Ev),
  NSPAIR(_ZN8S20183C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
static Base_Class bases_S20183C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20183C4[];
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
extern void _ZN8S20183C42v6Ev();
extern void _ZN8S20183C42v7Ev();
extern void _ZN8S20183C42v8Ev();
extern void _ZN8S20183C42v9Ev();
extern void _ZN8S20183C43v10Ev();
extern void _ZN8S20183C43v11Ev();
extern void _ZN8S20183C43v12Ev();
extern void _ZN8S20183C43v13Ev();
extern void _ZN8S20183C43v14Ev();
static  VTBL_ENTRY vtc_S20183C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C4[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v14Ev,
};
extern VTBL_ENTRY _ZTI8S20183C4[];
extern  VTBL_ENTRY _ZTV8S20183C4[];
Class_Descriptor cd_S20183C4 = {  "S20183C4", // class name
  bases_S20183C4, 1,
  &(vtc_S20183C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20183C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20183C4),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  S20183C6  : virtual S20183C2_nt {
  virtual void  v15(); // _ZN8S20183C63v15Ev
  virtual void  v16(); // _ZN8S20183C63v16Ev
  virtual void  v17(); // _ZN8S20183C63v17Ev
  virtual void  v18(); // _ZN8S20183C63v18Ev
  virtual void  v19(); // _ZN8S20183C63v19Ev
  virtual void  v20(); // _ZN8S20183C63v20Ev
  ~S20183C6(); // tgen
  S20183C6(); // tgen
};
//SIG(-1 S20183C6) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S20183C6 ::v15(){vfunc_called(this, "_ZN8S20183C63v15Ev");}
void  S20183C6 ::v16(){vfunc_called(this, "_ZN8S20183C63v16Ev");}
void  S20183C6 ::v17(){vfunc_called(this, "_ZN8S20183C63v17Ev");}
void  S20183C6 ::v18(){vfunc_called(this, "_ZN8S20183C63v18Ev");}
void  S20183C6 ::v19(){vfunc_called(this, "_ZN8S20183C63v19Ev");}
void  S20183C6 ::v20(){vfunc_called(this, "_ZN8S20183C63v20Ev");}
S20183C6 ::~S20183C6(){ note_dtor("S20183C6", this);} // tgen
S20183C6 ::S20183C6(){ note_ctor("S20183C6", this);} // tgen

static void Test_S20183C6()
{
  extern Class_Descriptor cd_S20183C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20183C6, buf);
    S20183C6 *dp, &lv = *(dp=new (buf) S20183C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20183C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C6)");
    check_base_class_offset(lv, (S20183C2_nt*), ABISELECT(8,4), "S20183C6");
    test_class_info(&lv, &cd_S20183C6);
    dp->~S20183C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C6(Test_S20183C6, "S20183C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20183C6C1Ev();
extern void _ZN8S20183C6D1Ev();
Name_Map name_map_S20183C6[] = {
  NSPAIR(_ZN8S20183C6C1Ev),
  NSPAIR(_ZN8S20183C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
static Base_Class bases_S20183C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20183C6[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20183C6[];
static  VTT_ENTRY vtt_S20183C6[] = {
  {&(_ZTV8S20183C6[3]),  3,15},
  {&(_ZTV8S20183C6[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
Class_Descriptor cd_S20183C6 = {  "S20183C6", // class name
  bases_S20183C6, 1,
  &(vtc_S20183C6[0]), // expected_vtbl_contents
  &(vtt_S20183C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20183C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20183C6),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C6),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  S20183C7  : virtual S20183C6 {
  void *s20183c7f0;
  ::S20183C2_nt s20183c7f1;
  ::S20183C2_nt s20183c7f2;
  virtual void  v21(); // _ZN8S20183C73v21Ev
  virtual void  v22(); // _ZN8S20183C73v22Ev
  ~S20183C7(); // tgen
  S20183C7(); // tgen
};
//SIG(-1 S20183C7) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v1 v2 Fp FC3 FC3}


void  S20183C7 ::v21(){vfunc_called(this, "_ZN8S20183C73v21Ev");}
void  S20183C7 ::v22(){vfunc_called(this, "_ZN8S20183C73v22Ev");}
S20183C7 ::~S20183C7(){ note_dtor("S20183C7", this);} // tgen
S20183C7 ::S20183C7(){ note_ctor("S20183C7", this);} // tgen

static void Test_S20183C7()
{
  extern Class_Descriptor cd_S20183C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S20183C7, buf);
    S20183C7 *dp, &lv = *(dp=new (buf) S20183C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20183C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C7)");
    check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(48,24), "S20183C7");
    check_base_class_offset(lv, (S20183C6*), 0, "S20183C7");
    check_field_offset(lv, s20183c7f0, ABISELECT(8,4), "S20183C7.s20183c7f0");
    check_field_offset(lv, s20183c7f1, ABISELECT(16,8), "S20183C7.s20183c7f1");
    check_field_offset(lv, s20183c7f2, ABISELECT(32,16), "S20183C7.s20183c7f2");
    test_class_info(&lv, &cd_S20183C7);
    dp->~S20183C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C7(Test_S20183C7, "S20183C7", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20183C7C1Ev();
extern void _ZN8S20183C7D1Ev();
Name_Map name_map_S20183C7[] = {
  NSPAIR(_ZN8S20183C7C1Ev),
  NSPAIR(_ZN8S20183C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
static Base_Class bases_S20183C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    ABISELECT(48,24), //bcp->offset
    18, //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_S20183C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20183C7[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20183C7[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C7[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__8S20183C7[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20183C7[] = {
  {&(_ZTV8S20183C7[10]),  10,24},
  {&(_ZTV8S20183C7[10]),  10,24},
  {&(_ZTV8S20183C7[22]),  22,24},
  {&(_tg__ZTV8S20183C6__8S20183C7[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__8S20183C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20183C7[];
extern  VTBL_ENTRY _ZTV8S20183C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C7[];
Class_Descriptor cd_S20183C7 = {  "S20183C7", // class name
  bases_S20183C7, 2,
  &(vtc_S20183C7[0]), // expected_vtbl_contents
  &(vtt_S20183C7[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20183C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20183C7),24, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C7),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  S20183C5  : virtual S20183C6 , S20183C7 {
  virtual void  v23(); // _ZN8S20183C53v23Ev
  virtual void  v24(); // _ZN8S20183C53v24Ev
  ~S20183C5(); // tgen
  S20183C5(); // tgen
};
//SIG(-1 S20183C5) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} BC4{ VBC2 v11 v12 Fp FC3 FC3} v1 v2}


void  S20183C5 ::v23(){vfunc_called(this, "_ZN8S20183C53v23Ev");}
void  S20183C5 ::v24(){vfunc_called(this, "_ZN8S20183C53v24Ev");}
S20183C5 ::~S20183C5(){ note_dtor("S20183C5", this);} // tgen
S20183C5 ::S20183C5(){ note_ctor("S20183C5", this);} // tgen

static void Test_S20183C5()
{
  extern Class_Descriptor cd_S20183C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S20183C5, buf);
    S20183C5 *dp, &lv = *(dp=new (buf) S20183C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20183C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C5)");
    check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(48,24), "S20183C5");
    check_base_class_offset(lv, (S20183C6*), 0, "S20183C5");
    check_base_class_offset(lv, (S20183C6*)(S20183C7*), 0, "S20183C5");
    check_base_class_offset(lv, (S20183C7*), 0, "S20183C5");
    test_class_info(&lv, &cd_S20183C5);
    dp->~S20183C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C5(Test_S20183C5, "S20183C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20183C5C1Ev();
extern void _ZN8S20183C5D1Ev();
Name_Map name_map_S20183C5[] = {
  NSPAIR(_ZN8S20183C5C1Ev),
  NSPAIR(_ZN8S20183C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
extern Class_Descriptor cd_S20183C7;
extern VTBL_ENTRY _ZTI8S20183C7[];
extern  VTBL_ENTRY _ZTV8S20183C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C7[];
static Base_Class bases_S20183C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    ABISELECT(48,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20183C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20183C7,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20183C5[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20183C5[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C7__8S20183C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C7__8S20183C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C5[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__8S20183C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20183C5[] = {
  {&(_ZTV8S20183C5[10]),  10,26},
  {&(_tg__ZTV8S20183C7__8S20183C5[10]),  10,18},
  {&(_tg__ZTV8S20183C7__8S20183C5[10]),  10,18},
  {&(_tg__ZTV11S20183C2_nt__8S20183C7__8S20183C5[4]),  4,6},
  {&(_ZTV8S20183C5[10]),  10,26},
  {&(_ZTV8S20183C5[24]),  24,26},
  {&(_tg__ZTV8S20183C6__8S20183C5[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__8S20183C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20183C5[];
extern  VTBL_ENTRY _ZTV8S20183C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C5[];
Class_Descriptor cd_S20183C5 = {  "S20183C5", // class name
  bases_S20183C5, 3,
  &(vtc_S20183C5[0]), // expected_vtbl_contents
  &(vtt_S20183C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20183C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20183C5),26, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C5),8, //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  S20183C3  : S20183C4 , S20183C5 {
  int s20183c3f0;
  virtual void  v25(); // _ZN8S20183C33v25Ev
  virtual void  v26(); // _ZN8S20183C33v26Ev
  virtual void  v27(); // _ZN8S20183C33v27Ev
  ~S20183C3(); // tgen
  S20183C3(); // tgen
};
//SIG(-1 S20183C3) C1{ BC2{ BC3{ v4 v5 Fp} v6 v7 v8 v9 v10 v11 v12 v13 v14} BC4{ VBC5{ VBC3 v15 v16 v17 v18 v19 v20} BC6{ VBC5 v21 v22 Fp FC3 FC3} v23 v24} v1 v2 v3 Fi}


void  S20183C3 ::v25(){vfunc_called(this, "_ZN8S20183C33v25Ev");}
void  S20183C3 ::v26(){vfunc_called(this, "_ZN8S20183C33v26Ev");}
void  S20183C3 ::v27(){vfunc_called(this, "_ZN8S20183C33v27Ev");}
S20183C3 ::~S20183C3(){ note_dtor("S20183C3", this);} // tgen
S20183C3 ::S20183C3(){ note_ctor("S20183C3", this);} // tgen

static void Test_S20183C3()
{
  extern Class_Descriptor cd_S20183C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S20183C3, buf);
    S20183C3 *dp, &lv = *(dp=new (buf) S20183C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S20183C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C3)");
    check_base_class_offset(lv, (S20183C2_nt*)(S20183C4*), 0, "S20183C3");
    check_base_class_offset(lv, (S20183C4*), 0, "S20183C3");
    check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(72,36), "S20183C3");
    check_base_class_offset(lv, (S20183C6*)(S20183C5*), ABISELECT(16,8), "S20183C3");
    check_base_class_offset(lv, (S20183C6*)(S20183C7*)(S20183C5*), ABISELECT(16,8), "S20183C3");
    check_base_class_offset(lv, (S20183C7*)(S20183C5*), ABISELECT(16,8), "S20183C3");
    check_base_class_offset(lv, (S20183C5*), ABISELECT(16,8), "S20183C3");
    check_field_offset(lv, s20183c3f0, ABISELECT(64,32), "S20183C3.s20183c3f0");
    test_class_info(&lv, &cd_S20183C3);
    dp->~S20183C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C3(Test_S20183C3, "S20183C3", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN8S20183C3C1Ev();
extern void _ZN8S20183C3D1Ev();
Name_Map name_map_S20183C3[] = {
  NSPAIR(_ZN8S20183C3C1Ev),
  NSPAIR(_ZN8S20183C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C4;
extern VTBL_ENTRY _ZTI8S20183C4[];
extern  VTBL_ENTRY _ZTV8S20183C4[];
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
extern Class_Descriptor cd_S20183C7;
extern VTBL_ENTRY _ZTI8S20183C7[];
extern  VTBL_ENTRY _ZTV8S20183C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C7[];
extern Class_Descriptor cd_S20183C5;
extern VTBL_ENTRY _ZTI8S20183C5[];
extern  VTBL_ENTRY _ZTV8S20183C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C5[];
static Base_Class bases_S20183C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20183C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20183C2_nt,    ABISELECT(72,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20183C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20183C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20183C5,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //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 _ZTI8S20183C3[];
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
extern void _ZN8S20183C42v6Ev();
extern void _ZN8S20183C42v7Ev();
extern void _ZN8S20183C42v8Ev();
extern void _ZN8S20183C42v9Ev();
extern void _ZN8S20183C43v10Ev();
extern void _ZN8S20183C43v11Ev();
extern void _ZN8S20183C43v12Ev();
extern void _ZN8S20183C43v13Ev();
extern void _ZN8S20183C43v14Ev();
extern void _ZN8S20183C33v25Ev();
extern void _ZN8S20183C33v26Ev();
extern void _ZN8S20183C33v27Ev();
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C3[] = {
  ABISELECT(72,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C3[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20183C3[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20183C3[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20183C3[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C5__8S20183C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C78S20183C5__8S20183C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C78S20183C5__8S20183C3[] = {
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C5__8S20183C3[] = {
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C3[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__8S20183C3[] = {
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20183C3[] = {
  {&(_ZTV8S20183C3[4]),  4,44},
  {&(_tg__ZTV8S20183C5__8S20183C3[10]),  10,20},
  {&(_tg__ZTV8S20183C78S20183C5__8S20183C3[10]),  10,18},
  {&(_tg__ZTV8S20183C78S20183C5__8S20183C3[10]),  10,18},
  {&(_tg__ZTV11S20183C2_nt__8S20183C78S20183C5__8S20183C3[4]),  4,6},
  {&(_tg__ZTV8S20183C5__8S20183C3[10]),  10,20},
  {&(_tg__ZTV11S20183C2_nt__8S20183C5__8S20183C3[4]),  4,6},
  {&(_ZTV8S20183C3[28]),  28,44},
  {&(_ZTV8S20183C3[28]),  28,44},
  {&(_ZTV8S20183C3[42]),  42,44},
  {&(_tg__ZTV8S20183C6__8S20183C3[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__8S20183C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20183C3[];
extern  VTBL_ENTRY _ZTV8S20183C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C3[];
Class_Descriptor cd_S20183C3 = {  "S20183C3", // class name
  bases_S20183C3, 6,
  &(vtc_S20183C3[0]), // expected_vtbl_contents
  &(vtt_S20183C3[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI8S20183C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20183C3),44, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C3),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20183C9  : virtual S20183C5 , S20183C6 {
  void *s20183c9f0;
  virtual void  v33(); // _ZN8S20183C93v33Ev
  virtual void  v34(); // _ZN8S20183C93v34Ev
  virtual void  v35(); // _ZN8S20183C93v35Ev
  virtual void  v36(); // _ZN8S20183C93v36Ev
  virtual void  v37(); // _ZN8S20183C93v37Ev
  virtual void  v38(); // _ZN8S20183C93v38Ev
  virtual void  v39(); // _ZN8S20183C93v39Ev
  virtual void  v40(); // _ZN8S20183C93v40Ev
  ~S20183C9(); // tgen
  S20183C9(); // tgen
};
//SIG(-1 S20183C9) C1{ VBC2{ VBC3{ VBC4{ v9 v10 Fp} v11 v12 v13 v14 v15 v16} BC5{ VBC3 v17 v18 Fp FC4 FC4} v19 v20} BC3 v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S20183C9 ::v33(){vfunc_called(this, "_ZN8S20183C93v33Ev");}
void  S20183C9 ::v34(){vfunc_called(this, "_ZN8S20183C93v34Ev");}
void  S20183C9 ::v35(){vfunc_called(this, "_ZN8S20183C93v35Ev");}
void  S20183C9 ::v36(){vfunc_called(this, "_ZN8S20183C93v36Ev");}
void  S20183C9 ::v37(){vfunc_called(this, "_ZN8S20183C93v37Ev");}
void  S20183C9 ::v38(){vfunc_called(this, "_ZN8S20183C93v38Ev");}
void  S20183C9 ::v39(){vfunc_called(this, "_ZN8S20183C93v39Ev");}
void  S20183C9 ::v40(){vfunc_called(this, "_ZN8S20183C93v40Ev");}
S20183C9 ::~S20183C9(){ note_dtor("S20183C9", this);} // tgen
S20183C9 ::S20183C9(){ note_ctor("S20183C9", this);} // tgen

static void Test_S20183C9()
{
  extern Class_Descriptor cd_S20183C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S20183C9, buf);
    S20183C9 *dp, &lv = *(dp=new (buf) S20183C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20183C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C9)");
    /*is_ambiguous_... S20183C9::S20183C6 */ AMB_check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(64,32), "S20183C9");
    /*is_ambiguous_... S20183C9::S20183C6 */ AMB_check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(64,32), "S20183C9");
    check_base_class_offset(lv, (S20183C6*)(S20183C5*), ABISELECT(16,8), "S20183C9");
    check_base_class_offset(lv, (S20183C6*)(S20183C7*)(S20183C5*), ABISELECT(16,8), "S20183C9");
    check_base_class_offset(lv, (S20183C7*)(S20183C5*), ABISELECT(16,8), "S20183C9");
    check_base_class_offset(lv, (S20183C5*), ABISELECT(16,8), "S20183C9");
    /*is_ambiguous_... S20183C9::S20183C6 */ AMB_check_base_class_offset(lv, (S20183C6*), 0, "S20183C9");
    check_field_offset(lv, s20183c9f0, ABISELECT(8,4), "S20183C9.s20183c9f0");
    test_class_info(&lv, &cd_S20183C9);
    dp->~S20183C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C9(Test_S20183C9, "S20183C9", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20183C9C1Ev();
extern void _ZN8S20183C9D1Ev();
Name_Map name_map_S20183C9[] = {
  NSPAIR(_ZN8S20183C9C1Ev),
  NSPAIR(_ZN8S20183C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
extern Class_Descriptor cd_S20183C7;
extern VTBL_ENTRY _ZTI8S20183C7[];
extern  VTBL_ENTRY _ZTV8S20183C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C7[];
extern Class_Descriptor cd_S20183C5;
extern VTBL_ENTRY _ZTI8S20183C5[];
extern  VTBL_ENTRY _ZTV8S20183C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C5[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
static Base_Class bases_S20183C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    ABISELECT(64,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20183C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20183C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20183C5,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20183C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20183C9[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C93v33Ev();
extern void _ZN8S20183C93v34Ev();
extern void _ZN8S20183C93v35Ev();
extern void _ZN8S20183C93v36Ev();
extern void _ZN8S20183C93v37Ev();
extern void _ZN8S20183C93v38Ev();
extern void _ZN8S20183C93v39Ev();
extern void _ZN8S20183C93v40Ev();
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C9[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v40Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20183C9[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__A__8S20183C9[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__A__8S20183C9[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C5__8S20183C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C78S20183C5__8S20183C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C78S20183C5__8S20183C9[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C5__8S20183C9[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C9[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__8S20183C9[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20183C9[] = {
  {&(_ZTV8S20183C9[5]),  5,49},
  {&(_tg__ZTV8S20183C6__A__8S20183C9[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__A__8S20183C9[4]),  4,6},
  {&(_ZTV8S20183C9[33]),  33,49},
  {&(_ZTV8S20183C9[33]),  33,49},
  {&(_ZTV8S20183C9[47]),  47,49},
  {&(_tg__ZTV8S20183C5__8S20183C9[10]),  10,20},
  {&(_tg__ZTV8S20183C78S20183C5__8S20183C9[10]),  10,18},
  {&(_tg__ZTV8S20183C78S20183C5__8S20183C9[10]),  10,18},
  {&(_tg__ZTV11S20183C2_nt__8S20183C78S20183C5__8S20183C9[4]),  4,6},
  {&(_tg__ZTV8S20183C5__8S20183C9[10]),  10,20},
  {&(_tg__ZTV11S20183C2_nt__8S20183C5__8S20183C9[4]),  4,6},
  {&(_tg__ZTV8S20183C6__8S20183C9[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__8S20183C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20183C9[];
extern  VTBL_ENTRY _ZTV8S20183C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C9[];
Class_Descriptor cd_S20183C9 = {  "S20183C9", // class name
  bases_S20183C9, 5,
  &(vtc_S20183C9[0]), // expected_vtbl_contents
  &(vtt_S20183C9[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20183C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20183C9),49, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C9),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20183C8  : virtual S20183C2_nt , virtual S20183C9 {
  __tsi64 s20183c8f0;
  ::S20183C7 s20183c8f1;
  __tsi64 s20183c8f2;
  virtual void  v28(); // _ZN8S20183C83v28Ev
  virtual void  v29(); // _ZN8S20183C83v29Ev
  virtual void  v30(); // _ZN8S20183C83v30Ev
  virtual void  v31(); // _ZN8S20183C83v31Ev
  virtual void  v32(); // _ZN8S20183C83v32Ev
  ~S20183C8(); // tgen
  S20183C8(); // tgen
};
//SIG(-1 S20183C8) C1{ VBC2{ v6 v7 Fp} VBC3{ VBC4{ VBC5{ VBC2 v8 v9 v10 v11 v12 v13} BC6{ VBC5 v14 v15 Fp FC2 FC2} v16 v17} BC5 v18 v19 v20 v21 v22 v23 v24 v25 Fp} v1 v2 v3 v4 v5 FL FC6 FL}


void  S20183C8 ::v28(){vfunc_called(this, "_ZN8S20183C83v28Ev");}
void  S20183C8 ::v29(){vfunc_called(this, "_ZN8S20183C83v29Ev");}
void  S20183C8 ::v30(){vfunc_called(this, "_ZN8S20183C83v30Ev");}
void  S20183C8 ::v31(){vfunc_called(this, "_ZN8S20183C83v31Ev");}
void  S20183C8 ::v32(){vfunc_called(this, "_ZN8S20183C83v32Ev");}
S20183C8 ::~S20183C8(){ note_dtor("S20183C8", this);} // tgen
S20183C8 ::S20183C8(){ note_ctor("S20183C8", this);} // tgen

static void Test_S20183C8()
{
  extern Class_Descriptor cd_S20183C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S20183C8, buf);
    S20183C8 *dp, &lv = *(dp=new (buf) S20183C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S20183C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C8)");
    check_base_class_offset(lv, (S20183C2_nt*), ABISELECT(88,52), "S20183C8");
    /*is_ambiguous_... S20183C8::S20183C6 */ AMB_check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(88,52), "S20183C8");
    /*is_ambiguous_... S20183C9::S20183C6 */ AMB_check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*)(S20183C9*), ABISELECT(88,52), "S20183C8");
    check_base_class_offset(lv, (S20183C6*)(S20183C5*), 0, "S20183C8");
    check_base_class_offset(lv, (S20183C6*)(S20183C7*)(S20183C5*), 0, "S20183C8");
    check_base_class_offset(lv, (S20183C7*)(S20183C5*), ABISELECT(120,68), "S20183C8");
    check_base_class_offset(lv, (S20183C5*)(S20183C9*), ABISELECT(120,68), "S20183C8");
    /*is_ambiguous_... S20183C9::S20183C6 */ AMB_check_base_class_offset(lv, (S20183C6*)(S20183C9*), ABISELECT(104,60), "S20183C8");
    check_base_class_offset(lv, (S20183C9*), ABISELECT(104,60), "S20183C8");
    check_field_offset(lv, s20183c8f0, ABISELECT(8,4), "S20183C8.s20183c8f0");
    check_field_offset(lv, s20183c8f1, ABISELECT(16,12), "S20183C8.s20183c8f1");
    check_field_offset(lv, s20183c8f2, ABISELECT(80,44), "S20183C8.s20183c8f2");
    test_class_info(&lv, &cd_S20183C8);
    dp->~S20183C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C8(Test_S20183C8, "S20183C8", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN8S20183C8C1Ev();
extern void _ZN8S20183C8D1Ev();
Name_Map name_map_S20183C8[] = {
  NSPAIR(_ZN8S20183C8C1Ev),
  NSPAIR(_ZN8S20183C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
extern Class_Descriptor cd_S20183C7;
extern VTBL_ENTRY _ZTI8S20183C7[];
extern  VTBL_ENTRY _ZTV8S20183C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C7[];
extern Class_Descriptor cd_S20183C5;
extern VTBL_ENTRY _ZTI8S20183C5[];
extern  VTBL_ENTRY _ZTV8S20183C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C5[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
extern Class_Descriptor cd_S20183C9;
extern VTBL_ENTRY _ZTI8S20183C9[];
extern  VTBL_ENTRY _ZTV8S20183C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C9[];
static Base_Class bases_S20183C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    ABISELECT(88,52), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20183C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20183C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20183C5,    ABISELECT(120,68), //bcp->offset
    62, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20183C6,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20183C9,    ABISELECT(104,60), //bcp->offset
    29, //bcp->virtual_function_table_offset
    19, //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 _ZTI8S20183C8[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C83v28Ev();
extern void _ZN8S20183C83v29Ev();
extern void _ZN8S20183C83v30Ev();
extern void _ZN8S20183C83v31Ev();
extern void _ZN8S20183C83v32Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C93v33Ev();
extern void _ZN8S20183C93v34Ev();
extern void _ZN8S20183C93v35Ev();
extern void _ZN8S20183C93v36Ev();
extern void _ZN8S20183C93v37Ev();
extern void _ZN8S20183C93v38Ev();
extern void _ZN8S20183C93v39Ev();
extern void _ZN8S20183C93v40Ev();
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY vtc_S20183C8[] = {
  0,
  ABISELECT(120,68),
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C8[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20183C83v29Ev,
  (VTBL_ENTRY)&_ZN8S20183C83v30Ev,
  (VTBL_ENTRY)&_ZN8S20183C83v31Ev,
  (VTBL_ENTRY)&_ZN8S20183C83v32Ev,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20183C8[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S20183C8[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v40Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20183C8[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern VTBL_ENTRY _ZTV8S20183C8[];
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C93v33Ev();
extern void _ZN8S20183C93v34Ev();
extern void _ZN8S20183C93v35Ev();
extern void _ZN8S20183C93v36Ev();
extern void _ZN8S20183C93v37Ev();
extern void _ZN8S20183C93v38Ev();
extern void _ZN8S20183C93v39Ev();
extern void _ZN8S20183C93v40Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C9__8S20183C8[] = {
  ABISELECT(-104,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20183C93v40Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C68S20183C9__A1__8S20183C8[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C68S20183C9__A1__8S20183C8[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C5__8S20183C9__8S20183C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C9__8S20183C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C9__8S20183C8[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20183C9[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C5__8S20183C8[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C78S20183C5__8S20183C8[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C78S20183C5__8S20183C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C78S20183C5__8S20183C8[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C5__8S20183C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C5__8S20183C8[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C8[] = {
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__8S20183C8[] = {
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20183C8[] = {
  {&(_ZTV8S20183C8[12]),  12,86},
  {&(_ZTV8S20183C8[27]),  27,86},
  {&(_ZTV8S20183C8[48]),  48,86},
  {&(_ZTV8S20183C8[76]),  76,86},
  {&(_ZTV8S20183C8[12]),  12,86},
  {&(_tg__ZTV8S20183C9__8S20183C8[5]),  5,19},
  {&(_tg__ZTV8S20183C68S20183C9__A1__8S20183C8[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C68S20183C9__A1__8S20183C8[4]),  4,6},
  {&(_tg__ZTV8S20183C5__8S20183C9__8S20183C8[14]),  14,24},
  {&(_tg__ZTV8S20183C6__8S20183C9__8S20183C8[9]),  9,15},
  {&(_tg__ZTV11S20183C2_nt__8S20183C9__8S20183C8[4]),  4,6},
  {&(_tg__ZTV8S20183C5__8S20183C8[10]),  10,20},
  {&(_tg__ZTV8S20183C78S20183C5__8S20183C8[10]),  10,18},
  {&(_tg__ZTV8S20183C6__8S20183C78S20183C5__8S20183C8[9]),  9,15},
  {&(_tg__ZTV11S20183C2_nt__8S20183C78S20183C5__8S20183C8[4]),  4,6},
  {&(_tg__ZTV8S20183C6__8S20183C5__8S20183C8[9]),  9,15},
  {&(_tg__ZTV11S20183C2_nt__8S20183C5__8S20183C8[4]),  4,6},
  {&(_tg__ZTV8S20183C6__8S20183C8[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__8S20183C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20183C8[];
extern  VTBL_ENTRY _ZTV8S20183C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C8[];
Class_Descriptor cd_S20183C8 = {  "S20183C8", // class name
  bases_S20183C8, 6,
  &(vtc_S20183C8[0]), // expected_vtbl_contents
  &(vtt_S20183C8[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI8S20183C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20183C8),86, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C8),19, //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  S20183C10  {
  __tsi64 s20183c10f0:52;
  __tsi64 s20183c10f1[2];
  virtual void  v41(); // _ZN9S20183C103v41Ev
  virtual void  v42(); // _ZN9S20183C103v42Ev
  virtual void  v43(); // _ZN9S20183C103v43Ev
  ~S20183C10(); // tgen
  S20183C10(); // tgen
};
//SIG(-1 S20183C10) C1{ v1 v2 v3 FL:52 FL[2]}


void  S20183C10 ::v41(){vfunc_called(this, "_ZN9S20183C103v41Ev");}
void  S20183C10 ::v42(){vfunc_called(this, "_ZN9S20183C103v42Ev");}
void  S20183C10 ::v43(){vfunc_called(this, "_ZN9S20183C103v43Ev");}
S20183C10 ::~S20183C10(){ note_dtor("S20183C10", this);} // tgen
S20183C10 ::S20183C10(){ note_ctor("S20183C10", this);} // tgen

static void Test_S20183C10()
{
  extern Class_Descriptor cd_S20183C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20183C10, buf);
    S20183C10 *dp, &lv = *(dp=new (buf) S20183C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20183C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C10)");
    set_bf_and_test(lv, s20183c10f0, ABISELECT(8,4), 0, 52, 1, "S20183C10");
    set_bf_and_test(lv, s20183c10f0, ABISELECT(8,4), 0, 52, hide_sll(1LL<<51), "S20183C10");
    check_field_offset(lv, s20183c10f1, ABISELECT(16,12), "S20183C10.s20183c10f1");
    test_class_info(&lv, &cd_S20183C10);
    dp->~S20183C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C10(Test_S20183C10, "S20183C10", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN9S20183C10C1Ev();
extern void _ZN9S20183C10D1Ev();
Name_Map name_map_S20183C10[] = {
  NSPAIR(_ZN9S20183C10C1Ev),
  NSPAIR(_ZN9S20183C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20183C10[];
extern void _ZN9S20183C103v41Ev();
extern void _ZN9S20183C103v42Ev();
extern void _ZN9S20183C103v43Ev();
static  VTBL_ENTRY vtc_S20183C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20183C10[0]),
  (VTBL_ENTRY)&_ZN9S20183C103v41Ev,
  (VTBL_ENTRY)&_ZN9S20183C103v42Ev,
  (VTBL_ENTRY)&_ZN9S20183C103v43Ev,
};
extern VTBL_ENTRY _ZTI9S20183C10[];
extern  VTBL_ENTRY _ZTV9S20183C10[];
Class_Descriptor cd_S20183C10 = {  "S20183C10", // class name
  0,0,//no base classes
  &(vtc_S20183C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI9S20183C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20183C10),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  S20183C1  : virtual S20183C2_nt , S20183C3 {
  ::S20183C8 s20183c1f0;
  unsigned char s20183c1f1:1;
  ::S20183C10 s20183c1f2[5];
  virtual void  v1(); // _ZN8S20183C12v1Ev
  virtual void  v2(); // _ZN8S20183C12v2Ev
  virtual void  v3(); // _ZN8S20183C12v3Ev
  ~S20183C1(); // tgen
  S20183C1(); // tgen
};
//SIG(1 S20183C1) C1{ VBC2{ v4 v5 Fp} BC3{ BC4{ BC2 v6 v7 v8 v9 v10 v11 v12 v13 v14} BC5{ VBC6{ VBC2 v15 v16 v17 v18 v19 v20} BC7{ VBC6 v21 v22 Fp FC2 FC2} v23 v24} v25 v26 v27 Fi} v1 v2 v3 FC8{ VBC2 VBC9{ VBC5 BC6 v33 v34 v35 v36 v37 v38 v39 v40 Fp} v28 v29 v30 v31 v32 FL FC7 FL} Fc:1 FC10{ v41 v42 v43 FL:52 FL[2]}[5]}


void  S20183C1 ::v1(){vfunc_called(this, "_ZN8S20183C12v1Ev");}
void  S20183C1 ::v2(){vfunc_called(this, "_ZN8S20183C12v2Ev");}
void  S20183C1 ::v3(){vfunc_called(this, "_ZN8S20183C12v3Ev");}
S20183C1 ::~S20183C1(){ note_dtor("S20183C1", this);} // tgen
S20183C1 ::S20183C1(){ note_ctor("S20183C1", this);} // tgen

static void Test_S20183C1()
{
  extern Class_Descriptor cd_S20183C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,71)];
    init_test(&cd_S20183C1, buf);
    S20183C1 *dp, &lv = *(dp=new (buf) S20183C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,280), "sizeof(S20183C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20183C1)");
    /*is_ambiguous_... S20183C1::S20183C2_nt */ AMB_check_base_class_offset(lv, (S20183C2_nt*), ABISELECT(408,272), "S20183C1");
    check_base_class_offset(lv, (S20183C2_nt*)(S20183C6*), ABISELECT(408,272), "S20183C1");
    check_base_class_offset(lv, (S20183C2_nt*)(S20183C4*)(S20183C3*), 0, "S20183C1");
    check_base_class_offset(lv, (S20183C4*)(S20183C3*), 0, "S20183C1");
    check_base_class_offset(lv, (S20183C6*)(S20183C5*)(S20183C3*), ABISELECT(16,8), "S20183C1");
    check_base_class_offset(lv, (S20183C6*)(S20183C7*)(S20183C5*)(S20183C3*), ABISELECT(16,8), "S20183C1");
    check_base_class_offset(lv, (S20183C7*)(S20183C5*)(S20183C3*), ABISELECT(16,8), "S20183C1");
    check_base_class_offset(lv, (S20183C5*)(S20183C3*), ABISELECT(16,8), "S20183C1");
    check_base_class_offset(lv, (S20183C3*), 0, "S20183C1");
    check_field_offset(lv, s20183c1f0, ABISELECT(72,36), "S20183C1.s20183c1f0");
    set_bf_and_test(lv, s20183c1f1, ABISELECT(240,128), 0, 1, 1, "S20183C1");
    check_field_offset(lv, s20183c1f2, ABISELECT(248,132), "S20183C1.s20183c1f2");
    test_class_info(&lv, &cd_S20183C1);
    dp->~S20183C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20183C1(Test_S20183C1, "S20183C1", ABISELECT(424,280));

#else // __cplusplus

extern void _ZN8S20183C1C1Ev();
extern void _ZN8S20183C1D1Ev();
Name_Map name_map_S20183C1[] = {
  NSPAIR(_ZN8S20183C1C1Ev),
  NSPAIR(_ZN8S20183C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C2_nt;
extern VTBL_ENTRY _ZTI11S20183C2_nt[];
extern  VTBL_ENTRY _ZTV11S20183C2_nt[];
extern Class_Descriptor cd_S20183C4;
extern VTBL_ENTRY _ZTI8S20183C4[];
extern  VTBL_ENTRY _ZTV8S20183C4[];
extern Class_Descriptor cd_S20183C6;
extern VTBL_ENTRY _ZTI8S20183C6[];
extern  VTBL_ENTRY _ZTV8S20183C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C6[];
extern Class_Descriptor cd_S20183C7;
extern VTBL_ENTRY _ZTI8S20183C7[];
extern  VTBL_ENTRY _ZTV8S20183C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C7[];
extern Class_Descriptor cd_S20183C5;
extern VTBL_ENTRY _ZTI8S20183C5[];
extern  VTBL_ENTRY _ZTV8S20183C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C5[];
extern Class_Descriptor cd_S20183C3;
extern VTBL_ENTRY _ZTI8S20183C3[];
extern  VTBL_ENTRY _ZTV8S20183C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C3[];
static Base_Class bases_S20183C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20183C2_nt,    ABISELECT(408,272), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20183C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20183C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20183C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20183C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20183C5,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20183C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20183C1[];
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
extern void _ZN8S20183C42v6Ev();
extern void _ZN8S20183C42v7Ev();
extern void _ZN8S20183C42v8Ev();
extern void _ZN8S20183C42v9Ev();
extern void _ZN8S20183C43v10Ev();
extern void _ZN8S20183C43v11Ev();
extern void _ZN8S20183C43v12Ev();
extern void _ZN8S20183C43v13Ev();
extern void _ZN8S20183C43v14Ev();
extern void _ZN8S20183C33v25Ev();
extern void _ZN8S20183C33v26Ev();
extern void _ZN8S20183C33v27Ev();
extern void _ZN8S20183C12v1Ev();
extern void _ZN8S20183C12v2Ev();
extern void _ZN8S20183C12v3Ev();
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S20183C1[] = {
  ABISELECT(408,272),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C1[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20183C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20183C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20183C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(392,264),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20183C1[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
  0,
  0,
  ABISELECT(-408,-272),
  (VTBL_ENTRY)&(_ZTI8S20183C1[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20183C1[];
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
extern void _ZN8S20183C42v6Ev();
extern void _ZN8S20183C42v7Ev();
extern void _ZN8S20183C42v8Ev();
extern void _ZN8S20183C42v9Ev();
extern void _ZN8S20183C43v10Ev();
extern void _ZN8S20183C43v11Ev();
extern void _ZN8S20183C43v12Ev();
extern void _ZN8S20183C43v13Ev();
extern void _ZN8S20183C43v14Ev();
extern void _ZN8S20183C33v25Ev();
extern void _ZN8S20183C33v26Ev();
extern void _ZN8S20183C33v27Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C3__8S20183C1[] = {
  ABISELECT(408,272),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C3[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20183C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20183C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20183C33v27Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C58S20183C3__8S20183C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(392,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C78S20183C58S20183C3__8S20183C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(392,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C78S20183C58S20183C3__8S20183C1[] = {
  0,
  0,
  ABISELECT(-392,-264),
  (VTBL_ENTRY)&(_ZTI8S20183C7[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C58S20183C3__8S20183C1[] = {
  0,
  0,
  ABISELECT(-392,-264),
  (VTBL_ENTRY)&(_ZTI8S20183C5[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
extern void _ZN8S20183C73v21Ev();
extern void _ZN8S20183C73v22Ev();
extern void _ZN8S20183C53v23Ev();
extern void _ZN8S20183C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C5__8S20183C3__8S20183C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(392,264),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20183C3[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20183C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20183C53v24Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__A1__8S20183C3__8S20183C1[] = {
  0,
  0,
  ABISELECT(-408,-272),
  (VTBL_ENTRY)&(_ZTI8S20183C3[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
extern void _ZN8S20183C63v15Ev();
extern void _ZN8S20183C63v16Ev();
extern void _ZN8S20183C63v17Ev();
extern void _ZN8S20183C63v18Ev();
extern void _ZN8S20183C63v19Ev();
extern void _ZN8S20183C63v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20183C6__8S20183C1[] = {
  ABISELECT(392,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN8S20183C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20183C63v20Ev,
};
extern void _ZN11S20183C2_nt2v4Ev();
extern void _ZN11S20183C2_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20183C2_nt__8S20183C6__8S20183C1[] = {
  0,
  0,
  ABISELECT(-392,-264),
  (VTBL_ENTRY)&(_ZTI8S20183C6[0]),
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20183C2_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20183C1[] = {
  {&(_ZTV8S20183C1[4]),  4,47},
  {&(_tg__ZTV8S20183C3__8S20183C1[4]),  4,18},
  {&(_tg__ZTV8S20183C58S20183C3__8S20183C1[10]),  10,20},
  {&(_tg__ZTV8S20183C78S20183C58S20183C3__8S20183C1[10]),  10,18},
  {&(_tg__ZTV8S20183C78S20183C58S20183C3__8S20183C1[10]),  10,18},
  {&(_tg__ZTV11S20183C2_nt__8S20183C78S20183C58S20183C3__8S20183C1[4]),  4,6},
  {&(_tg__ZTV8S20183C58S20183C3__8S20183C1[10]),  10,20},
  {&(_tg__ZTV11S20183C2_nt__8S20183C58S20183C3__8S20183C1[4]),  4,6},
  {&(_tg__ZTV8S20183C5__8S20183C3__8S20183C1[10]),  10,20},
  {&(_tg__ZTV8S20183C5__8S20183C3__8S20183C1[10]),  10,20},
  {&(_tg__ZTV11S20183C2_nt__A1__8S20183C3__8S20183C1[4]),  4,6},
  {&(_ZTV8S20183C1[45]),  45,47},
  {&(_ZTV8S20183C1[31]),  31,47},
  {&(_ZTV8S20183C1[31]),  31,47},
  {&(_tg__ZTV8S20183C6__8S20183C1[3]),  3,9},
  {&(_tg__ZTV11S20183C2_nt__8S20183C6__8S20183C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20183C1[];
extern  VTBL_ENTRY _ZTV8S20183C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20183C1[];
Class_Descriptor cd_S20183C1 = {  "S20183C1", // class name
  bases_S20183C1, 7,
  &(vtc_S20183C1[0]), // expected_vtbl_contents
  &(vtt_S20183C1[0]), // expected_vtt_contents
  ABISELECT(424,280), // object size
  NSPAIRA(_ZTI8S20183C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20183C1),47, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20183C1),16, //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  S3413C3  {
  virtual void  v7(); // _ZN7S3413C32v7Ev
  ~S3413C3(); // tgen
  S3413C3(); // tgen
};
//SIG(-1 S3413C3) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S3413C3C1Ev();
extern void _ZN7S3413C3D1Ev();
Name_Map name_map_S3413C3[] = {
  NSPAIR(_ZN7S3413C3C1Ev),
  NSPAIR(_ZN7S3413C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3413C3[];
extern void _ZN7S3413C32v7Ev();
static  VTBL_ENTRY vtc_S3413C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3413C3[0]),
  (VTBL_ENTRY)&_ZN7S3413C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S3413C3[];
extern  VTBL_ENTRY _ZTV7S3413C3[];
Class_Descriptor cd_S3413C3 = {  "S3413C3", // class name
  0,0,//no base classes
  &(vtc_S3413C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3413C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3413C3),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  S3413C2  : S3413C3 {
  ::S3445C28 s3413c2f0;
  int s3413c2f1[2];
  virtual  ~S3413C2(); // _ZN7S3413C2D1Ev
  virtual void  v8(); // _ZN7S3413C22v8Ev
  virtual void  v9(); // _ZN7S3413C22v9Ev
  virtual void  v10(); // _ZN7S3413C23v10Ev
  virtual void  v11(); // _ZN7S3413C23v11Ev
  virtual void  v12(); // _ZN7S3413C23v12Ev
  virtual void  v13(); // _ZN7S3413C23v13Ev
  virtual void  v14(); // _ZN7S3413C23v14Ev
  virtual void  v15(); // _ZN7S3413C23v15Ev
  S3413C2(); // tgen
};
//SIG(-1 S3413C2) C1{ BC2{ v9} vd v1 v2 v3 v4 v5 v6 v7 v8 FC3{ BC4{ m Fp Fi[2]}} Fi[2]}


 S3413C2 ::~S3413C2(){ note_dtor("S3413C2", this);}
void  S3413C2 ::v8(){vfunc_called(this, "_ZN7S3413C22v8Ev");}
void  S3413C2 ::v9(){vfunc_called(this, "_ZN7S3413C22v9Ev");}
void  S3413C2 ::v10(){vfunc_called(this, "_ZN7S3413C23v10Ev");}
void  S3413C2 ::v11(){vfunc_called(this, "_ZN7S3413C23v11Ev");}
void  S3413C2 ::v12(){vfunc_called(this, "_ZN7S3413C23v12Ev");}
void  S3413C2 ::v13(){vfunc_called(this, "_ZN7S3413C23v13Ev");}
void  S3413C2 ::v14(){vfunc_called(this, "_ZN7S3413C23v14Ev");}
void  S3413C2 ::v15(){vfunc_called(this, "_ZN7S3413C23v15Ev");}
S3413C2 ::S3413C2(){ note_ctor("S3413C2", this);} // tgen

static void Test_S3413C2()
{
  extern Class_Descriptor cd_S3413C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3413C2, buf);
    S3413C2 *dp, &lv = *(dp=new (buf) S3413C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3413C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3413C2)");
    check_base_class_offset(lv, (S3413C3*), 0, "S3413C2");
    check_field_offset(lv, s3413c2f0, ABISELECT(8,4), "S3413C2.s3413c2f0");
    check_field_offset(lv, s3413c2f1, ABISELECT(24,16), "S3413C2.s3413c2f1");
    test_class_info(&lv, &cd_S3413C2);
    dp->~S3413C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3413C2(Test_S3413C2, "S3413C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3413C2C1Ev();
extern void _ZN7S3413C2D1Ev();
Name_Map name_map_S3413C2[] = {
  NSPAIR(_ZN7S3413C2C1Ev),
  NSPAIR(_ZN7S3413C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3413C3;
extern VTBL_ENTRY _ZTI7S3413C3[];
extern  VTBL_ENTRY _ZTV7S3413C3[];
static Base_Class bases_S3413C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3413C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3413C2[];
extern void _ZN7S3413C32v7Ev();
extern void _ZN7S3413C2D1Ev();
extern void _ZN7S3413C2D0Ev();
extern void _ZN7S3413C22v8Ev();
extern void _ZN7S3413C22v9Ev();
extern void _ZN7S3413C23v10Ev();
extern void _ZN7S3413C23v11Ev();
extern void _ZN7S3413C23v12Ev();
extern void _ZN7S3413C23v13Ev();
extern void _ZN7S3413C23v14Ev();
extern void _ZN7S3413C23v15Ev();
static  VTBL_ENTRY vtc_S3413C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3413C2[0]),
  (VTBL_ENTRY)&_ZN7S3413C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3413C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3413C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3413C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3413C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v15Ev,
};
extern VTBL_ENTRY _ZTI7S3413C2[];
extern  VTBL_ENTRY _ZTV7S3413C2[];
Class_Descriptor cd_S3413C2 = {  "S3413C2", // class name
  bases_S3413C2, 1,
  &(vtc_S3413C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3413C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3413C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3413C7  {
  ::S5757C13_nt s3413c7f0;
  unsigned int s3413c7f1:1;
  virtual  ~S3413C7(); // _ZN7S3413C7D1Ev
  virtual void  v16(); // _ZN7S3413C73v16Ev
  virtual void  v17(); // _ZN7S3413C73v17Ev
  virtual void  v18(); // _ZN7S3413C73v18Ev
  virtual void  v19(); // _ZN7S3413C73v19Ev
  virtual void  v20(); // _ZN7S3413C73v20Ev
  virtual void  v21(); // _ZN7S3413C73v21Ev
  virtual void  v22(); // _ZN7S3413C73v22Ev
  S3413C7(); // tgen
};
//SIG(-1 S3413C7) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S3413C7 ::~S3413C7(){ note_dtor("S3413C7", this);}
void  S3413C7 ::v16(){vfunc_called(this, "_ZN7S3413C73v16Ev");}
void  S3413C7 ::v17(){vfunc_called(this, "_ZN7S3413C73v17Ev");}
void  S3413C7 ::v18(){vfunc_called(this, "_ZN7S3413C73v18Ev");}
void  S3413C7 ::v19(){vfunc_called(this, "_ZN7S3413C73v19Ev");}
void  S3413C7 ::v20(){vfunc_called(this, "_ZN7S3413C73v20Ev");}
void  S3413C7 ::v21(){vfunc_called(this, "_ZN7S3413C73v21Ev");}
void  S3413C7 ::v22(){vfunc_called(this, "_ZN7S3413C73v22Ev");}
S3413C7 ::S3413C7(){ note_ctor("S3413C7", this);} // tgen

static void Test_S3413C7()
{
  extern Class_Descriptor cd_S3413C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S3413C7, buf);
    S3413C7 *dp, &lv = *(dp=new (buf) S3413C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S3413C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3413C7)");
    check_field_offset(lv, s3413c7f0, ABISELECT(8,4), "S3413C7.s3413c7f0");
    set_bf_and_test(lv, s3413c7f1, ABISELECT(32,16), 0, 1, 1, "S3413C7");
    test_class_info(&lv, &cd_S3413C7);
    dp->~S3413C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3413C7(Test_S3413C7, "S3413C7", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S3413C7C1Ev();
extern void _ZN7S3413C7D1Ev();
Name_Map name_map_S3413C7[] = {
  NSPAIR(_ZN7S3413C7C1Ev),
  NSPAIR(_ZN7S3413C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3413C7[];
extern void _ZN7S3413C7D1Ev();
extern void _ZN7S3413C7D0Ev();
extern void _ZN7S3413C73v16Ev();
extern void _ZN7S3413C73v17Ev();
extern void _ZN7S3413C73v18Ev();
extern void _ZN7S3413C73v19Ev();
extern void _ZN7S3413C73v20Ev();
extern void _ZN7S3413C73v21Ev();
extern void _ZN7S3413C73v22Ev();
static  VTBL_ENTRY vtc_S3413C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3413C7[0]),
  (VTBL_ENTRY)&_ZN7S3413C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3413C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v16Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v17Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v18Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v19Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v20Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v21Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v22Ev,
};
extern VTBL_ENTRY _ZTI7S3413C7[];
extern  VTBL_ENTRY _ZTV7S3413C7[];
Class_Descriptor cd_S3413C7 = {  "S3413C7", // class name
  0,0,//no base classes
  &(vtc_S3413C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S3413C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3413C7),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  S3413C6  : S3413C7 {
  ::S19894C6_nt s3413c6f0;
  virtual  ~S3413C6(); // _ZN7S3413C6D1Ev
  virtual void  v23(); // _ZN7S3413C63v23Ev
  virtual void  v24(); // _ZN7S3413C63v24Ev
  S3413C6(); // tgen
};
//SIG(-1 S3413C6) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} vd v1 v2 FC4{ m Fp}}


 S3413C6 ::~S3413C6(){ note_dtor("S3413C6", this);}
void  S3413C6 ::v23(){vfunc_called(this, "_ZN7S3413C63v23Ev");}
void  S3413C6 ::v24(){vfunc_called(this, "_ZN7S3413C63v24Ev");}
S3413C6 ::S3413C6(){ note_ctor("S3413C6", this);} // tgen

static void Test_S3413C6()
{
  extern Class_Descriptor cd_S3413C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3413C6, buf);
    S3413C6 *dp, &lv = *(dp=new (buf) S3413C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3413C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3413C6)");
    check_base_class_offset(lv, (S3413C7*), 0, "S3413C6");
    check_field_offset(lv, s3413c6f0, ABISELECT(40,20), "S3413C6.s3413c6f0");
    test_class_info(&lv, &cd_S3413C6);
    dp->~S3413C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3413C6(Test_S3413C6, "S3413C6", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3413C6C1Ev();
extern void _ZN7S3413C6D1Ev();
Name_Map name_map_S3413C6[] = {
  NSPAIR(_ZN7S3413C6C1Ev),
  NSPAIR(_ZN7S3413C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3413C7;
extern VTBL_ENTRY _ZTI7S3413C7[];
extern  VTBL_ENTRY _ZTV7S3413C7[];
static Base_Class bases_S3413C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3413C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3413C6[];
extern void _ZN7S3413C6D1Ev();
extern void _ZN7S3413C6D0Ev();
extern void _ZN7S3413C73v16Ev();
extern void _ZN7S3413C73v17Ev();
extern void _ZN7S3413C73v18Ev();
extern void _ZN7S3413C73v19Ev();
extern void _ZN7S3413C73v20Ev();
extern void _ZN7S3413C73v21Ev();
extern void _ZN7S3413C73v22Ev();
extern void _ZN7S3413C63v23Ev();
extern void _ZN7S3413C63v24Ev();
static  VTBL_ENTRY vtc_S3413C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3413C6[0]),
  (VTBL_ENTRY)&_ZN7S3413C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3413C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v16Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v17Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v18Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v19Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v20Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v21Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v22Ev,
  (VTBL_ENTRY)&_ZN7S3413C63v23Ev,
  (VTBL_ENTRY)&_ZN7S3413C63v24Ev,
};
extern VTBL_ENTRY _ZTI7S3413C6[];
extern  VTBL_ENTRY _ZTV7S3413C6[];
Class_Descriptor cd_S3413C6 = {  "S3413C6", // class name
  bases_S3413C6, 1,
  &(vtc_S3413C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3413C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3413C6),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3413C11_nt  {
  int s3413c11f0[8];
  void *s3413c11f1;
  int s3413c11f2;
  void *s3413c11f3;
  virtual  ~S3413C11_nt(); // _ZN11S3413C11_ntD1Ev
  virtual void  v28(); // _ZN11S3413C11_nt3v28Ev
  virtual void  v29(); // _ZN11S3413C11_nt3v29Ev
  virtual void  v30(); // _ZN11S3413C11_nt3v30Ev
  virtual void  v31(); // _ZN11S3413C11_nt3v31Ev
  virtual void  v32(); // _ZN11S3413C11_nt3v32Ev
  S3413C11_nt(); // tgen
};
//SIG(-1 S3413C11_nt) C1{ vd v1 v2 v3 v4 v5 Fi[8] Fp Fi Fp}


 S3413C11_nt ::~S3413C11_nt(){ note_dtor("S3413C11_nt", this);}
void  S3413C11_nt ::v28(){vfunc_called(this, "_ZN11S3413C11_nt3v28Ev");}
void  S3413C11_nt ::v29(){vfunc_called(this, "_ZN11S3413C11_nt3v29Ev");}
void  S3413C11_nt ::v30(){vfunc_called(this, "_ZN11S3413C11_nt3v30Ev");}
void  S3413C11_nt ::v31(){vfunc_called(this, "_ZN11S3413C11_nt3v31Ev");}
void  S3413C11_nt ::v32(){vfunc_called(this, "_ZN11S3413C11_nt3v32Ev");}
S3413C11_nt ::S3413C11_nt(){ note_ctor("S3413C11_nt", this);} // tgen

//skip512 S3413C11_nt

#else // __cplusplus

extern void _ZN11S3413C11_ntC1Ev();
extern void _ZN11S3413C11_ntD1Ev();
Name_Map name_map_S3413C11_nt[] = {
  NSPAIR(_ZN11S3413C11_ntC1Ev),
  NSPAIR(_ZN11S3413C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S3413C11_nt[];
extern void _ZN11S3413C11_ntD1Ev();
extern void _ZN11S3413C11_ntD0Ev();
extern void _ZN11S3413C11_nt3v28Ev();
extern void _ZN11S3413C11_nt3v29Ev();
extern void _ZN11S3413C11_nt3v30Ev();
extern void _ZN11S3413C11_nt3v31Ev();
extern void _ZN11S3413C11_nt3v32Ev();
static  VTBL_ENTRY vtc_S3413C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3413C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S3413C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI11S3413C11_nt[];
VTBL_ENTRY *P__ZTI11S3413C11_nt = _ZTI11S3413C11_nt; 
extern  VTBL_ENTRY _ZTV11S3413C11_nt[];
Class_Descriptor cd_S3413C11_nt = {  "S3413C11_nt", // class name
  0,0,//no base classes
  &(vtc_S3413C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI11S3413C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S3413C11_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  S3413C10_nt  : S3413C11_nt {
  virtual void  v25(); // _ZN11S3413C10_nt3v25Ev
  virtual void  v26(); // _ZN11S3413C10_nt3v26Ev
  virtual void  v27(); // _ZN11S3413C10_nt3v27Ev
  ~S3413C10_nt(); // tgen
  S3413C10_nt(); // tgen
};
//SIG(-1 S3413C10_nt) C1{ BC2{ vd v4 v5 v6 v7 v8 Fi[8] Fp Fi Fp} v1 v2 v3}


void  S3413C10_nt ::v25(){vfunc_called(this, "_ZN11S3413C10_nt3v25Ev");}
void  S3413C10_nt ::v26(){vfunc_called(this, "_ZN11S3413C10_nt3v26Ev");}
void  S3413C10_nt ::v27(){vfunc_called(this, "_ZN11S3413C10_nt3v27Ev");}
S3413C10_nt ::~S3413C10_nt(){ note_dtor("S3413C10_nt", this);} // tgen
S3413C10_nt ::S3413C10_nt(){ note_ctor("S3413C10_nt", this);} // tgen

//skip512 S3413C10_nt

#else // __cplusplus

extern void _ZN11S3413C10_ntC1Ev();
extern void _ZN11S3413C10_ntD1Ev();
Name_Map name_map_S3413C10_nt[] = {
  NSPAIR(_ZN11S3413C10_ntC1Ev),
  NSPAIR(_ZN11S3413C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3413C11_nt;
extern VTBL_ENTRY _ZTI11S3413C11_nt[];
extern  VTBL_ENTRY _ZTV11S3413C11_nt[];
static Base_Class bases_S3413C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3413C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S3413C10_nt[];
extern void _ZN11S3413C10_ntD1Ev();
extern void _ZN11S3413C10_ntD0Ev();
extern void _ZN11S3413C11_nt3v28Ev();
extern void _ZN11S3413C11_nt3v29Ev();
extern void _ZN11S3413C11_nt3v30Ev();
extern void _ZN11S3413C11_nt3v31Ev();
extern void _ZN11S3413C11_nt3v32Ev();
extern void _ZN11S3413C10_nt3v25Ev();
extern void _ZN11S3413C10_nt3v26Ev();
extern void _ZN11S3413C10_nt3v27Ev();
static  VTBL_ENTRY vtc_S3413C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3413C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S3413C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3413C10_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S3413C11_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S3413C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S3413C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S3413C10_nt3v27Ev,
};
extern VTBL_ENTRY _ZTI11S3413C10_nt[];
VTBL_ENTRY *P__ZTI11S3413C10_nt = _ZTI11S3413C10_nt; 
extern  VTBL_ENTRY _ZTV11S3413C10_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3413C13_nt  {
  int s3413c13f0[4];
  void  mf3413c13(); // _ZN11S3413C13_nt9mf3413c13Ev
};
//SIG(1 S3413C13_nt) C1{ m Fi[4]}


void  S3413C13_nt ::mf3413c13(){}

//skip512 S3413C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3413C1  : S3413C2 , S3413C6 {
  void *s3413c1f0;
  ::S3413C10_nt s3413c1f1;
  ::S3413C10_nt s3413c1f2;
  int s3413c1f3;
  void *s3413c1f4;
  ::S3413C13_nt s3413c1f5[4];
  virtual  ~S3413C1(); // _ZN7S3413C1D1Ev
  virtual void  v1(); // _ZN7S3413C12v1Ev
  virtual void  v2(); // _ZN7S3413C12v2Ev
  virtual void  v3(); // _ZN7S3413C12v3Ev
  virtual void  v4(); // _ZN7S3413C12v4Ev
  virtual void  v5(); // _ZN7S3413C12v5Ev
  virtual void  v6(); // _ZN7S3413C12v6Ev
  S3413C1(); // tgen
};
//SIG(1 S3413C1) C1{ BC2{ BC3{ v7} vd v8 v9 v10 v11 v12 v13 v14 v15 FC4{ BC5{ m Fp Fi[2]}} Fi[2]} BC6{ BC7{ vd v16 v17 v18 v19 v20 v21 v22 FC8{ m Fp[3]} Fi:1} vd v23 v24 FC9{ m Fp}} vd v1 v2 v3 v4 v5 v6 Fp FC10{ BC11{ vd v28 v29 v30 v31 v32 Fi[8] Fp Fi Fp} v25 v26 v27} FC10 Fi Fp FC12{ m Fi[4]}[4]}


 S3413C1 ::~S3413C1(){ note_dtor("S3413C1", this);}
void  S3413C1 ::v1(){vfunc_called(this, "_ZN7S3413C12v1Ev");}
void  S3413C1 ::v2(){vfunc_called(this, "_ZN7S3413C12v2Ev");}
void  S3413C1 ::v3(){vfunc_called(this, "_ZN7S3413C12v3Ev");}
void  S3413C1 ::v4(){vfunc_called(this, "_ZN7S3413C12v4Ev");}
void  S3413C1 ::v5(){vfunc_called(this, "_ZN7S3413C12v5Ev");}
void  S3413C1 ::v6(){vfunc_called(this, "_ZN7S3413C12v6Ev");}
S3413C1 ::S3413C1(){ note_ctor("S3413C1", this);} // tgen

static void Test_S3413C1()
{
  extern Class_Descriptor cd_S3413C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,56)];
    init_test(&cd_S3413C1, buf);
    S3413C1 *dp, &lv = *(dp=new (buf) S3413C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S3413C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3413C1)");
    check_base_class_offset(lv, (S3413C3*)(S3413C2*), 0, "S3413C1");
    check_base_class_offset(lv, (S3413C2*), 0, "S3413C1");
    check_base_class_offset(lv, (S3413C7*)(S3413C6*), ABISELECT(32,24), "S3413C1");
    check_base_class_offset(lv, (S3413C6*), ABISELECT(32,24), "S3413C1");
    check_field_offset(lv, s3413c1f0, ABISELECT(80,48), "S3413C1.s3413c1f0");
    check_field_offset(lv, s3413c1f1, ABISELECT(88,52), "S3413C1.s3413c1f1");
    check_field_offset(lv, s3413c1f2, ABISELECT(152,100), "S3413C1.s3413c1f2");
    check_field_offset(lv, s3413c1f3, ABISELECT(216,148), "S3413C1.s3413c1f3");
    check_field_offset(lv, s3413c1f4, ABISELECT(224,152), "S3413C1.s3413c1f4");
    check_field_offset(lv, s3413c1f5, ABISELECT(232,156), "S3413C1.s3413c1f5");
    test_class_info(&lv, &cd_S3413C1);
    dp->~S3413C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3413C1(Test_S3413C1, "S3413C1", ABISELECT(296,220));

#else // __cplusplus

extern void _ZN7S3413C1C1Ev();
extern void _ZN7S3413C1D1Ev();
Name_Map name_map_S3413C1[] = {
  NSPAIR(_ZN7S3413C1C1Ev),
  NSPAIR(_ZN7S3413C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3413C3;
extern VTBL_ENTRY _ZTI7S3413C3[];
extern  VTBL_ENTRY _ZTV7S3413C3[];
extern Class_Descriptor cd_S3413C2;
extern VTBL_ENTRY _ZTI7S3413C2[];
extern  VTBL_ENTRY _ZTV7S3413C2[];
extern Class_Descriptor cd_S3413C7;
extern VTBL_ENTRY _ZTI7S3413C7[];
extern  VTBL_ENTRY _ZTV7S3413C7[];
extern Class_Descriptor cd_S3413C6;
extern VTBL_ENTRY _ZTI7S3413C6[];
extern  VTBL_ENTRY _ZTV7S3413C6[];
static Base_Class bases_S3413C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3413C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3413C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3413C7,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3413C6,    ABISELECT(32,24), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3413C1[];
extern void _ZN7S3413C32v7Ev();
extern void _ZN7S3413C1D1Ev();
extern void _ZN7S3413C1D0Ev();
extern void _ZN7S3413C22v8Ev();
extern void _ZN7S3413C22v9Ev();
extern void _ZN7S3413C23v10Ev();
extern void _ZN7S3413C23v11Ev();
extern void _ZN7S3413C23v12Ev();
extern void _ZN7S3413C23v13Ev();
extern void _ZN7S3413C23v14Ev();
extern void _ZN7S3413C23v15Ev();
extern void _ZN7S3413C12v1Ev();
extern void _ZN7S3413C12v2Ev();
extern void _ZN7S3413C12v3Ev();
extern void _ZN7S3413C12v4Ev();
extern void _ZN7S3413C12v5Ev();
extern void _ZN7S3413C12v6Ev();
extern void ABISELECT(_ZThn32_N7S3413C1D1Ev,_ZThn24_N7S3413C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S3413C1D0Ev,_ZThn24_N7S3413C1D0Ev)();
extern void _ZN7S3413C73v16Ev();
extern void _ZN7S3413C73v17Ev();
extern void _ZN7S3413C73v18Ev();
extern void _ZN7S3413C73v19Ev();
extern void _ZN7S3413C73v20Ev();
extern void _ZN7S3413C73v21Ev();
extern void _ZN7S3413C73v22Ev();
extern void _ZN7S3413C63v23Ev();
extern void _ZN7S3413C63v24Ev();
static  VTBL_ENTRY vtc_S3413C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3413C1[0]),
  (VTBL_ENTRY)&_ZN7S3413C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3413C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3413C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3413C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3413C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3413C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3413C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3413C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3413C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3413C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3413C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3413C12v6Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S3413C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3413C1D1Ev,_ZThn24_N7S3413C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3413C1D0Ev,_ZThn24_N7S3413C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3413C73v16Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v17Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v18Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v19Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v20Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v21Ev,
  (VTBL_ENTRY)&_ZN7S3413C73v22Ev,
  (VTBL_ENTRY)&_ZN7S3413C63v23Ev,
  (VTBL_ENTRY)&_ZN7S3413C63v24Ev,
};
extern VTBL_ENTRY _ZTI7S3413C1[];
extern  VTBL_ENTRY _ZTV7S3413C1[];
Class_Descriptor cd_S3413C1 = {  "S3413C1", // class name
  bases_S3413C1, 4,
  &(vtc_S3413C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI7S3413C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3413C1),32, //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  S7494C9  {
  virtual void  v1(); // _ZN7S7494C92v1Ev
  ~S7494C9(); // tgen
  S7494C9(); // tgen
};
//SIG(-1 S7494C9) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7494C9C1Ev();
extern void _ZN7S7494C9D1Ev();
Name_Map name_map_S7494C9[] = {
  NSPAIR(_ZN7S7494C9C1Ev),
  NSPAIR(_ZN7S7494C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7494C9[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C9[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
Class_Descriptor cd_S7494C9 = {  "S7494C9", // class name
  0,0,//no base classes
  &(vtc_S7494C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7494C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7494C9),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  S7494C8  : virtual S19894C34 , virtual S7494C9 {
  ::S7494C9 s7494c8f0;
  ~S7494C8(); // tgen
  S7494C8(); // tgen
};
//SIG(-1 S7494C8) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S7494C8()
{
  extern Class_Descriptor cd_S7494C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7494C8, buf);
    S7494C8 *dp, &lv = *(dp=new (buf) S7494C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7494C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C8)");
    check_base_class_offset(lv, (S19894C34*), 0, "S7494C8");
    check_base_class_offset(lv, (S7494C9*), 0, "S7494C8");
    check_field_offset(lv, s7494c8f0, ABISELECT(8,4), "S7494C8.s7494c8f0");
    test_class_info(&lv, &cd_S7494C8);
    dp->~S7494C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C8(Test_S7494C8, "S7494C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7494C8C1Ev();
extern void _ZN7S7494C8D1Ev();
Name_Map name_map_S7494C8[] = {
  NSPAIR(_ZN7S7494C8C1Ev),
  NSPAIR(_ZN7S7494C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
static Base_Class bases_S7494C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C9,    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 _ZTI7S7494C8[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S7494C8[];
static  VTT_ENTRY vtt_S7494C8[] = {
  {&(_ZTV7S7494C8[5]),  5,6},
  {&(_ZTV7S7494C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
Class_Descriptor cd_S7494C8 = {  "S7494C8", // class name
  bases_S7494C8, 2,
  &(vtc_S7494C8[0]), // expected_vtbl_contents
  &(vtt_S7494C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7494C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7494C8),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7494C8),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  S7494C11  : S7494C8 , S19894C34 , S7494C9 {
  virtual  ~S7494C11(); // _ZN8S7494C11D2Ev
  S7494C11(); // tgen
};
//SIG(-1 S7494C11) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S7494C11()
{
  extern Class_Descriptor cd_S7494C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7494C11, buf);
    S7494C11 *dp, &lv = *(dp=new (buf) S7494C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7494C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C11)");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*), ABISELECT(24,12), "S7494C11");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*), 0, "S7494C11");
    check_base_class_offset(lv, (S7494C8*), 0, "S7494C11");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S7494C11");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*), ABISELECT(16,8), "S7494C11");
    test_class_info(&lv, &cd_S7494C11);
    dp->~S7494C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C11(Test_S7494C11, "S7494C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7494C11C1Ev();
extern void _ZN8S7494C11D2Ev();
Name_Map name_map_S7494C11[] = {
  NSPAIR(_ZN8S7494C11C1Ev),
  NSPAIR(_ZN8S7494C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
static Base_Class bases_S7494C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C9,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7494C9,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C11[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S7494C11[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C11[] = {
  {&(_ZTV8S7494C11[5]),  5,11},
  {&(_tg__ZTV7S7494C8__8S7494C11[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C11[5]),  5,6},
  {&(_ZTV8S7494C11[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
Class_Descriptor cd_S7494C11 = {  "S7494C11", // class name
  bases_S7494C11, 5,
  &(vtc_S7494C11[0]), // expected_vtbl_contents
  &(vtt_S7494C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7494C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7494C11),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C11),4, //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  S7494C10  : S7494C11 {
  ~S7494C10(); // tgen
  S7494C10(); // tgen
};
//SIG(-1 S7494C10) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S7494C10()
{
  extern Class_Descriptor cd_S7494C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7494C10, buf);
    S7494C10 *dp, &lv = *(dp=new (buf) S7494C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7494C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C10)");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), ABISELECT(24,12), "S7494C10");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), 0, "S7494C10");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*), 0, "S7494C10");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), 0, "S7494C10");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(16,8), "S7494C10");
    check_base_class_offset(lv, (S7494C11*), 0, "S7494C10");
    test_class_info(&lv, &cd_S7494C10);
    dp->~S7494C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C10(Test_S7494C10, "S7494C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7494C10C1Ev();
extern void _ZN8S7494C10D1Ev();
Name_Map name_map_S7494C10[] = {
  NSPAIR(_ZN8S7494C10C1Ev),
  NSPAIR(_ZN8S7494C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
static Base_Class bases_S7494C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7494C9,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C10[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C10D1Ev();
extern void _ZN8S7494C10D0Ev();
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C10[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S7494C10[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C10[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__8S7494C10[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C10[] = {
  {&(_ZTV8S7494C10[5]),  5,11},
  {&(_tg__ZTV8S7494C11__8S7494C10[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__8S7494C10[5]),  5,6},
  {&(_tg__ZTV7S7494C88S7494C11__8S7494C10[5]),  5,6},
  {&(_tg__ZTV8S7494C11__8S7494C10[5]),  5,8},
  {&(_ZTV8S7494C10[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S7494C10[];
extern  VTBL_ENTRY _ZTV8S7494C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C10[];
Class_Descriptor cd_S7494C10 = {  "S7494C10", // class name
  bases_S7494C10, 6,
  &(vtc_S7494C10[0]), // expected_vtbl_contents
  &(vtt_S7494C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7494C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7494C10),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C10),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  S7494C5  : S19894C6_nt , S19894C17_nt , virtual S7494C8 , virtual S7494C10 {
  ~S7494C5(); // tgen
  S7494C5(); // tgen
};
//SIG(-1 S7494C5) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S7494C5()
{
  extern Class_Descriptor cd_S7494C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7494C5, buf);
    S7494C5 *dp, &lv = *(dp=new (buf) S7494C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7494C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C5)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S7494C5");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S7494C5");
    /*is_ambiguous_... S7494C5::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C5");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C10*), 0, "S7494C5");
    /*is_ambiguous_... S7494C5::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), 0, "S7494C5");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C10*), 0, "S7494C5");
    /*is_ambiguous_... S7494C5::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*), ABISELECT(16,8), "S7494C5");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(32,16), "S7494C5");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C10*), ABISELECT(32,16), "S7494C5");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C10*), ABISELECT(48,24), "S7494C5");
    check_base_class_offset(lv, (S7494C11*)(S7494C10*), ABISELECT(32,16), "S7494C5");
    check_base_class_offset(lv, (S7494C10*), ABISELECT(32,16), "S7494C5");
    test_class_info(&lv, &cd_S7494C5);
    dp->~S7494C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C5(Test_S7494C5, "S7494C5", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S7494C5C1Ev();
extern void _ZN7S7494C5D1Ev();
Name_Map name_map_S7494C5[] = {
  NSPAIR(_ZN7S7494C5C1Ev),
  NSPAIR(_ZN7S7494C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C10;
extern VTBL_ENTRY _ZTI8S7494C10[];
extern  VTBL_ENTRY _ZTV8S7494C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C10[];
static Base_Class bases_S7494C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C9,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S7494C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7494C10,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7494C5[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C5D1Ev();
extern void _ZN7S7494C5D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C5[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S7494C5[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__7S7494C5[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C10D1Ev();
extern void _ZN8S7494C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C118S7494C10__7S7494C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C10__7S7494C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C5[] = {
  {&(_ZTV7S7494C5[7]),  7,28},
  {&(_ZTV7S7494C5[15]),  15,28},
  {&(_ZTV7S7494C5[7]),  7,28},
  {&(_ZTV7S7494C5[22]),  22,28},
  {&(_ZTV7S7494C5[27]),  27,28},
  {&(_tg__ZTV7S7494C8__7S7494C5[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__7S7494C5[3]),  3,4},
  {&(_tg__ZTV8S7494C10__7S7494C5[5]),  5,8},
  {&(_tg__ZTV8S7494C118S7494C10__7S7494C5[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C5[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C5[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C5[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C10__7S7494C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7494C5[];
extern  VTBL_ENTRY _ZTV7S7494C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C5[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C5 = {  "S7494C5", // class name
  bases_S7494C5, 10,
  &(vtc_S7494C5[0]), // expected_vtbl_contents
  &(vtt_S7494C5[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S7494C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7494C5),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7494C5),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C15  : S7494C9 , S19894C6_nt , virtual S7494C8 {
  virtual void  v2(); // _ZN8S7494C152v2Ev
  ~S7494C15(); // tgen
  S7494C15(); // tgen
};
//SIG(-1 S7494C15) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S7494C15()
{
  extern Class_Descriptor cd_S7494C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7494C15, buf);
    S7494C15 *dp, &lv = *(dp=new (buf) S7494C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7494C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C15)");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*), 0, "S7494C15");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S7494C15");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C15");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(16,8), "S7494C15");
    check_base_class_offset(lv, (S7494C8*), ABISELECT(16,8), "S7494C15");
    test_class_info(&lv, &cd_S7494C15);
    dp->~S7494C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C15(Test_S7494C15, "S7494C15", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7494C15C1Ev();
extern void _ZN8S7494C15D1Ev();
Name_Map name_map_S7494C15[] = {
  NSPAIR(_ZN8S7494C15C1Ev),
  NSPAIR(_ZN8S7494C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
static Base_Class bases_S7494C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7494C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S7494C15[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C15[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S7494C15[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C15[] = {
  {&(_ZTV8S7494C15[5]),  5,13},
  {&(_ZTV8S7494C15[12]),  12,13},
  {&(_ZTV8S7494C15[12]),  12,13},
  {&(_tg__ZTV7S7494C8__8S7494C15[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C15[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
Class_Descriptor cd_S7494C15 = {  "S7494C15", // class name
  bases_S7494C15, 5,
  &(vtc_S7494C15[0]), // expected_vtbl_contents
  &(vtt_S7494C15[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7494C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7494C15),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C14  : S7494C8 , virtual S19894C6_nt , S7494C15 {
  int s7494c14f0;
  ~S7494C14(); // tgen
  S7494C14(); // tgen
};
//SIG(-1 S7494C14) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S7494C14()
{
  extern Class_Descriptor cd_S7494C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7494C14, buf);
    S7494C14 *dp, &lv = *(dp=new (buf) S7494C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7494C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C14)");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C14");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C14");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), 0, "S7494C14");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), 0, "S7494C14");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*), 0, "S7494C14");
    /*is_ambiguous_... S7494C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S7494C14");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(16,8), "S7494C14");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(24,12), "S7494C14");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(48,24), "S7494C14");
    check_base_class_offset(lv, (S7494C15*), ABISELECT(16,8), "S7494C14");
    check_field_offset(lv, s7494c14f0, ABISELECT(32,16), "S7494C14.s7494c14f0");
    test_class_info(&lv, &cd_S7494C14);
    dp->~S7494C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C14(Test_S7494C14, "S7494C14", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S7494C14C1Ev();
extern void _ZN8S7494C14D1Ev();
Name_Map name_map_S7494C14[] = {
  NSPAIR(_ZN8S7494C14C1Ev),
  NSPAIR(_ZN8S7494C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
static Base_Class bases_S7494C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7494C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C9,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7494C8,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7494C15,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C14[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C14[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S7494C14[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A__8S7494C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__8S7494C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__8S7494C14[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__A1__8S7494C14[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C14[] = {
  {&(_ZTV8S7494C14[7]),  7,21},
  {&(_tg__ZTV7S7494C8__A__8S7494C14[5]),  5,6},
  {&(_tg__ZTV7S7494C8__A__8S7494C14[5]),  5,6},
  {&(_tg__ZTV8S7494C15__8S7494C14[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__8S7494C14[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__8S7494C14[3]),  3,4},
  {&(_ZTV8S7494C14[7]),  7,21},
  {&(_ZTV8S7494C14[13]),  13,21},
  {&(_ZTV8S7494C14[20]),  20,21},
  {&(_tg__ZTV7S7494C8__A1__8S7494C14[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__A1__8S7494C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7494C14[];
extern  VTBL_ENTRY _ZTV8S7494C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C14[];
Class_Descriptor cd_S7494C14 = {  "S7494C14", // class name
  bases_S7494C14, 8,
  &(vtc_S7494C14[0]), // expected_vtbl_contents
  &(vtt_S7494C14[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S7494C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7494C14),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C14),11, //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  S7494C13  : virtual S7494C8 , S7494C14 , virtual S21216C26_nt , S19894C34 , virtual S19894C17_nt {
  ::S19894C34 s7494c13f0;
  virtual  ~S7494C13(); // _ZN8S7494C13D2Ev
  S7494C13(); // tgen
};
//SIG(-1 S7494C13) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S7494C13()
{
  extern Class_Descriptor cd_S7494C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7494C13, buf);
    S7494C13 *dp, &lv = *(dp=new (buf) S7494C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7494C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C13)");
    /*is_ambiguous_... S7494C13::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), ABISELECT(56,32), "S7494C13");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C14*), ABISELECT(56,32), "S7494C13");
    /*is_ambiguous_... S7494C13::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(40,24), "S7494C13");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C14*), ABISELECT(40,24), "S7494C13");
    /*is_ambiguous_... S7494C13::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*), ABISELECT(40,24), "S7494C13");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*)(S7494C14*), ABISELECT(40,24), "S7494C13");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C14*), 0, "S7494C13");
    /*is_ambiguous_... S7494C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7494C14*), ABISELECT(56,32), "S7494C13");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*)(S7494C14*), ABISELECT(16,8), "S7494C13");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*)(S7494C14*), ABISELECT(24,12), "S7494C13");
    check_base_class_offset(lv, (S7494C15*)(S7494C14*), ABISELECT(16,8), "S7494C13");
    check_base_class_offset(lv, (S7494C14*), 0, "S7494C13");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(64,36), "S7494C13");
    /*is_ambiguous_... S7494C13::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S7494C13");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S7494C13");
    check_field_offset(lv, s7494c13f0, ABISELECT(36,20), "S7494C13.s7494c13f0");
    test_class_info(&lv, &cd_S7494C13);
    dp->~S7494C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C13(Test_S7494C13, "S7494C13", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S7494C13C1Ev();
extern void _ZN8S7494C13D2Ev();
Name_Map name_map_S7494C13[] = {
  NSPAIR(_ZN8S7494C13C1Ev),
  NSPAIR(_ZN8S7494C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C14;
extern VTBL_ENTRY _ZTI8S7494C14[];
extern  VTBL_ENTRY _ZTV8S7494C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S7494C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7494C13[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C13D1Ev();
extern void _ZN8S7494C13D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7494C13D1Ev,_ZThn36_N8S7494C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7494C13D0Ev,_ZThn36_N8S7494C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7494C13[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7494C13[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C14__8S7494C13[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C14__A1__8S7494C13[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C14__A1__8S7494C13[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C14__8S7494C13[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C158S7494C14__8S7494C13[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C14__8S7494C13[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C14__8S7494C13[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C13[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C13[] = {
  {&(_ZTV8S7494C13[9]),  9,30},
  {&(_tg__ZTV8S7494C14__8S7494C13[7]),  7,8},
  {&(_tg__ZTV7S7494C88S7494C14__A1__8S7494C13[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C14__A1__8S7494C13[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C14__8S7494C13[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C158S7494C14__8S7494C13[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C158S7494C14__8S7494C13[5]),  5,6},
  {&(_tg__ZTV7S7494C8__A1__8S7494C14__8S7494C13[5]),  5,6},
  {&(_tg__ZTV8S7494C15__8S7494C14__8S7494C13[5]),  5,7},
  {&(_tg__ZTV7S7494C8__A1__8S7494C14__8S7494C13[5]),  5,6},
  {&(_ZTV8S7494C13[24]),  24,30},
  {&(_ZTV8S7494C13[24]),  24,30},
  {&(_ZTV8S7494C13[17]),  17,30},
  {&(_ZTV8S7494C13[28]),  28,30},
  {&(_tg__ZTV7S7494C8__8S7494C13[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C13[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S7494C13[];
extern  VTBL_ENTRY _ZTV8S7494C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C13[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7494C13D0Ev,_ZThn36_N8S7494C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7494C13D1Ev,_ZThn36_N8S7494C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C13 = {  "S7494C13", // class name
  bases_S7494C13, 12,
  &(vtc_S7494C13[0]), // expected_vtbl_contents
  &(vtt_S7494C13[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S7494C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7494C13),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C13),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C4  : virtual S7494C5 , S21216C26_nt , S7494C11 , virtual S7494C13 {
  void *s7494c4f0[4];
  ~S7494C4(); // tgen
  S7494C4(); // tgen
};
//SIG(-1 S7494C4) C1{ VBC2{ BC3{ m Fp} BC4{ m} VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC9{ BC5 BC6 BC7 vd}}} BC10{ vd m} BC9 VBC11{ VBC5 BC12{ BC5 VBC3 BC13{ BC7 BC3 VBC5 v2} Fi} VBC10 BC6 VBC4 vd FC6} Fp[4]}


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

static void Test_S7494C4()
{
  extern Class_Descriptor cd_S7494C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S7494C4, buf);
    S7494C4 *dp, &lv = *(dp=new (buf) S7494C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S7494C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C4)");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C5*), ABISELECT(72,36), "S7494C4");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C5*), ABISELECT(64,32), "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C4");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C10*), 0, "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), 0, "S7494C4");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C14*)(S7494C13*), 0, "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(64,32), "S7494C4");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(64,32), "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), ABISELECT(64,32), "S7494C4");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C14*)(S7494C13*), ABISELECT(64,32), "S7494C4");
    /*is_ambiguous_... S7494C5::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C5*), ABISELECT(80,40), "S7494C4");
    /*is_ambiguous_... S7494C13::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C13*), ABISELECT(80,40), "S7494C4");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(80,40), "S7494C4");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(96,48), "S7494C4");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C10*), ABISELECT(96,48), "S7494C4");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C10*), ABISELECT(112,56), "S7494C4");
    check_base_class_offset(lv, (S7494C11*)(S7494C10*), ABISELECT(96,48), "S7494C4");
    check_base_class_offset(lv, (S7494C10*)(S7494C5*), ABISELECT(96,48), "S7494C4");
    check_base_class_offset(lv, (S7494C5*), ABISELECT(64,32), "S7494C4");
    /*is_ambiguous_... S7494C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*), ABISELECT(8,4), "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), ABISELECT(8,4), "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(24,12), "S7494C4");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C11*), ABISELECT(8,4), "S7494C4");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C14*)(S7494C13*), ABISELECT(120,60), "S7494C4");
    /*is_ambiguous_... S7494C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7494C14*)(S7494C13*), ABISELECT(160,84), "S7494C4");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(136,68), "S7494C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(144,72), "S7494C4");
    check_base_class_offset(lv, (S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(136,68), "S7494C4");
    check_base_class_offset(lv, (S7494C14*)(S7494C13*), ABISELECT(120,60), "S7494C4");
    check_base_class_offset(lv, (S21216C26_nt*)(S7494C13*), ABISELECT(168,88), "S7494C4");
    /*is_ambiguous_... S7494C13::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C13*), ABISELECT(120,60), "S7494C4");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C13*), 0, "S7494C4");
    check_base_class_offset(lv, (S7494C13*), ABISELECT(120,60), "S7494C4");
    check_field_offset(lv, s7494c4f0, ABISELECT(32,16), "S7494C4.s7494c4f0");
    test_class_info(&lv, &cd_S7494C4);
    dp->~S7494C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C4(Test_S7494C4, "S7494C4", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S7494C4C1Ev();
extern void _ZN7S7494C4D1Ev();
Name_Map name_map_S7494C4[] = {
  NSPAIR(_ZN7S7494C4C1Ev),
  NSPAIR(_ZN7S7494C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C10;
extern VTBL_ENTRY _ZTI8S7494C10[];
extern  VTBL_ENTRY _ZTV8S7494C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C10[];
extern Class_Descriptor cd_S7494C5;
extern VTBL_ENTRY _ZTI7S7494C5[];
extern  VTBL_ENTRY _ZTV7S7494C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C14;
extern VTBL_ENTRY _ZTI8S7494C14[];
extern  VTBL_ENTRY _ZTV8S7494C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7494C13;
extern VTBL_ENTRY _ZTI8S7494C13[];
extern  VTBL_ENTRY _ZTV8S7494C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C13[];
static Base_Class bases_S7494C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(80,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(112,56), //bcp->offset
    50, //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7494C10,    ABISELECT(96,48), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7494C5,    ABISELECT(64,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7494C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7494C9,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7494C8,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(136,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7494C14,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(168,88), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7494C13,    ABISELECT(120,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7494C4[];
extern void _ZN7S7494C4D1Ev();
extern void _ZN7S7494C4D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn8_N7S7494C4D1Ev,_ZThn4_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7494C4D0Ev,_ZThn4_N7S7494C4D0Ev)();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7494C4D1Ev,_ZThn32_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7494C4D0Ev,_ZThn32_N7S7494C4D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7494C4D1Ev,_ZThn48_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7494C4D0Ev,_ZThn48_N7S7494C4D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7494C4D1Ev,_ZThn60_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7494C4D0Ev,_ZThn60_N7S7494C4D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7494C4D1Ev,_ZThn88_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7494C4D0Ev,_ZThn88_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7494C4[] = {
  0,
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  0,
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C4D0Ev,
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C4D1Ev,_ZThn4_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C4D0Ev,_ZThn4_N7S7494C4D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S7494C4[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__A1__7S7494C4[] = {
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__A2__7S7494C4[] = {
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C11__A2__7S7494C4[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C11__A1__7S7494C4[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C5D1Ev();
extern void _ZN7S7494C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C5__7S7494C4[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C5__7S7494C4[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C5__7S7494C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C5__7S7494C4[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C4[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__7S7494C4[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C10D1Ev();
extern void _ZN8S7494C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C118S7494C10__7S7494C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C4[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C4[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C10__7S7494C4[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C13D1Ev();
extern void _ZN8S7494C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C13__7S7494C4[] = {
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C148S7494C13__7S7494C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C148S7494C13__A3__7S7494C4[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C148S7494C13__A3__7S7494C4[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C148S7494C13__7S7494C4[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C158S7494C148S7494C13__7S7494C4[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C158S7494C148S7494C13__7S7494C4[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C148S7494C13__7S7494C4[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C148S7494C13__7S7494C4[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C148S7494C13__7S7494C4[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C13__7S7494C4[] = {
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C13__7S7494C4[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C14__8S7494C13__7S7494C4[] = {
  ABISELECT(-72,-36),
  ABISELECT(-136,-68),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7494C13D1Ev,_ZThn28_N8S7494C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7494C13D0Ev,_ZThn28_N8S7494C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S7494C13__7S7494C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev),
};
static  VTT_ENTRY vtt_S7494C4[] = {
  {&(_ZTV7S7494C4[11]),  11,79},
  {&(_tg__ZTV8S7494C11__A1__7S7494C4[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__A2__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C11__A2__7S7494C4[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C11__A1__7S7494C4[3]),  3,4},
  {&(_ZTV7S7494C4[32]),  32,79},
  {&(_ZTV7S7494C4[40]),  40,79},
  {&(_ZTV7S7494C4[32]),  32,79},
  {&(_ZTV7S7494C4[47]),  47,79},
  {&(_ZTV7S7494C4[52]),  52,79},
  {&(_ZTV7S7494C4[18]),  18,79},
  {&(_ZTV7S7494C4[64]),  64,79},
  {&(_ZTV7S7494C4[72]),  72,79},
  {&(_ZTV7S7494C4[77]),  77,79},
  {&(_tg__ZTV7S7494C5__7S7494C4[7]),  7,10},
  {&(_tg__ZTV7S7494C8__7S7494C5__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C5__7S7494C4[7]),  7,10},
  {&(_tg__ZTV8S7494C10__7S7494C5__7S7494C4[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C5__7S7494C4[2]),  2,3},
  {&(_tg__ZTV7S7494C8__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__7S7494C4[3]),  3,4},
  {&(_tg__ZTV8S7494C10__7S7494C4[5]),  5,8},
  {&(_tg__ZTV8S7494C118S7494C10__7S7494C4[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C4[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C4[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C10__7S7494C4[3]),  3,4},
  {&(_tg__ZTV8S7494C13__7S7494C4[9]),  9,12},
  {&(_tg__ZTV8S7494C148S7494C13__7S7494C4[7]),  7,8},
  {&(_tg__ZTV7S7494C88S7494C148S7494C13__A3__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C148S7494C13__A3__7S7494C4[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C148S7494C13__7S7494C4[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C158S7494C148S7494C13__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C158S7494C148S7494C13__7S7494C4[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C148S7494C13__7S7494C4[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C148S7494C13__7S7494C4[5]),  5,7},
  {&(_tg__ZTV7S7494C8__A1__8S7494C148S7494C13__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C13__7S7494C4[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C13__7S7494C4[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C14__8S7494C13__7S7494C4[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S7494C13__7S7494C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7494C4[];
extern  VTBL_ENTRY _ZTV7S7494C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C4[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7494C13D0Ev,_ZThn28_N8S7494C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7494C13D1Ev,_ZThn28_N8S7494C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C4D0Ev,_ZThn88_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C4D1Ev,_ZThn88_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7494C4D0Ev,_ZThn60_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7494C4D1Ev,_ZThn60_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7494C4D0Ev,_ZThn48_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7494C4D1Ev,_ZThn48_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7494C4D0Ev,_ZThn32_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7494C4D1Ev,_ZThn32_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C4 = {  "S7494C4", // class name
  bases_S7494C4, 26,
  &(vtc_S7494C4[0]), // expected_vtbl_contents
  &(vtt_S7494C4[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S7494C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7494C4),79, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7494C4),41, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C16  : virtual S7494C15 {
  ~S7494C16(); // tgen
  S7494C16(); // tgen
};
//SIG(-1 S7494C16) C1{ VBC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2}}


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

static void Test_S7494C16()
{
  extern Class_Descriptor cd_S7494C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7494C16, buf);
    S7494C16 *dp, &lv = *(dp=new (buf) S7494C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7494C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C16)");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(8,4), "S7494C16");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(16,8), "S7494C16");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C16");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*), 0, "S7494C16");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(24,12), "S7494C16");
    check_base_class_offset(lv, (S7494C15*), ABISELECT(8,4), "S7494C16");
    test_class_info(&lv, &cd_S7494C16);
    dp->~S7494C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C16(Test_S7494C16, "S7494C16", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S7494C16C1Ev();
extern void _ZN8S7494C16D1Ev();
Name_Map name_map_S7494C16[] = {
  NSPAIR(_ZN8S7494C16C1Ev),
  NSPAIR(_ZN8S7494C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
static Base_Class bases_S7494C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7494C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C9,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(24,12), //bcp->offset
    17, //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
    5, //immediately_derived
  0, 1},
  {&cd_S7494C15,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C16[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C16[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S7494C16[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C16[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__8S7494C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__8S7494C16[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__8S7494C16[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C16[] = {
  {&(_ZTV8S7494C16[7]),  7,23},
  {&(_ZTV8S7494C16[15]),  15,23},
  {&(_ZTV8S7494C16[22]),  22,23},
  {&(_ZTV8S7494C16[7]),  7,23},
  {&(_tg__ZTV8S7494C15__8S7494C16[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__8S7494C16[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__8S7494C16[3]),  3,4},
  {&(_tg__ZTV7S7494C8__8S7494C16[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__8S7494C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7494C16[];
extern  VTBL_ENTRY _ZTV8S7494C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C16[];
Class_Descriptor cd_S7494C16 = {  "S7494C16", // class name
  bases_S7494C16, 6,
  &(vtc_S7494C16[0]), // expected_vtbl_contents
  &(vtt_S7494C16[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S7494C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7494C16),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C16),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C17  : virtual S7494C8 , virtual S7494C15 {
  ~S7494C17(); // tgen
  S7494C17(); // tgen
};
//SIG(-1 S7494C17) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S7494C17()
{
  extern Class_Descriptor cd_S7494C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7494C17, buf);
    S7494C17 *dp, &lv = *(dp=new (buf) S7494C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7494C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C17)");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C17");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*), 0, "S7494C17");
    check_base_class_offset(lv, (S7494C8*), ABISELECT(8,4), "S7494C17");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(8,4), "S7494C17");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(24,12), "S7494C17");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(32,16), "S7494C17");
    check_base_class_offset(lv, (S7494C15*), ABISELECT(24,12), "S7494C17");
    test_class_info(&lv, &cd_S7494C17);
    dp->~S7494C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C17(Test_S7494C17, "S7494C17", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S7494C17C1Ev();
extern void _ZN8S7494C17D1Ev();
Name_Map name_map_S7494C17[] = {
  NSPAIR(_ZN8S7494C17C1Ev),
  NSPAIR(_ZN8S7494C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
static Base_Class bases_S7494C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7494C9,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C9,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C17[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY vtc_S7494C17[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S7494C17[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__8S7494C17[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C17[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__8S7494C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__8S7494C17[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C17[] = {
  {&(_ZTV8S7494C17[7]),  7,23},
  {&(_ZTV8S7494C17[13]),  13,23},
  {&(_ZTV8S7494C17[7]),  7,23},
  {&(_ZTV8S7494C17[21]),  21,23},
  {&(_tg__ZTV7S7494C8__8S7494C17[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__8S7494C17[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C17[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__8S7494C17[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__8S7494C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7494C17[];
extern  VTBL_ENTRY _ZTV8S7494C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C17[];
Class_Descriptor cd_S7494C17 = {  "S7494C17", // class name
  bases_S7494C17, 6,
  &(vtc_S7494C17[0]), // expected_vtbl_contents
  &(vtt_S7494C17[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S7494C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7494C17),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C17),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C2  : virtual S19894C34 , virtual S7494C4 , virtual S7494C16 , S7494C17 {
  virtual  ~S7494C2(); // _ZN7S7494C2D2Ev
  S7494C2(); // tgen
};
//SIG(-1 S7494C2) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fp} BC6{ m} VBC7{ VBC2 VBC8{ v1} FC8} VBC9{ BC10{ BC7 BC2 BC8 vd}}} BC11{ vd m} BC10 VBC12{ VBC7 BC13{ BC7 VBC5 BC14{ BC8 BC5 VBC7 v2} Fi} VBC11 BC2 VBC6 vd FC2} Fp[4]} VBC15{ VBC14} BC16{ VBC7 VBC14} vd}


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

static void Test_S7494C2()
{
  extern Class_Descriptor cd_S7494C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,28)];
    init_test(&cd_S7494C2, buf);
    S7494C2 *dp, &lv = *(dp=new (buf) S7494C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S7494C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C2)");
    /*is_ambiguous_... S7494C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S7494C2");
    /*is_ambiguous_... S7494C2::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C2");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C10*), 0, "S7494C2");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C4*), 0, "S7494C2");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C14*)(S7494C13*), 0, "S7494C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C5*), ABISELECT(80,40), "S7494C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C5*), ABISELECT(72,36), "S7494C2");
    /*is_ambiguous_... S7494C2::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(72,36), "S7494C2");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(72,36), "S7494C2");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C4*), ABISELECT(72,36), "S7494C2");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C14*)(S7494C13*), ABISELECT(72,36), "S7494C2");
    /*is_ambiguous_... S7494C5::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C5*), ABISELECT(88,44), "S7494C2");
    /*is_ambiguous_... S7494C13::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C13*), ABISELECT(88,44), "S7494C2");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(88,44), "S7494C2");
    /*is_ambiguous_... S7494C2::S7494C15 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(88,44), "S7494C2");
    check_base_class_offset(lv, (S7494C8*)(S7494C17*), ABISELECT(88,44), "S7494C2");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(104,52), "S7494C2");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C10*), ABISELECT(104,52), "S7494C2");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C10*), ABISELECT(120,60), "S7494C2");
    check_base_class_offset(lv, (S7494C11*)(S7494C10*), ABISELECT(104,52), "S7494C2");
    check_base_class_offset(lv, (S7494C10*)(S7494C5*), ABISELECT(104,52), "S7494C2");
    check_base_class_offset(lv, (S7494C5*)(S7494C4*), ABISELECT(72,36), "S7494C2");
    /*is_ambiguous_... S7494C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S7494C4*), ABISELECT(8,4), "S7494C2");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C4*), ABISELECT(16,8), "S7494C2");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C4*), ABISELECT(16,8), "S7494C2");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C4*), ABISELECT(32,16), "S7494C2");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C11*)(S7494C4*), ABISELECT(16,8), "S7494C2");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C14*)(S7494C13*), ABISELECT(128,64), "S7494C2");
    /*is_ambiguous_... S7494C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7494C14*)(S7494C13*), ABISELECT(168,88), "S7494C2");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(144,72), "S7494C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(152,76), "S7494C2");
    check_base_class_offset(lv, (S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(144,72), "S7494C2");
    check_base_class_offset(lv, (S7494C14*)(S7494C13*), ABISELECT(128,64), "S7494C2");
    check_base_class_offset(lv, (S21216C26_nt*)(S7494C13*), ABISELECT(176,92), "S7494C2");
    /*is_ambiguous_... S7494C13::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C13*), ABISELECT(128,64), "S7494C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C13*), 0, "S7494C2");
    check_base_class_offset(lv, (S7494C13*)(S7494C4*), ABISELECT(128,64), "S7494C2");
    check_base_class_offset(lv, (S7494C4*), ABISELECT(8,4), "S7494C2");
    /*is_ambiguous_... S7494C2::S7494C15 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(192,100), "S7494C2");
    /*is_ambiguous_... S7494C2::S7494C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(200,104), "S7494C2");
    check_base_class_offset(lv, (S7494C15*)(S7494C16*), ABISELECT(192,100), "S7494C2");
    check_base_class_offset(lv, (S7494C15*)(S7494C17*), ABISELECT(192,100), "S7494C2");
    check_base_class_offset(lv, (S7494C16*), ABISELECT(184,96), "S7494C2");
    check_base_class_offset(lv, (S7494C17*), 0, "S7494C2");
    test_class_info(&lv, &cd_S7494C2);
    dp->~S7494C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C2(Test_S7494C2, "S7494C2", ABISELECT(208,108));

#else // __cplusplus

extern void _ZN7S7494C2C1Ev();
extern void _ZN7S7494C2D2Ev();
Name_Map name_map_S7494C2[] = {
  NSPAIR(_ZN7S7494C2C1Ev),
  NSPAIR(_ZN7S7494C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C10;
extern VTBL_ENTRY _ZTI8S7494C10[];
extern  VTBL_ENTRY _ZTV8S7494C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C10[];
extern Class_Descriptor cd_S7494C5;
extern VTBL_ENTRY _ZTI7S7494C5[];
extern  VTBL_ENTRY _ZTV7S7494C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C14;
extern VTBL_ENTRY _ZTI8S7494C14[];
extern  VTBL_ENTRY _ZTV8S7494C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7494C13;
extern VTBL_ENTRY _ZTI8S7494C13[];
extern  VTBL_ENTRY _ZTV8S7494C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C13[];
extern Class_Descriptor cd_S7494C4;
extern VTBL_ENTRY _ZTI7S7494C4[];
extern  VTBL_ENTRY _ZTV7S7494C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C4[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C16;
extern VTBL_ENTRY _ZTI8S7494C16[];
extern  VTBL_ENTRY _ZTV8S7494C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C16[];
extern Class_Descriptor cd_S7494C17;
extern VTBL_ENTRY _ZTI8S7494C17[];
extern  VTBL_ENTRY _ZTV8S7494C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C17[];
static Base_Class bases_S7494C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(88,44), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(120,60), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7494C10,    ABISELECT(104,52), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7494C5,    ABISELECT(72,36), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S7494C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(32,16), //bcp->offset
    41, //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
    15, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(16,8), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7494C8,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_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
    21, //immediately_derived
  0, 1},
  {&cd_S7494C9,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(144,72), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7494C14,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(176,92), //bcp->offset
    94, //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
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7494C13,    ABISELECT(128,64), //bcp->offset
    73, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7494C4,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C9,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(192,100), //bcp->offset
    107, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7494C16,    ABISELECT(184,96), //bcp->offset
    99, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C17,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7494C2[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C2D1Ev();
extern void _ZN7S7494C2D0Ev();
extern void ABISELECT(_ZTv0_n96_N7S7494C2D1Ev,_ZTv0_n48_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7494C2D1Ev,_ZThn4_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7494C2D0Ev,_ZTv0_n48_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7494C2D0Ev,_ZThn4_N7S7494C2D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTvn8_n96_N7S7494C2D1Ev,_ZTvn4_n48_N7S7494C2D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N7S7494C2D0Ev,_ZTvn4_n48_N7S7494C2D0Ev)();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C2D1Ev,_ZTv0_n32_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7494C2D1Ev,_ZThn36_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C2D0Ev,_ZTv0_n32_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7494C2D0Ev,_ZThn36_N7S7494C2D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C2D1Ev,_ZTv0_n24_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S7494C2D1Ev,_ZThn52_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C2D0Ev,_ZTv0_n24_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S7494C2D0Ev,_ZThn52_N7S7494C2D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7494C2D1Ev,_ZTv0_n44_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S7494C2D1Ev,_ZThn64_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7494C2D0Ev,_ZTv0_n44_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S7494C2D0Ev,_ZThn64_N7S7494C2D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7494C2D1Ev,_ZTv0_n12_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S7494C2D1Ev,_ZThn92_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7494C2D0Ev,_ZTv0_n12_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S7494C2D0Ev,_ZThn92_N7S7494C2D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY vtc_S7494C2[] = {
  ABISELECT(184,96),
  0,
  ABISELECT(176,92),
  ABISELECT(168,88),
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(8,4),
  ABISELECT(192,100),
  ABISELECT(72,36),
  0,
  ABISELECT(88,44),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C2D0Ev,
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7494C2D1Ev,_ZTv0_n48_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7494C2D0Ev,_ZTv0_n48_N7S7494C2D0Ev),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S7494C2D1Ev,_ZTvn4_n48_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S7494C2D0Ev,_ZTvn4_n48_N7S7494C2D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-72,-36),
  ABISELECT(32,16),
  0,
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C2D1Ev,_ZTv0_n32_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C2D0Ev,_ZTv0_n32_N7S7494C2D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C2D1Ev,_ZTv0_n24_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C2D0Ev,_ZTv0_n24_N7S7494C2D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-128,-64),
  ABISELECT(16,8),
  ABISELECT(-128,-64),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C2D1Ev,_ZTv0_n44_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C2D0Ev,_ZTv0_n44_N7S7494C2D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C2D1Ev,_ZTv0_n12_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C2D0Ev,_ZTv0_n12_N7S7494C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-184,-96),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern VTBL_ENTRY _ZTV7S7494C2[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C17__7S7494C2[] = {
  ABISELECT(192,100),
  ABISELECT(72,36),
  0,
  ABISELECT(88,44),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C17__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C17__7S7494C2[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C17__7S7494C2[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C4D1Ev();
extern void _ZN7S7494C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C4__7S7494C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C4D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C117S7494C4__A1__7S7494C2[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C117S7494C4__A2__7S7494C2[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C117S7494C4__A2__7S7494C2[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C117S7494C4__A1__7S7494C2[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7494C4D1Ev,_ZThn32_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7494C4D0Ev,_ZThn32_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7494C5__7S7494C4__7S7494C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C4__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7494C4D1Ev,_ZThn48_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7494C4D0Ev,_ZThn48_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C4__7S7494C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C4__7S7494C2[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn8_N7S7494C4D1Ev,_ZThn4_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7494C4D0Ev,_ZThn4_N7S7494C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7494C11__A1__7S7494C4__7S7494C2[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C4D1Ev,_ZThn4_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C4D0Ev,_ZThn4_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7494C4D1Ev,_ZThn60_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7494C4D0Ev,_ZThn60_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C13__7S7494C4__7S7494C2[] = {
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-128,-64),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C148S7494C13__7S7494C4__7S7494C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7494C4D1Ev,_ZThn88_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7494C4D0Ev,_ZThn88_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__7S7494C4__7S7494C2[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C5D1Ev();
extern void _ZN7S7494C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C5__7S7494C2[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C5__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C5__7S7494C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C5__7S7494C2[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__7S7494C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C10D1Ev();
extern void _ZN8S7494C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C118S7494C10__7S7494C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C10__7S7494C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C13D1Ev();
extern void _ZN8S7494C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C13__7S7494C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C148S7494C13__7S7494C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C148S7494C13__A3__7S7494C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-128,-64),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C148S7494C13__A3__7S7494C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C148S7494C13__7S7494C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C158S7494C148S7494C13__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C158S7494C148S7494C13__7S7494C2[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C148S7494C13__7S7494C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C148S7494C13__7S7494C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C148S7494C13__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C13__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C13__7S7494C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C14__8S7494C13__7S7494C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-144,-72),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7494C13D1Ev,_ZThn28_N8S7494C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7494C13D0Ev,_ZThn28_N8S7494C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S7494C13__7S7494C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C16__7S7494C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-184,-96),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C16__7S7494C2[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C16__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C16__7S7494C2[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__A1__7S7494C2[] = {
  ABISELECT(-120,-64),
  ABISELECT(-192,-100),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__A1__7S7494C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__A1__7S7494C2[] = {
  0,
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C2[] = {
  {&(_ZTV7S7494C2[15]),  15,116},
  {&(_tg__ZTV8S7494C17__7S7494C2[7]),  7,8},
  {&(_tg__ZTV7S7494C8__8S7494C17__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C17__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C17__7S7494C2[7]),  7,9},
  {&(_ZTV7S7494C2[31]),  31,116},
  {&(_ZTV7S7494C2[52]),  52,116},
  {&(_ZTV7S7494C2[60]),  60,116},
  {&(_ZTV7S7494C2[52]),  52,116},
  {&(_ZTV7S7494C2[67]),  67,116},
  {&(_ZTV7S7494C2[72]),  72,116},
  {&(_ZTV7S7494C2[38]),  38,116},
  {&(_ZTV7S7494C2[43]),  43,116},
  {&(_ZTV7S7494C2[84]),  84,116},
  {&(_ZTV7S7494C2[92]),  92,116},
  {&(_ZTV7S7494C2[97]),  97,116},
  {&(_ZTV7S7494C2[106]),  106,116},
  {&(_ZTV7S7494C2[114]),  114,116},
  {&(_tg__ZTV7S7494C4__7S7494C2[11]),  11,13},
  {&(_tg__ZTV8S7494C117S7494C4__A1__7S7494C2[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C117S7494C4__A2__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C117S7494C4__A2__7S7494C2[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C117S7494C4__A1__7S7494C2[3]),  3,4},
  {&(_tg__ZTV7S7494C5__7S7494C4__7S7494C2[8]),  8,11},
  {&(_tg__ZTV7S7494C8__7S7494C4__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C5__7S7494C4__7S7494C2[8]),  8,11},
  {&(_tg__ZTV8S7494C10__7S7494C4__7S7494C2[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C4__7S7494C2[2]),  2,3},
  {&(_tg__ZTV8S7494C11__A1__7S7494C4__7S7494C2[5]),  5,8},
  {&(_tg__ZTV8S7494C13__7S7494C4__7S7494C2[11]),  11,14},
  {&(_tg__ZTV8S7494C158S7494C148S7494C13__7S7494C4__7S7494C2[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__7S7494C4__7S7494C2[3]),  3,5},
  {&(_tg__ZTV7S7494C5__7S7494C2[7]),  7,10},
  {&(_tg__ZTV7S7494C8__7S7494C5__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C5__7S7494C2[7]),  7,10},
  {&(_tg__ZTV8S7494C10__7S7494C5__7S7494C2[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C5__7S7494C2[2]),  2,3},
  {&(_tg__ZTV7S7494C8__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C10__7S7494C2[5]),  5,8},
  {&(_tg__ZTV8S7494C118S7494C10__7S7494C2[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C2[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C2[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C10__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C13__7S7494C2[9]),  9,12},
  {&(_tg__ZTV8S7494C148S7494C13__7S7494C2[7]),  7,8},
  {&(_tg__ZTV7S7494C88S7494C148S7494C13__A3__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C148S7494C13__A3__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C148S7494C13__7S7494C2[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C158S7494C148S7494C13__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C158S7494C148S7494C13__7S7494C2[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C148S7494C13__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C148S7494C13__7S7494C2[5]),  5,7},
  {&(_tg__ZTV7S7494C8__A1__8S7494C148S7494C13__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C13__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C13__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C14__8S7494C13__7S7494C2[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S7494C13__7S7494C2[3]),  3,5},
  {&(_tg__ZTV8S7494C16__7S7494C2[7]),  7,8},
  {&(_tg__ZTV8S7494C15__8S7494C16__7S7494C2[7]),  7,9},
  {&(_tg__ZTV7S7494C8__8S7494C16__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C16__7S7494C2[3]),  3,4},
  {&(_tg__ZTV8S7494C15__A1__7S7494C2[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__A1__7S7494C2[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__A1__7S7494C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7494C2[];
extern  VTBL_ENTRY _ZTV7S7494C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C2[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7494C13D0Ev,_ZThn28_N8S7494C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7494C13D1Ev,_ZThn28_N8S7494C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C4D0Ev,_ZThn88_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C4D1Ev,_ZThn88_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7494C4D0Ev,_ZThn60_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7494C4D1Ev,_ZThn60_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7494C4D0Ev,_ZThn48_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7494C4D1Ev,_ZThn48_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7494C4D0Ev,_ZThn32_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7494C4D1Ev,_ZThn32_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C2D0Ev,_ZTv0_n12_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7494C2D0Ev,_ZThn92_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C2D1Ev,_ZTv0_n12_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7494C2D1Ev,_ZThn92_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C2D0Ev,_ZTv0_n44_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7494C2D0Ev,_ZThn64_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C2D1Ev,_ZTv0_n44_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7494C2D1Ev,_ZThn64_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C2D0Ev,_ZTv0_n24_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7494C2D0Ev,_ZThn52_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C2D1Ev,_ZTv0_n24_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7494C2D1Ev,_ZThn52_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C2D0Ev,_ZTv0_n32_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7494C2D0Ev,_ZThn36_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C2D1Ev,_ZTv0_n32_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7494C2D1Ev,_ZThn36_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7494C2D0Ev,_ZTv0_n48_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7494C2D0Ev,_ZThn4_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7494C2D1Ev,_ZTv0_n48_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7494C2D1Ev,_ZThn4_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C2 = {  "S7494C2", // class name
  bases_S7494C2, 32,
  &(vtc_S7494C2[0]), // expected_vtbl_contents
  &(vtt_S7494C2[0]), // expected_vtt_contents
  ABISELECT(208,108), // object size
  NSPAIRA(_ZTI7S7494C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7494C2),116, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7494C2),66, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C20  : virtual S7494C11 , virtual S19894C6_nt {
  void *s7494c20f0[9];
  ~S7494C20(); // tgen
  S7494C20(); // tgen
};
//SIG(-1 S7494C20) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S7494C20()
{
  extern Class_Descriptor cd_S7494C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S7494C20, buf);
    S7494C20 *dp, &lv = *(dp=new (buf) S7494C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S7494C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C20)");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), 0, "S7494C20");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), 0, "S7494C20");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*), ABISELECT(80,40), "S7494C20");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), ABISELECT(80,40), "S7494C20");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(96,48), "S7494C20");
    check_base_class_offset(lv, (S7494C11*), ABISELECT(80,40), "S7494C20");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S7494C20");
    check_field_offset(lv, s7494c20f0, ABISELECT(8,4), "S7494C20.s7494c20f0");
    test_class_info(&lv, &cd_S7494C20);
    dp->~S7494C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C20(Test_S7494C20, "S7494C20", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S7494C20C1Ev();
extern void _ZN8S7494C20D1Ev();
Name_Map name_map_S7494C20[] = {
  NSPAIR(_ZN8S7494C20C1Ev),
  NSPAIR(_ZN8S7494C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S7494C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7494C9,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C20[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C20D1Ev();
extern void _ZN8S7494C20D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C20[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S7494C20[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__8S7494C20[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C11__8S7494C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C11__8S7494C20[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C20[] = {
  {&(_ZTV8S7494C20[7]),  7,22},
  {&(_ZTV8S7494C20[16]),  16,22},
  {&(_ZTV8S7494C20[7]),  7,22},
  {&(_ZTV8S7494C20[21]),  21,22},
  {&(_tg__ZTV8S7494C11__8S7494C20[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__8S7494C20[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C11__8S7494C20[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C11__8S7494C20[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7494C20[];
extern  VTBL_ENTRY _ZTV8S7494C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C20[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C20 = {  "S7494C20", // class name
  bases_S7494C20, 7,
  &(vtc_S7494C20[0]), // expected_vtbl_contents
  &(vtt_S7494C20[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S7494C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7494C20),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C20),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C19  : virtual S7494C20 , S19894C34 , S7494C17 {
  void *s7494c19f0;
  virtual  ~S7494C19(); // _ZN8S7494C19D2Ev
  S7494C19(); // tgen
};
//SIG(-1 S7494C19) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S7494C19()
{
  extern Class_Descriptor cd_S7494C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S7494C19, buf);
    S7494C19 *dp, &lv = *(dp=new (buf) S7494C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S7494C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C19)");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), ABISELECT(120,60), "S7494C19");
    /*is_ambiguous_... S7494C19::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), ABISELECT(120,60), "S7494C19");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), ABISELECT(16,8), "S7494C19");
    /*is_ambiguous_... S7494C19::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(16,8), "S7494C19");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*), ABISELECT(96,48), "S7494C19");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), ABISELECT(96,48), "S7494C19");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(112,56), "S7494C19");
    check_base_class_offset(lv, (S7494C11*)(S7494C20*), ABISELECT(96,48), "S7494C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C20*), ABISELECT(120,60), "S7494C19");
    check_base_class_offset(lv, (S7494C20*), ABISELECT(16,8), "S7494C19");
    /*is_ambiguous_... S7494C19::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S7494C19");
    check_base_class_offset(lv, (S7494C8*)(S7494C17*), ABISELECT(128,64), "S7494C19");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(128,64), "S7494C19");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(144,72), "S7494C19");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(152,76), "S7494C19");
    check_base_class_offset(lv, (S7494C15*)(S7494C17*), ABISELECT(144,72), "S7494C19");
    check_base_class_offset(lv, (S7494C17*), 0, "S7494C19");
    check_field_offset(lv, s7494c19f0, ABISELECT(8,4), "S7494C19.s7494c19f0");
    test_class_info(&lv, &cd_S7494C19);
    dp->~S7494C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C19(Test_S7494C19, "S7494C19", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S7494C19C1Ev();
extern void _ZN8S7494C19D2Ev();
Name_Map name_map_S7494C19[] = {
  NSPAIR(_ZN8S7494C19C1Ev),
  NSPAIR(_ZN8S7494C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C20;
extern VTBL_ENTRY _ZTI8S7494C20[];
extern  VTBL_ENTRY _ZTV8S7494C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C20[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C17;
extern VTBL_ENTRY _ZTI8S7494C17[];
extern  VTBL_ENTRY _ZTV8S7494C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C17[];
static Base_Class bases_S7494C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7494C20,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7494C8,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7494C9,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7494C17,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C19[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C19D1Ev();
extern void _ZN8S7494C19D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev)();
extern void ABISELECT(_ZThn16_N8S7494C19D1Ev,_ZThn8_N8S7494C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev)();
extern void ABISELECT(_ZThn16_N8S7494C19D0Ev,_ZThn8_N8S7494C19D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7494C19D1Ev,_ZThn48_N8S7494C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7494C19D0Ev,_ZThn48_N8S7494C19D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY vtc_S7494C19[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C19D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S7494C19[];
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C17__8S7494C19[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C17__8S7494C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C17__8S7494C19[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C17__8S7494C19[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C20D1Ev();
extern void _ZN8S7494C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C20__8S7494C19[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C20__8S7494C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C11__A1__8S7494C20__8S7494C19[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__8S7494C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C11__8S7494C19[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C11__8S7494C19[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__A1__8S7494C19[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C19[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__8S7494C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__8S7494C19[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C19[] = {
  {&(_ZTV8S7494C19[10]),  10,51},
  {&(_tg__ZTV8S7494C17__8S7494C19[7]),  7,8},
  {&(_tg__ZTV7S7494C8__8S7494C17__8S7494C19[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C17__8S7494C19[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C17__8S7494C19[7]),  7,9},
  {&(_ZTV8S7494C19[21]),  21,51},
  {&(_ZTV8S7494C19[30]),  30,51},
  {&(_ZTV8S7494C19[21]),  21,51},
  {&(_ZTV8S7494C19[35]),  35,51},
  {&(_ZTV8S7494C19[41]),  41,51},
  {&(_ZTV8S7494C19[49]),  49,51},
  {&(_tg__ZTV8S7494C20__8S7494C19[7]),  7,10},
  {&(_tg__ZTV8S7494C11__8S7494C20__8S7494C19[6]),  6,9},
  {&(_tg__ZTV8S7494C20__8S7494C19[7]),  7,10},
  {&(_tg__ZTV7S7494C98S7494C11__A1__8S7494C20__8S7494C19[2]),  2,3},
  {&(_tg__ZTV8S7494C11__8S7494C19[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__8S7494C19[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C11__8S7494C19[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C11__8S7494C19[3]),  3,4},
  {&(_tg__ZTV7S7494C8__A1__8S7494C19[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__A1__8S7494C19[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C19[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__8S7494C19[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__8S7494C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7494C19[];
extern  VTBL_ENTRY _ZTV8S7494C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C19[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7494C19D0Ev,_ZThn48_N8S7494C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7494C19D1Ev,_ZThn48_N8S7494C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7494C19D0Ev,_ZThn8_N8S7494C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7494C19D1Ev,_ZThn8_N8S7494C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C19 = {  "S7494C19", // class name
  bases_S7494C19, 14,
  &(vtc_S7494C19[0]), // expected_vtbl_contents
  &(vtt_S7494C19[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S7494C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7494C19),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C19),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C18  : virtual S7494C9 , S7494C19 , virtual S19894C17_nt , S7494C11 {
  virtual  ~S7494C18(); // _ZN8S7494C18D2Ev
  S7494C18(); // tgen
};
//SIG(-1 S7494C18) C1{ VBC2{ v1} BC3{ VBC4{ VBC5{ BC6{ VBC7{ m} VBC2 FC2} BC7 BC2 vd} VBC8{ m Fp} Fp[9]} BC7 BC9{ VBC6 VBC10{ BC2 BC8 VBC6 v2}} vd Fp} VBC11{ m} BC5 vd}


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

static void Test_S7494C18()
{
  extern Class_Descriptor cd_S7494C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[24];
    init_test(&cd_S7494C18, buf);
    S7494C18 *dp, &lv = *(dp=new (buf) S7494C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,92), "sizeof(S7494C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C18)");
    /*is_ambiguous_... S7494C18::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*), ABISELECT(40,20), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), ABISELECT(40,20), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(40,20), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), ABISELECT(40,20), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), ABISELECT(144,72), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), ABISELECT(144,72), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), ABISELECT(144,72), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*), ABISELECT(120,60), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), ABISELECT(120,60), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(136,68), "S7494C18");
    check_base_class_offset(lv, (S7494C11*)(S7494C20*), ABISELECT(120,60), "S7494C18");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C20*), ABISELECT(144,72), "S7494C18");
    check_base_class_offset(lv, (S7494C20*)(S7494C19*), ABISELECT(40,20), "S7494C18");
    /*is_ambiguous_... S7494C19::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C19*), 0, "S7494C18");
    check_base_class_offset(lv, (S7494C8*)(S7494C17*)(S7494C19*), ABISELECT(152,76), "S7494C18");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(152,76), "S7494C18");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(168,84), "S7494C18");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(176,88), "S7494C18");
    check_base_class_offset(lv, (S7494C15*)(S7494C17*)(S7494C19*), ABISELECT(168,84), "S7494C18");
    check_base_class_offset(lv, (S7494C17*)(S7494C19*), 0, "S7494C18");
    check_base_class_offset(lv, (S7494C19*), 0, "S7494C18");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*), ABISELECT(16,8), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), ABISELECT(16,8), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(32,16), "S7494C18");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C11*), ABISELECT(16,8), "S7494C18");
    test_class_info(&lv, &cd_S7494C18);
    dp->~S7494C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C18(Test_S7494C18, "S7494C18", ABISELECT(184,92));

#else // __cplusplus

extern void _ZN8S7494C18C1Ev();
extern void _ZN8S7494C18D2Ev();
Name_Map name_map_S7494C18[] = {
  NSPAIR(_ZN8S7494C18C1Ev),
  NSPAIR(_ZN8S7494C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C20;
extern VTBL_ENTRY _ZTI8S7494C20[];
extern  VTBL_ENTRY _ZTV8S7494C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C20[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C17;
extern VTBL_ENTRY _ZTI8S7494C17[];
extern  VTBL_ENTRY _ZTV8S7494C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C17[];
extern Class_Descriptor cd_S7494C19;
extern VTBL_ENTRY _ZTI8S7494C19[];
extern  VTBL_ENTRY _ZTV8S7494C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C19[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
static Base_Class bases_S7494C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7494C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(136,68), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(120,60), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7494C20,    ABISELECT(40,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7494C8,    ABISELECT(152,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(176,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
    12, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(168,84), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7494C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7494C19,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7494C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(32,16), //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
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7494C18[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C18D1Ev();
extern void _ZN8S7494C18D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn16_N8S7494C18D1Ev,_ZThn8_N8S7494C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S7494C18D0Ev,_ZThn8_N8S7494C18D0Ev)();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7494C18D1Ev,_ZTv0_n32_N8S7494C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S7494C18D1Ev,_ZThn20_N8S7494C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7494C18D0Ev,_ZTv0_n32_N8S7494C18D0Ev)();
extern void ABISELECT(_ZThn40_N8S7494C18D0Ev,_ZThn20_N8S7494C18D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C18D1Ev,_ZTv0_n24_N8S7494C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S7494C18D1Ev,_ZThn60_N8S7494C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C18D0Ev,_ZTv0_n24_N8S7494C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S7494C18D0Ev,_ZThn60_N8S7494C18D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY vtc_S7494C18[] = {
  0,
  ABISELECT(144,72),
  ABISELECT(120,60),
  ABISELECT(40,20),
  ABISELECT(168,84),
  ABISELECT(40,20),
  ABISELECT(144,72),
  ABISELECT(152,76),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C18D0Ev,
  ABISELECT(24,12),
  ABISELECT(128,64),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7494C18D1Ev,_ZThn8_N8S7494C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7494C18D0Ev,_ZThn8_N8S7494C18D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C18D1Ev,_ZTv0_n32_N8S7494C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C18D0Ev,_ZTv0_n32_N8S7494C18D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C18D1Ev,_ZTv0_n24_N8S7494C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C18D0Ev,_ZTv0_n24_N8S7494C18D0Ev),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S7494C18[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C19D1Ev();
extern void _ZN8S7494C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C19__8S7494C18[] = {
  ABISELECT(144,72),
  ABISELECT(120,60),
  ABISELECT(40,20),
  ABISELECT(168,84),
  ABISELECT(40,20),
  ABISELECT(144,72),
  ABISELECT(152,76),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C19D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C178S7494C19__8S7494C18[] = {
  ABISELECT(168,84),
  ABISELECT(40,20),
  ABISELECT(144,72),
  ABISELECT(152,76),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C178S7494C19__8S7494C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C178S7494C19__8S7494C18[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C178S7494C19__8S7494C18[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S7494C19D1Ev,_ZThn20_N8S7494C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S7494C19D0Ev,_ZThn20_N8S7494C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C20__8S7494C19__8S7494C18[] = {
  ABISELECT(-40,-20),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S7494C19D1Ev,_ZThn60_N8S7494C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S7494C19D0Ev,_ZThn60_N8S7494C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C19__8S7494C18[] = {
  ABISELECT(-120,-60),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C11__A1__8S7494C19__8S7494C18[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C19__8S7494C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C19__8S7494C18[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__A__8S7494C18[] = {
  ABISELECT(24,12),
  ABISELECT(128,64),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__A2__8S7494C18[] = {
  ABISELECT(24,12),
  ABISELECT(128,64),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C11__A2__8S7494C18[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C11__A__8S7494C18[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C20D1Ev();
extern void _ZN8S7494C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C20__8S7494C18[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C20__8S7494C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C11__A1__8S7494C20__8S7494C18[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__8S7494C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C11__8S7494C18[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C11__8S7494C18[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__A1__8S7494C18[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C18[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__8S7494C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__8S7494C18[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C18[] = {
  {&(_ZTV8S7494C18[11]),  11,63},
  {&(_tg__ZTV8S7494C19__8S7494C18[10]),  10,13},
  {&(_tg__ZTV8S7494C178S7494C19__8S7494C18[7]),  7,8},
  {&(_tg__ZTV7S7494C8__8S7494C178S7494C19__8S7494C18[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C178S7494C19__8S7494C18[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C178S7494C19__8S7494C18[7]),  7,9},
  {&(_tg__ZTV8S7494C20__8S7494C19__8S7494C18[8]),  8,11},
  {&(_tg__ZTV8S7494C11__8S7494C19__8S7494C18[6]),  6,9},
  {&(_tg__ZTV8S7494C20__8S7494C19__8S7494C18[8]),  8,11},
  {&(_tg__ZTV7S7494C98S7494C11__A1__8S7494C19__8S7494C18[2]),  2,3},
  {&(_tg__ZTV7S7494C8__A1__8S7494C19__8S7494C18[5]),  5,6},
  {&(_tg__ZTV8S7494C15__8S7494C19__8S7494C18[7]),  7,9},
  {&(_tg__ZTV8S7494C11__A__8S7494C18[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__A2__8S7494C18[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C11__A2__8S7494C18[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C11__A__8S7494C18[3]),  3,4},
  {&(_ZTV8S7494C18[33]),  33,63},
  {&(_ZTV8S7494C18[33]),  33,63},
  {&(_ZTV8S7494C18[42]),  42,63},
  {&(_ZTV8S7494C18[47]),  47,63},
  {&(_ZTV8S7494C18[53]),  53,63},
  {&(_ZTV8S7494C18[61]),  61,63},
  {&(_ZTV8S7494C18[19]),  19,63},
  {&(_tg__ZTV8S7494C20__8S7494C18[7]),  7,10},
  {&(_tg__ZTV8S7494C11__8S7494C20__8S7494C18[6]),  6,9},
  {&(_tg__ZTV8S7494C20__8S7494C18[7]),  7,10},
  {&(_tg__ZTV7S7494C98S7494C11__A1__8S7494C20__8S7494C18[2]),  2,3},
  {&(_tg__ZTV8S7494C11__8S7494C18[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__8S7494C18[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C11__8S7494C18[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C11__8S7494C18[3]),  3,4},
  {&(_tg__ZTV7S7494C8__A1__8S7494C18[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__A1__8S7494C18[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C18[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__8S7494C18[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__8S7494C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7494C18[];
extern  VTBL_ENTRY _ZTV8S7494C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C18[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7494C19D0Ev,_ZThn60_N8S7494C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7494C19D1Ev,_ZThn60_N8S7494C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7494C19D0Ev,_ZThn20_N8S7494C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7494C19D1Ev,_ZThn20_N8S7494C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C18D0Ev,_ZTv0_n24_N8S7494C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7494C18D0Ev,_ZThn60_N8S7494C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C18D1Ev,_ZTv0_n24_N8S7494C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7494C18D1Ev,_ZThn60_N8S7494C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C18D0Ev,_ZTv0_n32_N8S7494C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7494C18D0Ev,_ZThn20_N8S7494C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C18D1Ev,_ZTv0_n32_N8S7494C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7494C18D1Ev,_ZThn20_N8S7494C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C18 = {  "S7494C18", // class name
  bases_S7494C18, 20,
  &(vtc_S7494C18[0]), // expected_vtbl_contents
  &(vtt_S7494C18[0]), // expected_vtt_contents
  ABISELECT(184,92), // object size
  NSPAIRA(_ZTI8S7494C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7494C18),63, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7494C18),36, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7494C1  : S7494C2 , S7494C18 {
  virtual  ~S7494C1(); // _ZN7S7494C1D2Ev
  S7494C1(); // tgen
};
//SIG(1 S7494C1) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ BC6{ m Fp} BC7{ m} VBC8{ VBC3 VBC9{ v1} FC9} VBC10{ BC11{ BC8 BC3 BC9 vd}}} BC12{ vd m} BC11 VBC13{ VBC8 BC14{ BC8 VBC6 BC15{ BC9 BC6 VBC8 v2} Fi} VBC12 BC3 VBC7 vd FC3} Fp[4]} VBC16{ VBC15} BC17{ VBC8 VBC15} vd} BC18{ VBC9 BC19{ VBC20{ VBC11 VBC6 Fp[9]} BC3 BC17 vd Fp} VBC7 BC11 vd} vd}


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

static void Test_S7494C1()
{
  extern Class_Descriptor cd_S7494C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,46)];
    init_test(&cd_S7494C1, buf);
    S7494C1 *dp, &lv = *(dp=new (buf) S7494C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,180), "sizeof(S7494C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7494C1)");
    /*is_ambiguous_... S7494C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C2*), 0, "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*), 0, "S7494C1");
    check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C10*), 0, "S7494C1");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C4*), 0, "S7494C1");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C14*)(S7494C13*), 0, "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*), 0, "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C8*)(S7494C11*)(S7494C18*), 0, "S7494C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C5*), ABISELECT(120,60), "S7494C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C5*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*), ABISELECT(112,56), "S7494C1");
    check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C4*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C14*)(S7494C13*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C18*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C8*)(S7494C11*)(S7494C18*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C5::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C5*), ABISELECT(128,64), "S7494C1");
    /*is_ambiguous_... S7494C13::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C13*), ABISELECT(128,64), "S7494C1");
    check_base_class_offset(lv, (S7494C8*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(128,64), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C15 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C15*), ABISELECT(128,64), "S7494C1");
    check_base_class_offset(lv, (S7494C8*)(S7494C17*)(S7494C2*), ABISELECT(128,64), "S7494C1");
    check_base_class_offset(lv, (S7494C8*)(S7494C17*)(S7494C19*)(S7494C18*), ABISELECT(128,64), "S7494C1");
    check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C10*), ABISELECT(144,72), "S7494C1");
    /*is_ambiguous_... S7494C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C10*), ABISELECT(144,72), "S7494C1");
    /*is_ambiguous_... S7494C11::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C10*), ABISELECT(160,80), "S7494C1");
    check_base_class_offset(lv, (S7494C11*)(S7494C10*), ABISELECT(144,72), "S7494C1");
    check_base_class_offset(lv, (S7494C10*)(S7494C5*), ABISELECT(144,72), "S7494C1");
    check_base_class_offset(lv, (S7494C5*)(S7494C4*), ABISELECT(112,56), "S7494C1");
    /*is_ambiguous_... S7494C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S7494C4*), ABISELECT(48,24), "S7494C1");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C4*), ABISELECT(56,28), "S7494C1");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C4*), ABISELECT(56,28), "S7494C1");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C4*), ABISELECT(72,36), "S7494C1");
    /*is_ambiguous_... S7494C4::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C11*)(S7494C4*), ABISELECT(56,28), "S7494C1");
    /*is_ambiguous_... S7494C14::S7494C8 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C14*)(S7494C13*), ABISELECT(168,84), "S7494C1");
    /*is_ambiguous_... S7494C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7494C14*)(S7494C13*), ABISELECT(208,108), "S7494C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C20*), ABISELECT(208,108), "S7494C1");
    /*is_ambiguous_... S7494C15::S7494C9 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(184,92), "S7494C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(192,96), "S7494C1");
    check_base_class_offset(lv, (S7494C15*)(S7494C14*)(S7494C13*), ABISELECT(184,92), "S7494C1");
    check_base_class_offset(lv, (S7494C14*)(S7494C13*), ABISELECT(168,84), "S7494C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S7494C13*), ABISELECT(216,112), "S7494C1");
    /*is_ambiguous_... S7494C13::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C13*), ABISELECT(168,84), "S7494C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C13*), 0, "S7494C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S7494C18*), 0, "S7494C1");
    check_base_class_offset(lv, (S7494C13*)(S7494C4*), ABISELECT(168,84), "S7494C1");
    check_base_class_offset(lv, (S7494C4*)(S7494C2*), ABISELECT(48,24), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C15 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C15*), ABISELECT(232,120), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7494C15*), ABISELECT(240,124), "S7494C1");
    check_base_class_offset(lv, (S7494C15*)(S7494C16*), ABISELECT(232,120), "S7494C1");
    check_base_class_offset(lv, (S7494C15*)(S7494C17*)(S7494C2*), ABISELECT(232,120), "S7494C1");
    check_base_class_offset(lv, (S7494C15*)(S7494C17*)(S7494C19*)(S7494C18*), ABISELECT(232,120), "S7494C1");
    check_base_class_offset(lv, (S7494C16*)(S7494C2*), ABISELECT(224,116), "S7494C1");
    check_base_class_offset(lv, (S7494C17*)(S7494C2*), 0, "S7494C1");
    check_base_class_offset(lv, (S7494C2*), 0, "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*), ABISELECT(328,168), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*), ABISELECT(328,168), "S7494C1");
    /*is_ambiguous_... S7494C1::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*), ABISELECT(344,176), "S7494C1");
    check_base_class_offset(lv, (S7494C11*)(S7494C20*), ABISELECT(328,168), "S7494C1");
    check_base_class_offset(lv, (S7494C20*)(S7494C19*)(S7494C18*), ABISELECT(248,128), "S7494C1");
    /*is_ambiguous_... S7494C19::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C19*)(S7494C18*), ABISELECT(8,4), "S7494C1");
    check_base_class_offset(lv, (S7494C17*)(S7494C19*)(S7494C18*), ABISELECT(8,4), "S7494C1");
    check_base_class_offset(lv, (S7494C19*)(S7494C18*), ABISELECT(8,4), "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C8*)(S7494C11*)(S7494C18*), ABISELECT(24,12), "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S7494C11*)(S7494C18*), ABISELECT(24,12), "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C9*)(S7494C11*)(S7494C18*), ABISELECT(40,20), "S7494C1");
    /*is_ambiguous_... S7494C18::S7494C11 */ AMB_check_base_class_offset(lv, (S7494C11*)(S7494C18*), ABISELECT(24,12), "S7494C1");
    check_base_class_offset(lv, (S7494C18*), ABISELECT(8,4), "S7494C1");
    test_class_info(&lv, &cd_S7494C1);
    dp->~S7494C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7494C1(Test_S7494C1, "S7494C1", ABISELECT(352,180));

#else // __cplusplus

extern void _ZN7S7494C1C1Ev();
extern void _ZN7S7494C1D2Ev();
Name_Map name_map_S7494C1[] = {
  NSPAIR(_ZN7S7494C1C1Ev),
  NSPAIR(_ZN7S7494C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C10;
extern VTBL_ENTRY _ZTI8S7494C10[];
extern  VTBL_ENTRY _ZTV8S7494C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C10[];
extern Class_Descriptor cd_S7494C5;
extern VTBL_ENTRY _ZTI7S7494C5[];
extern  VTBL_ENTRY _ZTV7S7494C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C14;
extern VTBL_ENTRY _ZTI8S7494C14[];
extern  VTBL_ENTRY _ZTV8S7494C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7494C13;
extern VTBL_ENTRY _ZTI8S7494C13[];
extern  VTBL_ENTRY _ZTV8S7494C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C13[];
extern Class_Descriptor cd_S7494C4;
extern VTBL_ENTRY _ZTI7S7494C4[];
extern  VTBL_ENTRY _ZTV7S7494C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C4[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7494C15;
extern VTBL_ENTRY _ZTI8S7494C15[];
extern  VTBL_ENTRY _ZTV8S7494C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C15[];
extern Class_Descriptor cd_S7494C16;
extern VTBL_ENTRY _ZTI8S7494C16[];
extern  VTBL_ENTRY _ZTV8S7494C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C16[];
extern Class_Descriptor cd_S7494C17;
extern VTBL_ENTRY _ZTI8S7494C17[];
extern  VTBL_ENTRY _ZTV8S7494C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C17[];
extern Class_Descriptor cd_S7494C2;
extern VTBL_ENTRY _ZTI7S7494C2[];
extern  VTBL_ENTRY _ZTV7S7494C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C2[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C20;
extern VTBL_ENTRY _ZTI8S7494C20[];
extern  VTBL_ENTRY _ZTV8S7494C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C20[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C17;
extern VTBL_ENTRY _ZTI8S7494C17[];
extern  VTBL_ENTRY _ZTV8S7494C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C17[];
extern Class_Descriptor cd_S7494C19;
extern VTBL_ENTRY _ZTI8S7494C19[];
extern  VTBL_ENTRY _ZTV8S7494C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C19[];
extern Class_Descriptor cd_S7494C8;
extern VTBL_ENTRY _ZTI7S7494C8[];
extern  VTBL_ENTRY _ZTV7S7494C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7494C9;
extern VTBL_ENTRY _ZTI7S7494C9[];
extern  VTBL_ENTRY _ZTV7S7494C9[];
extern Class_Descriptor cd_S7494C11;
extern VTBL_ENTRY _ZTI8S7494C11[];
extern  VTBL_ENTRY _ZTV8S7494C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C11[];
extern Class_Descriptor cd_S7494C18;
extern VTBL_ENTRY _ZTI8S7494C18[];
extern  VTBL_ENTRY _ZTV8S7494C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7494C18[];
static Base_Class bases_S7494C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(128,64), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7494C8,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(160,80), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7494C10,    ABISELECT(144,72), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7494C5,    ABISELECT(112,56), //bcp->offset
    71, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7494C8,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(72,36), //bcp->offset
    68, //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
    16, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(56,28), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7494C8,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    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
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(184,92), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7494C14,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(216,112), //bcp->offset
    121, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7494C13,    ABISELECT(168,84), //bcp->offset
    100, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7494C4,    ABISELECT(48,24), //bcp->offset
    45, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7494C9,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7494C15,    ABISELECT(232,120), //bcp->offset
    134, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7494C16,    ABISELECT(224,116), //bcp->offset
    126, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7494C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7494C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7494C8,    ABISELECT(328,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(328,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(344,176), //bcp->offset
    163, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(328,168), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7494C20,    ABISELECT(248,128), //bcp->offset
    143, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7494C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7494C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7494C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7494C9,    ABISELECT(40,20), //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
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7494C11,    ABISELECT(24,12), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7494C18,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7494C1[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C1D1Ev();
extern void _ZN7S7494C1D0Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn8_N7S7494C1D1Ev,_ZThn4_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7494C1D0Ev,_ZThn4_N7S7494C1D0Ev)();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn24_N7S7494C1D1Ev,_ZThn12_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7494C1D0Ev,_ZThn12_N7S7494C1D0Ev)();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n96_N7S7494C1D1Ev,_ZTv0_n48_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7494C1D1Ev,_ZThn24_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7494C1D0Ev,_ZTv0_n48_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7494C1D0Ev,_ZThn24_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTvn8_n96_N7S7494C1D1Ev,_ZTvn4_n48_N7S7494C1D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N7S7494C1D0Ev,_ZTvn4_n48_N7S7494C1D0Ev)();
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C1D1Ev,_ZTv0_n32_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7494C1D1Ev,_ZThn56_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C1D0Ev,_ZTv0_n32_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7494C1D0Ev,_ZThn56_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C1D1Ev,_ZTv0_n24_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7494C1D1Ev,_ZThn72_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C1D0Ev,_ZTv0_n24_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7494C1D0Ev,_ZThn72_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7494C1D1Ev,_ZTv0_n44_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S7494C1D1Ev,_ZThn84_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7494C1D0Ev,_ZTv0_n44_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S7494C1D0Ev,_ZThn84_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7494C1D1Ev,_ZTv0_n12_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S7494C1D1Ev,_ZThn112_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7494C1D0Ev,_ZTv0_n12_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S7494C1D0Ev,_ZThn112_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C1D1Ev,_ZTv0_n32_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7494C1D1Ev,_ZThn128_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C1D0Ev,_ZTv0_n32_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7494C1D0Ev,_ZThn128_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C1D1Ev,_ZTv0_n24_N7S7494C1D1Ev)();
extern void ABISELECT(_ZThn328_N7S7494C1D1Ev,_ZThn168_N7S7494C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C1D0Ev,_ZTv0_n24_N7S7494C1D0Ev)();
extern void ABISELECT(_ZThn328_N7S7494C1D0Ev,_ZThn168_N7S7494C1D0Ev)() __attribute__((weak));
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY vtc_S7494C1[] = {
  ABISELECT(328,168),
  ABISELECT(248,128),
  ABISELECT(224,116),
  0,
  ABISELECT(216,112),
  ABISELECT(208,108),
  ABISELECT(168,84),
  ABISELECT(144,72),
  ABISELECT(112,56),
  ABISELECT(48,24),
  ABISELECT(232,120),
  ABISELECT(112,56),
  0,
  ABISELECT(128,64),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(200,104),
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(224,116),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C1D1Ev,_ZThn4_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C1D0Ev,_ZThn4_N7S7494C1D0Ev),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7494C1D1Ev,_ZThn12_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7494C1D0Ev,_ZThn12_N7S7494C1D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7494C1D1Ev,_ZTv0_n48_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7494C1D0Ev,_ZTv0_n48_N7S7494C1D0Ev),
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S7494C1D1Ev,_ZTvn4_n48_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S7494C1D0Ev,_ZTvn4_n48_N7S7494C1D0Ev),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  0,
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  0,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C1D1Ev,_ZTv0_n32_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C1D0Ev,_ZTv0_n32_N7S7494C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C1D1Ev,_ZTv0_n24_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C1D0Ev,_ZTv0_n24_N7S7494C1D0Ev),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  ABISELECT(-168,-84),
  ABISELECT(16,8),
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C1D1Ev,_ZTv0_n44_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C1D0Ev,_ZTv0_n44_N7S7494C1D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-184,-92),
  ABISELECT(-56,-28),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C1D1Ev,_ZTv0_n12_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C1D0Ev,_ZTv0_n12_N7S7494C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-224,-116),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
  ABISELECT(-248,-128),
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-248,-128),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C1D1Ev,_ZTv0_n32_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C1D0Ev,_ZTv0_n32_N7S7494C1D0Ev),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C1D1Ev,_ZTv0_n24_N7S7494C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C1D0Ev,_ZTv0_n24_N7S7494C1D0Ev),
  ABISELECT(-344,-176),
  (VTBL_ENTRY)&(_ZTI7S7494C1[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S7494C1[];
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C2D1Ev();
extern void _ZN7S7494C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C2__7S7494C1[] = {
  ABISELECT(224,116),
  0,
  ABISELECT(216,112),
  ABISELECT(208,108),
  ABISELECT(168,84),
  ABISELECT(144,72),
  ABISELECT(112,56),
  ABISELECT(48,24),
  ABISELECT(232,120),
  ABISELECT(112,56),
  0,
  ABISELECT(128,64),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C2D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C177S7494C2__7S7494C1[] = {
  ABISELECT(232,120),
  ABISELECT(112,56),
  0,
  ABISELECT(128,64),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C177S7494C2__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C177S7494C2__7S7494C1[] = {
  0,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C177S7494C2__7S7494C1[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n96_N7S7494C2D1Ev,_ZTv0_n48_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7494C2D1Ev,_ZThn24_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7494C2D0Ev,_ZTv0_n48_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7494C2D0Ev,_ZThn24_N7S7494C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7494C4__7S7494C2__7S7494C1[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7494C2D1Ev,_ZTv0_n48_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7494C2D0Ev,_ZTv0_n48_N7S7494C2D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C2D1Ev,_ZTv0_n32_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7494C2D1Ev,_ZThn56_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C2D0Ev,_ZTv0_n32_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7494C2D0Ev,_ZThn56_N7S7494C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7494C5__7S7494C2__7S7494C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  0,
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  0,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C2D1Ev,_ZTv0_n32_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C2D0Ev,_ZTv0_n32_N7S7494C2D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C2__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C2D1Ev,_ZTv0_n24_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7494C2D1Ev,_ZThn72_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C2D0Ev,_ZTv0_n24_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7494C2D0Ev,_ZThn72_N7S7494C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C2__7S7494C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C2D1Ev,_ZTv0_n24_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C2D0Ev,_ZTv0_n24_N7S7494C2D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C2__7S7494C1[] = {
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTvn8_n96_N7S7494C2D1Ev,_ZTvn4_n48_N7S7494C2D1Ev)();
extern void ABISELECT(_ZTvn8_n96_N7S7494C2D0Ev,_ZTvn4_n48_N7S7494C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7494C117S7494C4__A1__7S7494C2__7S7494C1[] = {
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S7494C2D1Ev,_ZTvn4_n48_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n96_N7S7494C2D0Ev,_ZTvn4_n48_N7S7494C2D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C117S7494C4__A2__7S7494C2__7S7494C1[] = {
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7494C2D1Ev,_ZTv0_n44_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S7494C2D1Ev,_ZThn84_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7494C2D0Ev,_ZTv0_n44_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S7494C2D0Ev,_ZThn84_N7S7494C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C13__7S7494C2__7S7494C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(16,8),
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C2D1Ev,_ZTv0_n44_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C2D0Ev,_ZTv0_n44_N7S7494C2D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C148S7494C13__7S7494C2__7S7494C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-184,-92),
  ABISELECT(-56,-28),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7494C2D1Ev,_ZTv0_n12_N7S7494C2D1Ev)();
extern void ABISELECT(_ZThn216_N7S7494C2D1Ev,_ZThn112_N7S7494C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7494C2D0Ev,_ZTv0_n12_N7S7494C2D0Ev)();
extern void ABISELECT(_ZThn216_N7S7494C2D0Ev,_ZThn112_N7S7494C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__7S7494C2__7S7494C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C2D1Ev,_ZTv0_n12_N7S7494C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C2D0Ev,_ZTv0_n12_N7S7494C2D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C16__7S7494C2__7S7494C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-224,-116),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__A1__7S7494C2__7S7494C1[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S7494C2[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C18D1Ev();
extern void _ZN8S7494C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C18__7S7494C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(200,104),
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(224,116),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(120,60),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C18D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C19D1Ev();
extern void _ZN8S7494C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C198S7494C18__7S7494C1[] = {
  ABISELECT(200,104),
  ABISELECT(320,164),
  ABISELECT(240,124),
  ABISELECT(224,116),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(120,60),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C19D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C178S7494C198S7494C18__A1__7S7494C1[] = {
  ABISELECT(224,116),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(120,60),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C178S7494C198S7494C18__A1__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C178S7494C198S7494C18__A1__7S7494C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C178S7494C198S7494C18__A1__7S7494C1[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7494C17[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev)();
extern void ABISELECT(_ZThn240_N8S7494C19D1Ev,_ZThn124_N8S7494C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev)();
extern void ABISELECT(_ZThn240_N8S7494C19D0Ev,_ZThn124_N8S7494C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C20__8S7494C198S7494C18__7S7494C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-248,-128),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev)();
extern void ABISELECT(_ZThn320_N8S7494C19D1Ev,_ZThn164_N8S7494C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev)();
extern void ABISELECT(_ZThn320_N8S7494C19D0Ev,_ZThn164_N8S7494C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C198S7494C18__7S7494C1[] = {
  ABISELECT(-320,-164),
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C198S7494C18__7S7494C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C11__A1__8S7494C198S7494C18__7S7494C1[] = {
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C198S7494C18__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C198S7494C18__7S7494C1[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7494C19[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C118S7494C18__A3__7S7494C1[] = {
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C118S7494C18__A5__7S7494C1[] = {
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C118S7494C18__A5__7S7494C1[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C118S7494C18__A3__7S7494C1[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C18__7S7494C1[] = {
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7494C18D1Ev,_ZTv0_n32_N8S7494C18D1Ev)();
extern void ABISELECT(_ZThn240_N8S7494C18D1Ev,_ZThn124_N8S7494C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7494C18D0Ev,_ZTv0_n32_N8S7494C18D0Ev)();
extern void ABISELECT(_ZThn240_N8S7494C18D0Ev,_ZThn124_N8S7494C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C20__8S7494C18__7S7494C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-248,-128),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C18D1Ev,_ZTv0_n32_N8S7494C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7494C18D0Ev,_ZTv0_n32_N8S7494C18D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C18D1Ev,_ZTv0_n24_N8S7494C18D1Ev)();
extern void ABISELECT(_ZThn320_N8S7494C18D1Ev,_ZThn164_N8S7494C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C18D0Ev,_ZTv0_n24_N8S7494C18D0Ev)();
extern void ABISELECT(_ZThn320_N8S7494C18D0Ev,_ZThn164_N8S7494C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C18__7S7494C1[] = {
  ABISELECT(-320,-164),
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C18D1Ev,_ZTv0_n24_N8S7494C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C18D0Ev,_ZTv0_n24_N8S7494C18D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C11__A1__8S7494C18__7S7494C1[] = {
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C18__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C18__7S7494C1[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn16_N8S7494C18D1Ev,_ZThn8_N8S7494C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S7494C18D0Ev,_ZThn8_N8S7494C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7494C11__A__8S7494C18__7S7494C1[] = {
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C18[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7494C18D1Ev,_ZThn8_N8S7494C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7494C18D0Ev,_ZThn8_N8S7494C18D0Ev),
};
extern void _ZN7S7494C4D1Ev();
extern void _ZN7S7494C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C4__7S7494C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  ABISELECT(80,40),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C4D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C117S7494C4__A1__7S7494C1[] = {
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C117S7494C4__A2__7S7494C1[] = {
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C117S7494C4__A2__7S7494C1[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C117S7494C4__A1__7S7494C1[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7494C4D1Ev,_ZThn32_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7494C4D0Ev,_ZThn32_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7494C5__7S7494C4__7S7494C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  0,
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C4__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7494C4D1Ev,_ZThn48_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7494C4D0Ev,_ZThn48_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C4__7S7494C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C4__7S7494C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZThn8_N7S7494C4D1Ev,_ZThn4_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7494C4D0Ev,_ZThn4_N7S7494C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7494C11__A1__7S7494C4__7S7494C1[] = {
  ABISELECT(56,28),
  ABISELECT(-56,-28),
  ABISELECT(56,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C4D1Ev,_ZThn4_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7494C4D0Ev,_ZThn4_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7494C4D1Ev,_ZThn60_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7494C4D0Ev,_ZThn60_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C13__7S7494C4__7S7494C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C148S7494C13__7S7494C4__7S7494C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-184,-92),
  ABISELECT(-56,-28),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7494C4D1Ev,_ZThn88_N7S7494C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7494C4D0Ev,_ZThn88_N7S7494C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__7S7494C4__7S7494C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7494C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev),
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN7S7494C5D1Ev();
extern void _ZN7S7494C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C5__7S7494C1[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7494C5D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C5__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C5__7S7494C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C5__7S7494C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7494C5[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C8__7S7494C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C10D1Ev();
extern void _ZN8S7494C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C10__7S7494C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C10D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C118S7494C10__7S7494C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-144,-72),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C10__7S7494C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7494C10[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C13D1Ev();
extern void _ZN8S7494C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C13__7S7494C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C13D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C148S7494C13__7S7494C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C148S7494C13__A3__7S7494C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-168,-84),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C148S7494C13__A3__7S7494C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C148S7494C13__7S7494C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-184,-92),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C158S7494C148S7494C13__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C158S7494C148S7494C13__7S7494C1[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C148S7494C13__7S7494C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C148S7494C13__7S7494C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-184,-92),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__A1__8S7494C148S7494C13__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7494C14[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C13__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C13__7S7494C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C158S7494C14__8S7494C13__7S7494C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-184,-92),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7494C13D1Ev,_ZThn28_N8S7494C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7494C13D0Ev,_ZThn28_N8S7494C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S7494C13__7S7494C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7494C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C16__7S7494C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-224,-116),
  ABISELECT(-96,-52),
  ABISELECT(8,4),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__8S7494C16__7S7494C1[] = {
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C16__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C16__7S7494C1[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7494C16[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C15__A1__7S7494C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-232,-120),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C152v2Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C8__8S7494C15__A1__7S7494C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__A1__8S7494C15__A1__7S7494C1[] = {
  0,
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7494C15[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C20D1Ev();
extern void _ZN8S7494C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C20__7S7494C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-136,-72),
  ABISELECT(-248,-128),
  ABISELECT(80,40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C20D0Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7494C11__8S7494C20__7S7494C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev),
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C20__7S7494C1[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C98S7494C11__A1__8S7494C20__7S7494C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7494C20[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
extern void _ZN8S7494C11D1Ev();
extern void _ZN8S7494C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7494C11__A2__7S7494C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7494C11D0Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C88S7494C11__A4__7S7494C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-328,-168),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__7S7494C88S7494C11__A4__7S7494C1[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7494C8[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
extern void _ZN7S7494C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7494C9__8S7494C11__A2__7S7494C1[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S7494C11[0]),
  (VTBL_ENTRY)&_ZN7S7494C92v1Ev,
};
static  VTT_ENTRY vtt_S7494C1[] = {
  {&(_ZTV7S7494C1[17]),  17,166},
  {&(_tg__ZTV7S7494C2__7S7494C1[15]),  15,18},
  {&(_tg__ZTV8S7494C177S7494C2__7S7494C1[7]),  7,8},
  {&(_tg__ZTV7S7494C8__8S7494C177S7494C2__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C177S7494C2__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C177S7494C2__7S7494C1[7]),  7,9},
  {&(_tg__ZTV7S7494C4__7S7494C2__7S7494C1[13]),  13,15},
  {&(_tg__ZTV7S7494C5__7S7494C2__7S7494C1[8]),  8,11},
  {&(_tg__ZTV7S7494C8__7S7494C2__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C5__7S7494C2__7S7494C1[8]),  8,11},
  {&(_tg__ZTV8S7494C10__7S7494C2__7S7494C1[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C2__7S7494C1[2]),  2,3},
  {&(_tg__ZTV8S7494C117S7494C4__A1__7S7494C2__7S7494C1[5]),  5,8},
  {&(_tg__ZTV7S7494C98S7494C117S7494C4__A2__7S7494C2__7S7494C1[2]),  2,3},
  {&(_tg__ZTV8S7494C13__7S7494C2__7S7494C1[11]),  11,14},
  {&(_tg__ZTV8S7494C158S7494C148S7494C13__7S7494C2__7S7494C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__7S7494C2__7S7494C1[3]),  3,5},
  {&(_tg__ZTV8S7494C16__7S7494C2__7S7494C1[7]),  7,8},
  {&(_tg__ZTV8S7494C15__A1__7S7494C2__7S7494C1[7]),  7,9},
  {&(_tg__ZTV8S7494C18__7S7494C1[11]),  11,14},
  {&(_tg__ZTV8S7494C198S7494C18__7S7494C1[10]),  10,13},
  {&(_tg__ZTV8S7494C178S7494C198S7494C18__A1__7S7494C1[7]),  7,8},
  {&(_tg__ZTV7S7494C8__8S7494C178S7494C198S7494C18__A1__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C178S7494C198S7494C18__A1__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C178S7494C198S7494C18__A1__7S7494C1[7]),  7,9},
  {&(_tg__ZTV8S7494C20__8S7494C198S7494C18__7S7494C1[8]),  8,11},
  {&(_tg__ZTV8S7494C11__8S7494C198S7494C18__7S7494C1[6]),  6,9},
  {&(_tg__ZTV7S7494C9__8S7494C198S7494C18__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C98S7494C11__A1__8S7494C198S7494C18__7S7494C1[2]),  2,3},
  {&(_tg__ZTV7S7494C8__A1__8S7494C198S7494C18__7S7494C1[5]),  5,6},
  {&(_tg__ZTV8S7494C15__8S7494C198S7494C18__7S7494C1[7]),  7,9},
  {&(_tg__ZTV8S7494C118S7494C18__A3__7S7494C1[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C118S7494C18__A5__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C118S7494C18__A5__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C118S7494C18__A3__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C18__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C20__8S7494C18__7S7494C1[8]),  8,11},
  {&(_tg__ZTV8S7494C11__8S7494C18__7S7494C1[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C11__A1__8S7494C18__7S7494C1[2]),  2,3},
  {&(_tg__ZTV7S7494C8__A1__8S7494C18__7S7494C1[5]),  5,6},
  {&(_tg__ZTV8S7494C15__8S7494C18__7S7494C1[7]),  7,9},
  {&(_tg__ZTV8S7494C11__A__8S7494C18__7S7494C1[5]),  5,8},
  {&(_ZTV7S7494C1[58]),  58,166},
  {&(_ZTV7S7494C1[79]),  79,166},
  {&(_ZTV7S7494C1[87]),  87,166},
  {&(_ZTV7S7494C1[79]),  79,166},
  {&(_ZTV7S7494C1[94]),  94,166},
  {&(_ZTV7S7494C1[99]),  99,166},
  {&(_ZTV7S7494C1[65]),  65,166},
  {&(_ZTV7S7494C1[70]),  70,166},
  {&(_ZTV7S7494C1[111]),  111,166},
  {&(_ZTV7S7494C1[119]),  119,166},
  {&(_ZTV7S7494C1[124]),  124,166},
  {&(_ZTV7S7494C1[133]),  133,166},
  {&(_ZTV7S7494C1[141]),  141,166},
  {&(_ZTV7S7494C1[31]),  31,166},
  {&(_ZTV7S7494C1[151]),  151,166},
  {&(_ZTV7S7494C1[160]),  160,166},
  {&(_ZTV7S7494C1[165]),  165,166},
  {&(_ZTV7S7494C1[39]),  39,166},
  {&(_tg__ZTV7S7494C4__7S7494C1[11]),  11,13},
  {&(_tg__ZTV8S7494C117S7494C4__A1__7S7494C1[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C117S7494C4__A2__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C117S7494C4__A2__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C117S7494C4__A1__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C5__7S7494C4__7S7494C1[8]),  8,11},
  {&(_tg__ZTV7S7494C8__7S7494C4__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C5__7S7494C4__7S7494C1[8]),  8,11},
  {&(_tg__ZTV8S7494C10__7S7494C4__7S7494C1[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C4__7S7494C1[2]),  2,3},
  {&(_tg__ZTV8S7494C11__A1__7S7494C4__7S7494C1[5]),  5,8},
  {&(_tg__ZTV8S7494C13__7S7494C4__7S7494C1[11]),  11,14},
  {&(_tg__ZTV8S7494C158S7494C148S7494C13__7S7494C4__7S7494C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A1__7S7494C4__7S7494C1[3]),  3,5},
  {&(_tg__ZTV7S7494C5__7S7494C1[7]),  7,10},
  {&(_tg__ZTV7S7494C8__7S7494C5__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C5__7S7494C1[7]),  7,10},
  {&(_tg__ZTV8S7494C10__7S7494C5__7S7494C1[6]),  6,9},
  {&(_tg__ZTV7S7494C98S7494C118S7494C10__A1__7S7494C5__7S7494C1[2]),  2,3},
  {&(_tg__ZTV7S7494C8__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C8__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C10__7S7494C1[5]),  5,8},
  {&(_tg__ZTV8S7494C118S7494C10__7S7494C1[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C118S7494C10__A1__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C118S7494C10__A1__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C118S7494C10__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C10__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C13__7S7494C1[9]),  9,12},
  {&(_tg__ZTV8S7494C148S7494C13__7S7494C1[7]),  7,8},
  {&(_tg__ZTV7S7494C88S7494C148S7494C13__A3__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C148S7494C13__A3__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C148S7494C13__7S7494C1[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C158S7494C148S7494C13__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C158S7494C148S7494C13__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C148S7494C13__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C15__8S7494C148S7494C13__7S7494C1[5]),  5,7},
  {&(_tg__ZTV7S7494C8__A1__8S7494C148S7494C13__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C8__8S7494C13__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__8S7494C13__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C158S7494C14__8S7494C13__7S7494C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S7494C13__7S7494C1[3]),  3,5},
  {&(_tg__ZTV8S7494C16__7S7494C1[7]),  7,8},
  {&(_tg__ZTV8S7494C15__8S7494C16__7S7494C1[7]),  7,9},
  {&(_tg__ZTV7S7494C8__8S7494C16__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C16__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C15__A1__7S7494C1[5]),  5,7},
  {&(_tg__ZTV7S7494C8__8S7494C15__A1__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__A1__8S7494C15__A1__7S7494C1[3]),  3,4},
  {&(_tg__ZTV8S7494C20__7S7494C1[7]),  7,10},
  {&(_tg__ZTV8S7494C11__8S7494C20__7S7494C1[6]),  6,9},
  {&(_tg__ZTV7S7494C9__8S7494C20__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C98S7494C11__A1__8S7494C20__7S7494C1[2]),  2,3},
  {&(_tg__ZTV8S7494C11__A2__7S7494C1[5]),  5,8},
  {&(_tg__ZTV7S7494C88S7494C11__A4__7S7494C1[5]),  5,6},
  {&(_tg__ZTV7S7494C9__7S7494C88S7494C11__A4__7S7494C1[3]),  3,4},
  {&(_tg__ZTV7S7494C9__8S7494C11__A2__7S7494C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7494C1[];
extern  VTBL_ENTRY _ZTV7S7494C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7494C1[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D0Ev,_ZTv0_n24_N8S7494C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D0Ev,_ZThn40_N8S7494C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C20D1Ev,_ZTv0_n24_N8S7494C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7494C20D1Ev,_ZThn40_N8S7494C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D0Ev,_ZTv0_n12_N8S7494C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7494C13D0Ev,_ZThn28_N8S7494C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7494C13D1Ev,_ZTv0_n12_N8S7494C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7494C13D1Ev,_ZThn28_N8S7494C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D0Ev,_ZTv0_n24_N7S7494C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D0Ev,_ZThn16_N7S7494C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C5D1Ev,_ZTv0_n24_N7S7494C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7494C5D1Ev,_ZThn16_N7S7494C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C4D0Ev,_ZTv0_n12_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C4D0Ev,_ZThn88_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C4D1Ev,_ZTv0_n12_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C4D1Ev,_ZThn88_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C4D0Ev,_ZTv0_n44_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7494C4D0Ev,_ZThn60_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C4D1Ev,_ZTv0_n44_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7494C4D1Ev,_ZThn60_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C4D0Ev,_ZTv0_n24_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7494C4D0Ev,_ZThn48_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C4D1Ev,_ZTv0_n24_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7494C4D1Ev,_ZThn48_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C4D0Ev,_ZTv0_n32_N7S7494C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7494C4D0Ev,_ZThn32_N7S7494C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C4D1Ev,_ZTv0_n32_N7S7494C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7494C4D1Ev,_ZThn32_N7S7494C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C18D0Ev,_ZTv0_n24_N8S7494C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7494C18D0Ev,_ZThn164_N8S7494C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C18D1Ev,_ZTv0_n24_N8S7494C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7494C18D1Ev,_ZThn164_N8S7494C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C18D0Ev,_ZTv0_n32_N8S7494C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7494C18D0Ev,_ZThn124_N8S7494C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C18D1Ev,_ZTv0_n32_N8S7494C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7494C18D1Ev,_ZThn124_N8S7494C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C19D0Ev,_ZTv0_n24_N8S7494C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7494C19D0Ev,_ZThn164_N8S7494C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7494C19D1Ev,_ZTv0_n24_N8S7494C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7494C19D1Ev,_ZThn164_N8S7494C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C19D0Ev,_ZTv0_n32_N8S7494C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7494C19D0Ev,_ZThn124_N8S7494C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7494C19D1Ev,_ZTv0_n32_N8S7494C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7494C19D1Ev,_ZThn124_N8S7494C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C2D0Ev,_ZTv0_n12_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7494C2D0Ev,_ZThn112_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C2D1Ev,_ZTv0_n12_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7494C2D1Ev,_ZThn112_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C2D0Ev,_ZTv0_n44_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C2D0Ev,_ZThn84_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C2D1Ev,_ZTv0_n44_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C2D1Ev,_ZThn84_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C2D0Ev,_ZTv0_n24_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7494C2D0Ev,_ZThn72_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C2D1Ev,_ZTv0_n24_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7494C2D1Ev,_ZThn72_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C2D0Ev,_ZTv0_n32_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7494C2D0Ev,_ZThn56_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C2D1Ev,_ZTv0_n32_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7494C2D1Ev,_ZThn56_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7494C2D0Ev,_ZTv0_n48_N7S7494C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7494C2D0Ev,_ZThn24_N7S7494C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7494C2D1Ev,_ZTv0_n48_N7S7494C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7494C2D1Ev,_ZThn24_N7S7494C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C1D0Ev,_ZTv0_n12_N7S7494C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7494C1D0Ev,_ZThn112_N7S7494C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7494C1D1Ev,_ZTv0_n12_N7S7494C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7494C1D1Ev,_ZThn112_N7S7494C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C1D0Ev,_ZTv0_n44_N7S7494C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C1D0Ev,_ZThn84_N7S7494C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7494C1D1Ev,_ZTv0_n44_N7S7494C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7494C1D1Ev,_ZThn84_N7S7494C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C1D0Ev,_ZTv0_n24_N7S7494C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S7494C1D0Ev,_ZThn168_N7S7494C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7494C1D0Ev,_ZThn72_N7S7494C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7494C1D1Ev,_ZTv0_n24_N7S7494C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S7494C1D1Ev,_ZThn168_N7S7494C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7494C1D1Ev,_ZThn72_N7S7494C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C1D0Ev,_ZTv0_n32_N7S7494C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7494C1D0Ev,_ZThn128_N7S7494C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7494C1D0Ev,_ZThn56_N7S7494C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7494C1D1Ev,_ZTv0_n32_N7S7494C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7494C1D1Ev,_ZThn128_N7S7494C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7494C1D1Ev,_ZThn56_N7S7494C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7494C1D0Ev,_ZTv0_n48_N7S7494C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7494C1D0Ev,_ZThn24_N7S7494C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7494C1D1Ev,_ZTv0_n48_N7S7494C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7494C1D1Ev,_ZThn24_N7S7494C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7494C1 = {  "S7494C1", // class name
  bases_S7494C1, 46,
  &(vtc_S7494C1[0]), // expected_vtbl_contents
  &(vtt_S7494C1[0]), // expected_vtt_contents
  ABISELECT(352,180), // object size
  NSPAIRA(_ZTI7S7494C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7494C1),166, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7494C1),116, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7311C4  {
  void *s7311c4f0;
  virtual void  v3(); // _ZN7S7311C42v3Ev
  virtual void  v4(); // _ZN7S7311C42v4Ev
  ~S7311C4(); // tgen
  S7311C4(); // tgen
};
//SIG(-1 S7311C4) C1{ v1 v2 Fp}


void  S7311C4 ::v3(){vfunc_called(this, "_ZN7S7311C42v3Ev");}
void  S7311C4 ::v4(){vfunc_called(this, "_ZN7S7311C42v4Ev");}
S7311C4 ::~S7311C4(){ note_dtor("S7311C4", this);} // tgen
S7311C4 ::S7311C4(){ note_ctor("S7311C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7311C4C1Ev();
extern void _ZN7S7311C4D1Ev();
Name_Map name_map_S7311C4[] = {
  NSPAIR(_ZN7S7311C4C1Ev),
  NSPAIR(_ZN7S7311C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7311C4[];
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C4[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
Class_Descriptor cd_S7311C4 = {  "S7311C4", // class name
  0,0,//no base classes
  &(vtc_S7311C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7311C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7311C4),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  S7311C5  : virtual S7311C4 {
  virtual void  v5(); // _ZN7S7311C52v5Ev
  virtual void  v6(); // _ZN7S7311C52v6Ev
  virtual void  v7(); // _ZN7S7311C52v7Ev
  virtual void  v8(); // _ZN7S7311C52v8Ev
  virtual void  v9(); // _ZN7S7311C52v9Ev
  virtual void  v10(); // _ZN7S7311C53v10Ev
  ~S7311C5(); // tgen
  S7311C5(); // tgen
};
//SIG(-1 S7311C5) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S7311C5 ::v5(){vfunc_called(this, "_ZN7S7311C52v5Ev");}
void  S7311C5 ::v6(){vfunc_called(this, "_ZN7S7311C52v6Ev");}
void  S7311C5 ::v7(){vfunc_called(this, "_ZN7S7311C52v7Ev");}
void  S7311C5 ::v8(){vfunc_called(this, "_ZN7S7311C52v8Ev");}
void  S7311C5 ::v9(){vfunc_called(this, "_ZN7S7311C52v9Ev");}
void  S7311C5 ::v10(){vfunc_called(this, "_ZN7S7311C53v10Ev");}
S7311C5 ::~S7311C5(){ note_dtor("S7311C5", this);} // tgen
S7311C5 ::S7311C5(){ note_ctor("S7311C5", this);} // tgen

static void Test_S7311C5()
{
  extern Class_Descriptor cd_S7311C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7311C5, buf);
    S7311C5 *dp, &lv = *(dp=new (buf) S7311C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7311C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7311C5)");
    check_base_class_offset(lv, (S7311C4*), ABISELECT(8,4), "S7311C5");
    test_class_info(&lv, &cd_S7311C5);
    dp->~S7311C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C5(Test_S7311C5, "S7311C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7311C5C1Ev();
extern void _ZN7S7311C5D1Ev();
Name_Map name_map_S7311C5[] = {
  NSPAIR(_ZN7S7311C5C1Ev),
  NSPAIR(_ZN7S7311C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
static Base_Class bases_S7311C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7311C5[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7311C5[];
static  VTT_ENTRY vtt_S7311C5[] = {
  {&(_ZTV7S7311C5[3]),  3,15},
  {&(_ZTV7S7311C5[13]),  13,15},
};
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
Class_Descriptor cd_S7311C5 = {  "S7311C5", // class name
  bases_S7311C5, 1,
  &(vtc_S7311C5[0]), // expected_vtbl_contents
  &(vtt_S7311C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7311C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7311C5),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C5),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  S7311C3  : S7311C4 , virtual S7311C5 {
  long double s7311c3f0;
  char s7311c3f1:8;
  void *s7311c3f2;
  virtual void  v11(); // _ZN7S7311C33v11Ev
  virtual void  v12(); // _ZN7S7311C33v12Ev
  virtual void  v13(); // _ZN7S7311C33v13Ev
  virtual void  v14(); // _ZN7S7311C33v14Ev
  virtual void  v15(); // _ZN7S7311C33v15Ev
  ~S7311C3(); // tgen
  S7311C3(); // tgen
};
//SIG(-1 S7311C3) C1{ BC2{ v6 v7 Fp} VBC3{ VBC2 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 FD Fc:8 Fp}


void  S7311C3 ::v11(){vfunc_called(this, "_ZN7S7311C33v11Ev");}
void  S7311C3 ::v12(){vfunc_called(this, "_ZN7S7311C33v12Ev");}
void  S7311C3 ::v13(){vfunc_called(this, "_ZN7S7311C33v13Ev");}
void  S7311C3 ::v14(){vfunc_called(this, "_ZN7S7311C33v14Ev");}
void  S7311C3 ::v15(){vfunc_called(this, "_ZN7S7311C33v15Ev");}
S7311C3 ::~S7311C3(){ note_dtor("S7311C3", this);} // tgen
S7311C3 ::S7311C3(){ note_ctor("S7311C3", this);} // tgen

static void Test_S7311C3()
{
  extern Class_Descriptor cd_S7311C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S7311C3, buf);
    S7311C3 *dp, &lv = *(dp=new (buf) S7311C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7311C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7311C3)");
    /*is_ambiguous_... S7311C3::S7311C4 */ AMB_check_base_class_offset(lv, (S7311C4*), 0, "S7311C3");
    check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(56,32), "S7311C3");
    check_base_class_offset(lv, (S7311C5*), ABISELECT(48,28), "S7311C3");
    check_field_offset(lv, s7311c3f0, ABISELECT(16,8), "S7311C3.s7311c3f0");
    set_bf_and_test(lv, s7311c3f1, ABISELECT(32,20), 0, 8, 1, "S7311C3");
    set_bf_and_test(lv, s7311c3f1, ABISELECT(32,20), 0, 8, hide_sll(1LL<<7), "S7311C3");
    check_field_offset(lv, s7311c3f2, ABISELECT(40,24), "S7311C3.s7311c3f2");
    test_class_info(&lv, &cd_S7311C3);
    dp->~S7311C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C3(Test_S7311C3, "S7311C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7311C3C1Ev();
extern void _ZN7S7311C3D1Ev();
Name_Map name_map_S7311C3[] = {
  NSPAIR(_ZN7S7311C3C1Ev),
  NSPAIR(_ZN7S7311C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
static Base_Class bases_S7311C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7311C4,    ABISELECT(56,32), //bcp->offset
    26, //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
    2, //immediately_derived
  0, 1},
  {&cd_S7311C5,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7311C3[];
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C33v11Ev();
extern void _ZN7S7311C33v12Ev();
extern void _ZN7S7311C33v13Ev();
extern void _ZN7S7311C33v14Ev();
extern void _ZN7S7311C33v15Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C3[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7311C3[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__7S7311C3[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C3[] = {
  {&(_ZTV7S7311C3[4]),  4,32},
  {&(_ZTV7S7311C3[20]),  20,32},
  {&(_ZTV7S7311C3[30]),  30,32},
  {&(_tg__ZTV7S7311C5__7S7311C3[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__7S7311C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7311C3[];
extern  VTBL_ENTRY _ZTV7S7311C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C3[];
Class_Descriptor cd_S7311C3 = {  "S7311C3", // class name
  bases_S7311C3, 3,
  &(vtc_S7311C3[0]), // expected_vtbl_contents
  &(vtt_S7311C3[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7311C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7311C3),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C3),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  S7311C6_nt  {
  int s7311c6f0;
  virtual void  v39(); // _ZN10S7311C6_nt3v39Ev
  virtual void  v40(); // _ZN10S7311C6_nt3v40Ev
  virtual void  v41(); // _ZN10S7311C6_nt3v41Ev
  ~S7311C6_nt(); // tgen
  S7311C6_nt(); // tgen
};
//SIG(-1 S7311C6_nt) C1{ v1 v2 v3 Fi}


void  S7311C6_nt ::v39(){vfunc_called(this, "_ZN10S7311C6_nt3v39Ev");}
void  S7311C6_nt ::v40(){vfunc_called(this, "_ZN10S7311C6_nt3v40Ev");}
void  S7311C6_nt ::v41(){vfunc_called(this, "_ZN10S7311C6_nt3v41Ev");}
S7311C6_nt ::~S7311C6_nt(){ note_dtor("S7311C6_nt", this);} // tgen
S7311C6_nt ::S7311C6_nt(){ note_ctor("S7311C6_nt", this);} // tgen

//skip512 S7311C6_nt

#else // __cplusplus

extern void _ZN10S7311C6_ntC1Ev();
extern void _ZN10S7311C6_ntD1Ev();
Name_Map name_map_S7311C6_nt[] = {
  NSPAIR(_ZN10S7311C6_ntC1Ev),
  NSPAIR(_ZN10S7311C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7311C6_nt[];
extern void _ZN10S7311C6_nt3v39Ev();
extern void _ZN10S7311C6_nt3v40Ev();
extern void _ZN10S7311C6_nt3v41Ev();
static  VTBL_ENTRY vtc_S7311C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7311C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S7311C6_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S7311C6_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S7311C6_nt3v41Ev,
};
extern VTBL_ENTRY _ZTI10S7311C6_nt[];
VTBL_ENTRY *P__ZTI10S7311C6_nt = _ZTI10S7311C6_nt; 
extern  VTBL_ENTRY _ZTV10S7311C6_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7311C2  : virtual S7311C3 , S7311C5 {
  ::S7311C6_nt s7311c2f0;
  void *s7311c2f1;
  virtual void  v16(); // _ZN7S7311C23v16Ev
  virtual void  v17(); // _ZN7S7311C23v17Ev
  virtual void  v18(); // _ZN7S7311C23v18Ev
  virtual void  v19(); // _ZN7S7311C23v19Ev
  virtual void  v20(); // _ZN7S7311C23v20Ev
  virtual void  v21(); // _ZN7S7311C23v21Ev
  ~S7311C2(); // tgen
  S7311C2(); // tgen
};
//SIG(-1 S7311C2) C1{ VBC2{ BC3{ v7 v8 Fp} VBC4{ VBC3 v9 v10 v11 v12 v13 v14} v15 v16 v17 v18 v19 FD Fc:8 Fp} BC4 v1 v2 v3 v4 v5 v6 FC5{ v20 v21 v22 Fi} Fp}


void  S7311C2 ::v16(){vfunc_called(this, "_ZN7S7311C23v16Ev");}
void  S7311C2 ::v17(){vfunc_called(this, "_ZN7S7311C23v17Ev");}
void  S7311C2 ::v18(){vfunc_called(this, "_ZN7S7311C23v18Ev");}
void  S7311C2 ::v19(){vfunc_called(this, "_ZN7S7311C23v19Ev");}
void  S7311C2 ::v20(){vfunc_called(this, "_ZN7S7311C23v20Ev");}
void  S7311C2 ::v21(){vfunc_called(this, "_ZN7S7311C23v21Ev");}
S7311C2 ::~S7311C2(){ note_dtor("S7311C2", this);} // tgen
S7311C2 ::S7311C2(){ note_ctor("S7311C2", this);} // tgen

static void Test_S7311C2()
{
  extern Class_Descriptor cd_S7311C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S7311C2, buf);
    S7311C2 *dp, &lv = *(dp=new (buf) S7311C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S7311C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7311C2)");
    /*is_ambiguous_... S7311C3::S7311C4 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C3*), ABISELECT(32,16), "S7311C2");
    /*is_ambiguous_... S7311C2::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(88,48), "S7311C2");
    /*is_ambiguous_... S7311C2::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(88,48), "S7311C2");
    check_base_class_offset(lv, (S7311C5*)(S7311C3*), ABISELECT(80,44), "S7311C2");
    check_base_class_offset(lv, (S7311C3*), ABISELECT(32,16), "S7311C2");
    /*is_ambiguous_... S7311C2::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C5*), 0, "S7311C2");
    check_field_offset(lv, s7311c2f0, ABISELECT(8,4), "S7311C2.s7311c2f0");
    check_field_offset(lv, s7311c2f1, ABISELECT(24,12), "S7311C2.s7311c2f1");
    test_class_info(&lv, &cd_S7311C2);
    dp->~S7311C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C2(Test_S7311C2, "S7311C2", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN7S7311C2C1Ev();
extern void _ZN7S7311C2D1Ev();
Name_Map name_map_S7311C2[] = {
  NSPAIR(_ZN7S7311C2C1Ev),
  NSPAIR(_ZN7S7311C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C3;
extern VTBL_ENTRY _ZTI7S7311C3[];
extern  VTBL_ENTRY _ZTV7S7311C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C3[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
static Base_Class bases_S7311C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7311C4,    ABISELECT(88,48), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7311C5,    ABISELECT(80,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7311C3,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7311C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7311C2[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C23v16Ev();
extern void _ZN7S7311C23v17Ev();
extern void _ZN7S7311C23v18Ev();
extern void _ZN7S7311C23v19Ev();
extern void _ZN7S7311C23v20Ev();
extern void _ZN7S7311C23v21Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C33v11Ev();
extern void _ZN7S7311C33v12Ev();
extern void _ZN7S7311C33v13Ev();
extern void _ZN7S7311C33v14Ev();
extern void _ZN7S7311C33v15Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7311C2[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__A__7S7311C2[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__A__7S7311C2[] = {
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C33v11Ev();
extern void _ZN7S7311C33v12Ev();
extern void _ZN7S7311C33v13Ev();
extern void _ZN7S7311C33v14Ev();
extern void _ZN7S7311C33v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C3__7S7311C2[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v15Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C3__7S7311C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__A1__7S7311C3__7S7311C2[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__7S7311C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C2[] = {
  {&(_ZTV7S7311C2[5]),  5,56},
  {&(_tg__ZTV7S7311C5__A__7S7311C2[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__A__7S7311C2[4]),  4,6},
  {&(_ZTV7S7311C2[28]),  28,56},
  {&(_ZTV7S7311C2[44]),  44,56},
  {&(_ZTV7S7311C2[54]),  54,56},
  {&(_tg__ZTV7S7311C3__7S7311C2[4]),  4,11},
  {&(_tg__ZTV7S7311C5__7S7311C3__7S7311C2[9]),  9,15},
  {&(_tg__ZTV7S7311C4__A1__7S7311C3__7S7311C2[4]),  4,6},
  {&(_tg__ZTV7S7311C5__7S7311C2[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__7S7311C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7311C2[];
extern  VTBL_ENTRY _ZTV7S7311C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C2[];
Class_Descriptor cd_S7311C2 = {  "S7311C2", // class name
  bases_S7311C2, 5,
  &(vtc_S7311C2[0]), // expected_vtbl_contents
  &(vtt_S7311C2[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI7S7311C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7311C2),56, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C2),11, //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  S7311C10  : virtual S7311C5 {
  void *s7311c10f0;
  ::S7311C4 s7311c10f1;
  ::S7311C4 s7311c10f2;
  virtual void  v22(); // _ZN8S7311C103v22Ev
  virtual void  v23(); // _ZN8S7311C103v23Ev
  ~S7311C10(); // tgen
  S7311C10(); // tgen
};
//SIG(-1 S7311C10) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v1 v2 Fp FC3 FC3}


void  S7311C10 ::v22(){vfunc_called(this, "_ZN8S7311C103v22Ev");}
void  S7311C10 ::v23(){vfunc_called(this, "_ZN8S7311C103v23Ev");}
S7311C10 ::~S7311C10(){ note_dtor("S7311C10", this);} // tgen
S7311C10 ::S7311C10(){ note_ctor("S7311C10", this);} // tgen

static void Test_S7311C10()
{
  extern Class_Descriptor cd_S7311C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7311C10, buf);
    S7311C10 *dp, &lv = *(dp=new (buf) S7311C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7311C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7311C10)");
    check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(48,24), "S7311C10");
    check_base_class_offset(lv, (S7311C5*), 0, "S7311C10");
    check_field_offset(lv, s7311c10f0, ABISELECT(8,4), "S7311C10.s7311c10f0");
    check_field_offset(lv, s7311c10f1, ABISELECT(16,8), "S7311C10.s7311c10f1");
    check_field_offset(lv, s7311c10f2, ABISELECT(32,16), "S7311C10.s7311c10f2");
    test_class_info(&lv, &cd_S7311C10);
    dp->~S7311C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C10(Test_S7311C10, "S7311C10", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S7311C10C1Ev();
extern void _ZN8S7311C10D1Ev();
Name_Map name_map_S7311C10[] = {
  NSPAIR(_ZN8S7311C10C1Ev),
  NSPAIR(_ZN8S7311C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
static Base_Class bases_S7311C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(48,24), //bcp->offset
    18, //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_S7311C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7311C10[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S7311C10[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__8S7311C10[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__8S7311C10[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C10[] = {
  {&(_ZTV8S7311C10[10]),  10,24},
  {&(_ZTV8S7311C10[10]),  10,24},
  {&(_ZTV8S7311C10[22]),  22,24},
  {&(_tg__ZTV7S7311C5__8S7311C10[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__8S7311C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7311C10[];
extern  VTBL_ENTRY _ZTV8S7311C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7311C10[];
Class_Descriptor cd_S7311C10 = {  "S7311C10", // class name
  bases_S7311C10, 2,
  &(vtc_S7311C10[0]), // expected_vtbl_contents
  &(vtt_S7311C10[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S7311C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7311C10),24, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7311C10),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  S7311C9  : virtual S7311C5 , S7311C10 {
  virtual void  v24(); // _ZN7S7311C93v24Ev
  virtual void  v25(); // _ZN7S7311C93v25Ev
  ~S7311C9(); // tgen
  S7311C9(); // tgen
};
//SIG(-1 S7311C9) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} BC4{ VBC2 v11 v12 Fp FC3 FC3} v1 v2}


void  S7311C9 ::v24(){vfunc_called(this, "_ZN7S7311C93v24Ev");}
void  S7311C9 ::v25(){vfunc_called(this, "_ZN7S7311C93v25Ev");}
S7311C9 ::~S7311C9(){ note_dtor("S7311C9", this);} // tgen
S7311C9 ::S7311C9(){ note_ctor("S7311C9", this);} // tgen

static void Test_S7311C9()
{
  extern Class_Descriptor cd_S7311C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7311C9, buf);
    S7311C9 *dp, &lv = *(dp=new (buf) S7311C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7311C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7311C9)");
    check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(48,24), "S7311C9");
    check_base_class_offset(lv, (S7311C5*), 0, "S7311C9");
    check_base_class_offset(lv, (S7311C5*)(S7311C10*), 0, "S7311C9");
    check_base_class_offset(lv, (S7311C10*), 0, "S7311C9");
    test_class_info(&lv, &cd_S7311C9);
    dp->~S7311C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C9(Test_S7311C9, "S7311C9", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7311C9C1Ev();
extern void _ZN7S7311C9D1Ev();
Name_Map name_map_S7311C9[] = {
  NSPAIR(_ZN7S7311C9C1Ev),
  NSPAIR(_ZN7S7311C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C10;
extern VTBL_ENTRY _ZTI8S7311C10[];
extern  VTBL_ENTRY _ZTV8S7311C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7311C10[];
static Base_Class bases_S7311C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(48,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7311C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7311C10,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7311C9[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7311C9[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
static  VTBL_ENTRY _tg__ZTV8S7311C10__7S7311C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__8S7311C10__7S7311C9[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C9[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__7S7311C9[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C9[] = {
  {&(_ZTV7S7311C9[10]),  10,26},
  {&(_tg__ZTV8S7311C10__7S7311C9[10]),  10,18},
  {&(_tg__ZTV8S7311C10__7S7311C9[10]),  10,18},
  {&(_tg__ZTV7S7311C4__8S7311C10__7S7311C9[4]),  4,6},
  {&(_ZTV7S7311C9[10]),  10,26},
  {&(_ZTV7S7311C9[24]),  24,26},
  {&(_tg__ZTV7S7311C5__7S7311C9[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__7S7311C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7311C9[];
extern  VTBL_ENTRY _ZTV7S7311C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C9[];
Class_Descriptor cd_S7311C9 = {  "S7311C9", // class name
  bases_S7311C9, 3,
  &(vtc_S7311C9[0]), // expected_vtbl_contents
  &(vtt_S7311C9[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7311C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7311C9),26, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C9),8, //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  S7311C8  : virtual S7311C9 , S7311C5 {
  void *s7311c8f0;
  virtual void  v26(); // _ZN7S7311C83v26Ev
  virtual void  v27(); // _ZN7S7311C83v27Ev
  virtual void  v28(); // _ZN7S7311C83v28Ev
  virtual void  v29(); // _ZN7S7311C83v29Ev
  virtual void  v30(); // _ZN7S7311C83v30Ev
  virtual void  v31(); // _ZN7S7311C83v31Ev
  virtual void  v32(); // _ZN7S7311C83v32Ev
  virtual void  v33(); // _ZN7S7311C83v33Ev
  ~S7311C8(); // tgen
  S7311C8(); // tgen
};
//SIG(-1 S7311C8) C1{ VBC2{ VBC3{ VBC4{ v9 v10 Fp} v11 v12 v13 v14 v15 v16} BC5{ VBC3 v17 v18 Fp FC4 FC4} v19 v20} BC3 v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S7311C8 ::v26(){vfunc_called(this, "_ZN7S7311C83v26Ev");}
void  S7311C8 ::v27(){vfunc_called(this, "_ZN7S7311C83v27Ev");}
void  S7311C8 ::v28(){vfunc_called(this, "_ZN7S7311C83v28Ev");}
void  S7311C8 ::v29(){vfunc_called(this, "_ZN7S7311C83v29Ev");}
void  S7311C8 ::v30(){vfunc_called(this, "_ZN7S7311C83v30Ev");}
void  S7311C8 ::v31(){vfunc_called(this, "_ZN7S7311C83v31Ev");}
void  S7311C8 ::v32(){vfunc_called(this, "_ZN7S7311C83v32Ev");}
void  S7311C8 ::v33(){vfunc_called(this, "_ZN7S7311C83v33Ev");}
S7311C8 ::~S7311C8(){ note_dtor("S7311C8", this);} // tgen
S7311C8 ::S7311C8(){ note_ctor("S7311C8", this);} // tgen

static void Test_S7311C8()
{
  extern Class_Descriptor cd_S7311C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7311C8, buf);
    S7311C8 *dp, &lv = *(dp=new (buf) S7311C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7311C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7311C8)");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(64,32), "S7311C8");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(64,32), "S7311C8");
    check_base_class_offset(lv, (S7311C5*)(S7311C9*), ABISELECT(16,8), "S7311C8");
    check_base_class_offset(lv, (S7311C5*)(S7311C10*)(S7311C9*), ABISELECT(16,8), "S7311C8");
    check_base_class_offset(lv, (S7311C10*)(S7311C9*), ABISELECT(16,8), "S7311C8");
    check_base_class_offset(lv, (S7311C9*), ABISELECT(16,8), "S7311C8");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C5*), 0, "S7311C8");
    check_field_offset(lv, s7311c8f0, ABISELECT(8,4), "S7311C8.s7311c8f0");
    test_class_info(&lv, &cd_S7311C8);
    dp->~S7311C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C8(Test_S7311C8, "S7311C8", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7311C8C1Ev();
extern void _ZN7S7311C8D1Ev();
Name_Map name_map_S7311C8[] = {
  NSPAIR(_ZN7S7311C8C1Ev),
  NSPAIR(_ZN7S7311C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C10;
extern VTBL_ENTRY _ZTI8S7311C10[];
extern  VTBL_ENTRY _ZTV8S7311C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7311C10[];
extern Class_Descriptor cd_S7311C9;
extern VTBL_ENTRY _ZTI7S7311C9[];
extern  VTBL_ENTRY _ZTV7S7311C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C9[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
static Base_Class bases_S7311C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(64,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7311C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7311C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7311C9,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7311C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7311C8[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C83v26Ev();
extern void _ZN7S7311C83v27Ev();
extern void _ZN7S7311C83v28Ev();
extern void _ZN7S7311C83v29Ev();
extern void _ZN7S7311C83v30Ev();
extern void _ZN7S7311C83v31Ev();
extern void _ZN7S7311C83v32Ev();
extern void _ZN7S7311C83v33Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY vtc_S7311C8[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7311C8[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__A__7S7311C8[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__A__7S7311C8[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C9__7S7311C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
static  VTBL_ENTRY _tg__ZTV8S7311C107S7311C9__7S7311C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__8S7311C107S7311C9__7S7311C8[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C9__7S7311C8[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C8[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__7S7311C8[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C8[] = {
  {&(_ZTV7S7311C8[5]),  5,49},
  {&(_tg__ZTV7S7311C5__A__7S7311C8[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__A__7S7311C8[4]),  4,6},
  {&(_ZTV7S7311C8[33]),  33,49},
  {&(_ZTV7S7311C8[33]),  33,49},
  {&(_ZTV7S7311C8[47]),  47,49},
  {&(_tg__ZTV7S7311C9__7S7311C8[10]),  10,20},
  {&(_tg__ZTV8S7311C107S7311C9__7S7311C8[10]),  10,18},
  {&(_tg__ZTV8S7311C107S7311C9__7S7311C8[10]),  10,18},
  {&(_tg__ZTV7S7311C4__8S7311C107S7311C9__7S7311C8[4]),  4,6},
  {&(_tg__ZTV7S7311C9__7S7311C8[10]),  10,20},
  {&(_tg__ZTV7S7311C4__7S7311C9__7S7311C8[4]),  4,6},
  {&(_tg__ZTV7S7311C5__7S7311C8[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__7S7311C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7311C8[];
extern  VTBL_ENTRY _ZTV7S7311C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C8[];
Class_Descriptor cd_S7311C8 = {  "S7311C8", // class name
  bases_S7311C8, 5,
  &(vtc_S7311C8[0]), // expected_vtbl_contents
  &(vtt_S7311C8[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7311C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7311C8),49, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C8),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7311C7  : virtual S7311C4 , virtual S7311C8 {
  __tsi64 s7311c7f0;
  ::S7311C10 s7311c7f1;
  __tsi64 s7311c7f2;
  virtual void  v34(); // _ZN7S7311C73v34Ev
  virtual void  v35(); // _ZN7S7311C73v35Ev
  virtual void  v36(); // _ZN7S7311C73v36Ev
  virtual void  v37(); // _ZN7S7311C73v37Ev
  virtual void  v38(); // _ZN7S7311C73v38Ev
  ~S7311C7(); // tgen
  S7311C7(); // tgen
};
//SIG(-1 S7311C7) C1{ VBC2{ v6 v7 Fp} VBC3{ VBC4{ VBC5{ VBC2 v8 v9 v10 v11 v12 v13} BC6{ VBC5 v14 v15 Fp FC2 FC2} v16 v17} BC5 v18 v19 v20 v21 v22 v23 v24 v25 Fp} v1 v2 v3 v4 v5 FL FC6 FL}


void  S7311C7 ::v34(){vfunc_called(this, "_ZN7S7311C73v34Ev");}
void  S7311C7 ::v35(){vfunc_called(this, "_ZN7S7311C73v35Ev");}
void  S7311C7 ::v36(){vfunc_called(this, "_ZN7S7311C73v36Ev");}
void  S7311C7 ::v37(){vfunc_called(this, "_ZN7S7311C73v37Ev");}
void  S7311C7 ::v38(){vfunc_called(this, "_ZN7S7311C73v38Ev");}
S7311C7 ::~S7311C7(){ note_dtor("S7311C7", this);} // tgen
S7311C7 ::S7311C7(){ note_ctor("S7311C7", this);} // tgen

static void Test_S7311C7()
{
  extern Class_Descriptor cd_S7311C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7311C7, buf);
    S7311C7 *dp, &lv = *(dp=new (buf) S7311C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7311C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7311C7)");
    check_base_class_offset(lv, (S7311C4*), ABISELECT(88,52), "S7311C7");
    /*is_ambiguous_... S7311C7::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(88,52), "S7311C7");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*)(S7311C8*), ABISELECT(88,52), "S7311C7");
    check_base_class_offset(lv, (S7311C5*)(S7311C9*), 0, "S7311C7");
    check_base_class_offset(lv, (S7311C5*)(S7311C10*)(S7311C9*), 0, "S7311C7");
    check_base_class_offset(lv, (S7311C10*)(S7311C9*), ABISELECT(120,68), "S7311C7");
    check_base_class_offset(lv, (S7311C9*)(S7311C8*), ABISELECT(120,68), "S7311C7");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C5*)(S7311C8*), ABISELECT(104,60), "S7311C7");
    check_base_class_offset(lv, (S7311C8*), ABISELECT(104,60), "S7311C7");
    check_field_offset(lv, s7311c7f0, ABISELECT(8,4), "S7311C7.s7311c7f0");
    check_field_offset(lv, s7311c7f1, ABISELECT(16,12), "S7311C7.s7311c7f1");
    check_field_offset(lv, s7311c7f2, ABISELECT(80,44), "S7311C7.s7311c7f2");
    test_class_info(&lv, &cd_S7311C7);
    dp->~S7311C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C7(Test_S7311C7, "S7311C7", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S7311C7C1Ev();
extern void _ZN7S7311C7D1Ev();
Name_Map name_map_S7311C7[] = {
  NSPAIR(_ZN7S7311C7C1Ev),
  NSPAIR(_ZN7S7311C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C10;
extern VTBL_ENTRY _ZTI8S7311C10[];
extern  VTBL_ENTRY _ZTV8S7311C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7311C10[];
extern Class_Descriptor cd_S7311C9;
extern VTBL_ENTRY _ZTI7S7311C9[];
extern  VTBL_ENTRY _ZTV7S7311C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C9[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C8;
extern VTBL_ENTRY _ZTI7S7311C8[];
extern  VTBL_ENTRY _ZTV7S7311C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C8[];
static Base_Class bases_S7311C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(88,52), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7311C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7311C10,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7311C9,    ABISELECT(120,68), //bcp->offset
    62, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7311C5,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7311C8,    ABISELECT(104,60), //bcp->offset
    29, //bcp->virtual_function_table_offset
    19, //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 _ZTI7S7311C7[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C73v34Ev();
extern void _ZN7S7311C73v35Ev();
extern void _ZN7S7311C73v36Ev();
extern void _ZN7S7311C73v37Ev();
extern void _ZN7S7311C73v38Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C83v26Ev();
extern void _ZN7S7311C83v27Ev();
extern void _ZN7S7311C83v28Ev();
extern void _ZN7S7311C83v29Ev();
extern void _ZN7S7311C83v30Ev();
extern void _ZN7S7311C83v31Ev();
extern void _ZN7S7311C83v32Ev();
extern void _ZN7S7311C83v33Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY vtc_S7311C7[] = {
  0,
  ABISELECT(120,68),
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v36Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v37Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v38Ev,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern VTBL_ENTRY _ZTV7S7311C7[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C83v26Ev();
extern void _ZN7S7311C83v27Ev();
extern void _ZN7S7311C83v28Ev();
extern void _ZN7S7311C83v29Ev();
extern void _ZN7S7311C83v30Ev();
extern void _ZN7S7311C83v31Ev();
extern void _ZN7S7311C83v32Ev();
extern void _ZN7S7311C83v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C8__7S7311C7[] = {
  ABISELECT(-104,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v33Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C57S7311C8__A1__7S7311C7[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C57S7311C8__A1__7S7311C7[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C9__7S7311C8__7S7311C7[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C8__7S7311C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C8__7S7311C7[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C9__7S7311C7[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
static  VTBL_ENTRY _tg__ZTV8S7311C107S7311C9__7S7311C7[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__8S7311C107S7311C9__7S7311C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__8S7311C107S7311C9__7S7311C7[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C9__7S7311C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C9__7S7311C7[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C7[] = {
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__7S7311C7[] = {
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C7[] = {
  {&(_ZTV7S7311C7[12]),  12,86},
  {&(_ZTV7S7311C7[27]),  27,86},
  {&(_ZTV7S7311C7[48]),  48,86},
  {&(_ZTV7S7311C7[76]),  76,86},
  {&(_ZTV7S7311C7[12]),  12,86},
  {&(_tg__ZTV7S7311C8__7S7311C7[5]),  5,19},
  {&(_tg__ZTV7S7311C57S7311C8__A1__7S7311C7[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C57S7311C8__A1__7S7311C7[4]),  4,6},
  {&(_tg__ZTV7S7311C9__7S7311C8__7S7311C7[14]),  14,24},
  {&(_tg__ZTV7S7311C5__7S7311C8__7S7311C7[9]),  9,15},
  {&(_tg__ZTV7S7311C4__7S7311C8__7S7311C7[4]),  4,6},
  {&(_tg__ZTV7S7311C9__7S7311C7[10]),  10,20},
  {&(_tg__ZTV8S7311C107S7311C9__7S7311C7[10]),  10,18},
  {&(_tg__ZTV7S7311C5__8S7311C107S7311C9__7S7311C7[9]),  9,15},
  {&(_tg__ZTV7S7311C4__8S7311C107S7311C9__7S7311C7[4]),  4,6},
  {&(_tg__ZTV7S7311C5__7S7311C9__7S7311C7[9]),  9,15},
  {&(_tg__ZTV7S7311C4__7S7311C9__7S7311C7[4]),  4,6},
  {&(_tg__ZTV7S7311C5__7S7311C7[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__7S7311C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7311C7[];
extern  VTBL_ENTRY _ZTV7S7311C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C7[];
Class_Descriptor cd_S7311C7 = {  "S7311C7", // class name
  bases_S7311C7, 6,
  &(vtc_S7311C7[0]), // expected_vtbl_contents
  &(vtt_S7311C7[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S7311C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7311C7),86, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C7),19, //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  S7311C1  : S7311C2 , virtual S7311C7 {
  virtual  ~S7311C1(); // _ZN7S7311C1D2Ev
  virtual void  v1(); // _ZN7S7311C12v1Ev
  virtual void  v2(); // _ZN7S7311C12v2Ev
  S7311C1(); // tgen
};
//SIG(1 S7311C1) C1{ BC2{ VBC3{ BC4{ v3 v4 Fp} VBC5{ VBC4 v5 v6 v7 v8 v9 v10} v11 v12 v13 v14 v15 FD Fc:8 Fp} BC5 v16 v17 v18 v19 v20 v21 FC6{ v39 v40 v41 Fi} Fp} VBC7{ VBC4 VBC8{ VBC9{ VBC5 BC10{ VBC5 v22 v23 Fp FC4 FC4} v24 v25} BC5 v26 v27 v28 v29 v30 v31 v32 v33 Fp} v34 v35 v36 v37 v38 FL FC10 FL} vd v1 v2}


 S7311C1 ::~S7311C1(){ note_dtor("S7311C1", this);}
void  S7311C1 ::v1(){vfunc_called(this, "_ZN7S7311C12v1Ev");}
void  S7311C1 ::v2(){vfunc_called(this, "_ZN7S7311C12v2Ev");}
S7311C1 ::S7311C1(){ note_ctor("S7311C1", this);} // tgen

static void Test_S7311C1()
{
  extern Class_Descriptor cd_S7311C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,35)];
    init_test(&cd_S7311C1, buf);
    S7311C1 *dp, &lv = *(dp=new (buf) S7311C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,136), "sizeof(S7311C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7311C1)");
    /*is_ambiguous_... S7311C3::S7311C4 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C3*), ABISELECT(32,16), "S7311C1");
    /*is_ambiguous_... S7311C1::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*), ABISELECT(80,44), "S7311C1");
    /*is_ambiguous_... S7311C2::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*)(S7311C2*), ABISELECT(80,44), "S7311C1");
    check_base_class_offset(lv, (S7311C4*)(S7311C7*), ABISELECT(80,44), "S7311C1");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C4*)(S7311C5*)(S7311C8*), ABISELECT(80,44), "S7311C1");
    check_base_class_offset(lv, (S7311C5*)(S7311C3*), ABISELECT(96,52), "S7311C1");
    check_base_class_offset(lv, (S7311C5*)(S7311C9*), ABISELECT(96,52), "S7311C1");
    check_base_class_offset(lv, (S7311C5*)(S7311C10*)(S7311C9*), ABISELECT(96,52), "S7311C1");
    check_base_class_offset(lv, (S7311C3*)(S7311C2*), ABISELECT(32,16), "S7311C1");
    /*is_ambiguous_... S7311C2::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C5*)(S7311C2*), 0, "S7311C1");
    check_base_class_offset(lv, (S7311C2*), 0, "S7311C1");
    check_base_class_offset(lv, (S7311C10*)(S7311C9*), ABISELECT(200,112), "S7311C1");
    check_base_class_offset(lv, (S7311C9*)(S7311C8*), ABISELECT(200,112), "S7311C1");
    /*is_ambiguous_... S7311C8::S7311C5 */ AMB_check_base_class_offset(lv, (S7311C5*)(S7311C8*), ABISELECT(184,104), "S7311C1");
    check_base_class_offset(lv, (S7311C8*)(S7311C7*), ABISELECT(184,104), "S7311C1");
    check_base_class_offset(lv, (S7311C7*), ABISELECT(96,52), "S7311C1");
    test_class_info(&lv, &cd_S7311C1);
    dp->~S7311C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7311C1(Test_S7311C1, "S7311C1", ABISELECT(256,136));

#else // __cplusplus

extern void _ZN7S7311C1C1Ev();
extern void _ZN7S7311C1D2Ev();
Name_Map name_map_S7311C1[] = {
  NSPAIR(_ZN7S7311C1C1Ev),
  NSPAIR(_ZN7S7311C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C4;
extern VTBL_ENTRY _ZTI7S7311C4[];
extern  VTBL_ENTRY _ZTV7S7311C4[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C3;
extern VTBL_ENTRY _ZTI7S7311C3[];
extern  VTBL_ENTRY _ZTV7S7311C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C3[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C2;
extern VTBL_ENTRY _ZTI7S7311C2[];
extern  VTBL_ENTRY _ZTV7S7311C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C2[];
extern Class_Descriptor cd_S7311C10;
extern VTBL_ENTRY _ZTI8S7311C10[];
extern  VTBL_ENTRY _ZTV8S7311C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7311C10[];
extern Class_Descriptor cd_S7311C9;
extern VTBL_ENTRY _ZTI7S7311C9[];
extern  VTBL_ENTRY _ZTV7S7311C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C9[];
extern Class_Descriptor cd_S7311C5;
extern VTBL_ENTRY _ZTI7S7311C5[];
extern  VTBL_ENTRY _ZTV7S7311C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C5[];
extern Class_Descriptor cd_S7311C8;
extern VTBL_ENTRY _ZTI7S7311C8[];
extern  VTBL_ENTRY _ZTV7S7311C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C8[];
extern Class_Descriptor cd_S7311C7;
extern VTBL_ENTRY _ZTI7S7311C7[];
extern  VTBL_ENTRY _ZTV7S7311C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C7[];
static Base_Class bases_S7311C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7311C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7311C4,    ABISELECT(80,44), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7311C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7311C3,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7311C5,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7311C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7311C10,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7311C9,    ABISELECT(200,112), //bcp->offset
    109, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7311C5,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7311C8,    ABISELECT(184,104), //bcp->offset
    76, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7311C7,    ABISELECT(96,52), //bcp->offset
    48, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7311C1[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C23v16Ev();
extern void _ZN7S7311C23v17Ev();
extern void _ZN7S7311C23v18Ev();
extern void _ZN7S7311C23v19Ev();
extern void _ZN7S7311C23v20Ev();
extern void _ZN7S7311C23v21Ev();
extern void _ZN7S7311C1D1Ev();
extern void _ZN7S7311C1D0Ev();
extern void _ZN7S7311C12v1Ev();
extern void _ZN7S7311C12v2Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C33v11Ev();
extern void _ZN7S7311C33v12Ev();
extern void _ZN7S7311C33v13Ev();
extern void _ZN7S7311C33v14Ev();
extern void _ZN7S7311C33v15Ev();
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C73v34Ev();
extern void _ZN7S7311C73v35Ev();
extern void _ZN7S7311C73v36Ev();
extern void _ZN7S7311C73v37Ev();
extern void _ZN7S7311C73v38Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C83v26Ev();
extern void _ZN7S7311C83v27Ev();
extern void _ZN7S7311C83v28Ev();
extern void _ZN7S7311C83v29Ev();
extern void _ZN7S7311C83v30Ev();
extern void _ZN7S7311C83v31Ev();
extern void _ZN7S7311C83v32Ev();
extern void _ZN7S7311C83v33Ev();
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY vtc_S7311C1[] = {
  ABISELECT(200,112),
  ABISELECT(184,104),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(32,16),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C1[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7311C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7311C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7311C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7311C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7311C1[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v15Ev,
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7311C1[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7311C1[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v36Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v37Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v38Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(16,8),
  ABISELECT(-104,-60),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI7S7311C1[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-120,-68),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S7311C1[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern VTBL_ENTRY _ZTV7S7311C1[];
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C23v16Ev();
extern void _ZN7S7311C23v17Ev();
extern void _ZN7S7311C23v18Ev();
extern void _ZN7S7311C23v19Ev();
extern void _ZN7S7311C23v20Ev();
extern void _ZN7S7311C23v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C2__7S7311C1[] = {
  ABISELECT(96,52),
  ABISELECT(32,16),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7311C23v21Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C57S7311C2__A1__7S7311C1[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C57S7311C2__A1__7S7311C1[] = {
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C33v11Ev();
extern void _ZN7S7311C33v12Ev();
extern void _ZN7S7311C33v13Ev();
extern void _ZN7S7311C33v14Ev();
extern void _ZN7S7311C33v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C3__7S7311C2__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v15Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C2__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__A1__7S7311C2__7S7311C1[] = {
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7311C2[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
extern void _ZN7S7311C33v11Ev();
extern void _ZN7S7311C33v12Ev();
extern void _ZN7S7311C33v13Ev();
extern void _ZN7S7311C33v14Ev();
extern void _ZN7S7311C33v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C3__7S7311C1[] = {
  ABISELECT(48,28),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7311C33v15Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C3__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__A1__7S7311C3__7S7311C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7311C3[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C5__7S7311C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C73v34Ev();
extern void _ZN7S7311C73v35Ev();
extern void _ZN7S7311C73v36Ev();
extern void _ZN7S7311C73v37Ev();
extern void _ZN7S7311C73v38Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C7__7S7311C1[] = {
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v36Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v37Ev,
  (VTBL_ENTRY)&_ZN7S7311C73v38Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C7__7S7311C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C83v26Ev();
extern void _ZN7S7311C83v27Ev();
extern void _ZN7S7311C83v28Ev();
extern void _ZN7S7311C83v29Ev();
extern void _ZN7S7311C83v30Ev();
extern void _ZN7S7311C83v31Ev();
extern void _ZN7S7311C83v32Ev();
extern void _ZN7S7311C83v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C8__7S7311C7__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(16,8),
  ABISELECT(-104,-60),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v33Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C9__7S7311C7__7S7311C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-120,-68),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7311C7[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN7S7311C83v26Ev();
extern void _ZN7S7311C83v27Ev();
extern void _ZN7S7311C83v28Ev();
extern void _ZN7S7311C83v29Ev();
extern void _ZN7S7311C83v30Ev();
extern void _ZN7S7311C83v31Ev();
extern void _ZN7S7311C83v32Ev();
extern void _ZN7S7311C83v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C8__7S7311C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(16,8),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7311C83v33Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C57S7311C8__A2__7S7311C1[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C57S7311C8__A2__7S7311C1[] = {
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7311C5[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C9__7S7311C8__7S7311C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C8__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C8__7S7311C1[] = {
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7311C8[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
extern void _ZN7S7311C93v24Ev();
extern void _ZN7S7311C93v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C9__7S7311C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7311C93v25Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
extern void _ZN8S7311C103v22Ev();
extern void _ZN8S7311C103v23Ev();
static  VTBL_ENTRY _tg__ZTV8S7311C107S7311C9__7S7311C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7311C103v23Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__8S7311C107S7311C9__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__8S7311C107S7311C9__7S7311C1[] = {
  0,
  0,
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S7311C10[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
extern void _ZN7S7311C52v5Ev();
extern void _ZN7S7311C52v6Ev();
extern void _ZN7S7311C52v7Ev();
extern void _ZN7S7311C52v8Ev();
extern void _ZN7S7311C52v9Ev();
extern void _ZN7S7311C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C5__7S7311C9__7S7311C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7311C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7311C53v10Ev,
};
extern void _ZN7S7311C42v3Ev();
extern void _ZN7S7311C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7311C4__7S7311C9__7S7311C1[] = {
  0,
  0,
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI7S7311C9[0]),
  (VTBL_ENTRY)&_ZN7S7311C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7311C42v4Ev,
};
static  VTT_ENTRY vtt_S7311C1[] = {
  {&(_ZTV7S7311C1[8]),  8,133},
  {&(_tg__ZTV7S7311C2__7S7311C1[5]),  5,17},
  {&(_tg__ZTV7S7311C57S7311C2__A1__7S7311C1[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C57S7311C2__A1__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C3__7S7311C2__7S7311C1[11]),  11,18},
  {&(_tg__ZTV7S7311C5__7S7311C2__7S7311C1[9]),  9,15},
  {&(_tg__ZTV7S7311C4__A1__7S7311C2__7S7311C1[4]),  4,6},
  {&(_ZTV7S7311C1[35]),  35,133},
  {&(_ZTV7S7311C1[65]),  65,133},
  {&(_ZTV7S7311C1[46]),  46,133},
  {&(_ZTV7S7311C1[65]),  65,133},
  {&(_ZTV7S7311C1[95]),  95,133},
  {&(_ZTV7S7311C1[123]),  123,133},
  {&(_tg__ZTV7S7311C3__7S7311C1[4]),  4,11},
  {&(_tg__ZTV7S7311C5__7S7311C3__7S7311C1[9]),  9,15},
  {&(_tg__ZTV7S7311C4__A1__7S7311C3__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C5__7S7311C1[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C5__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C7__7S7311C1[12]),  12,23},
  {&(_tg__ZTV7S7311C4__7S7311C7__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C8__7S7311C7__7S7311C1[19]),  19,33},
  {&(_tg__ZTV7S7311C9__7S7311C7__7S7311C1[14]),  14,24},
  {&(_tg__ZTV7S7311C7__7S7311C1[12]),  12,23},
  {&(_tg__ZTV7S7311C8__7S7311C1[5]),  5,19},
  {&(_tg__ZTV7S7311C57S7311C8__A2__7S7311C1[3]),  3,9},
  {&(_tg__ZTV7S7311C4__7S7311C57S7311C8__A2__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C9__7S7311C8__7S7311C1[14]),  14,24},
  {&(_tg__ZTV7S7311C5__7S7311C8__7S7311C1[9]),  9,15},
  {&(_tg__ZTV7S7311C4__7S7311C8__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C9__7S7311C1[10]),  10,20},
  {&(_tg__ZTV8S7311C107S7311C9__7S7311C1[10]),  10,18},
  {&(_tg__ZTV7S7311C5__8S7311C107S7311C9__7S7311C1[9]),  9,15},
  {&(_tg__ZTV7S7311C4__8S7311C107S7311C9__7S7311C1[4]),  4,6},
  {&(_tg__ZTV7S7311C5__7S7311C9__7S7311C1[9]),  9,15},
  {&(_tg__ZTV7S7311C4__7S7311C9__7S7311C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7311C1[];
extern  VTBL_ENTRY _ZTV7S7311C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7311C1[];
Class_Descriptor cd_S7311C1 = {  "S7311C1", // class name
  bases_S7311C1, 11,
  &(vtc_S7311C1[0]), // expected_vtbl_contents
  &(vtt_S7311C1[0]), // expected_vtt_contents
  ABISELECT(256,136), // object size
  NSPAIRA(_ZTI7S7311C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7311C1),133, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7311C1),35, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7926C9_nt  {
  virtual  ~S7926C9_nt(); // _ZN10S7926C9_ntD1Ev
  virtual void  v2(); // _ZN10S7926C9_nt2v2Ev
  S7926C9_nt(); // tgen
};
//SIG(-1 S7926C9_nt) C1{ vd v1}


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

//skip512 S7926C9_nt

#else // __cplusplus

extern void _ZN10S7926C9_ntC1Ev();
extern void _ZN10S7926C9_ntD1Ev();
Name_Map name_map_S7926C9_nt[] = {
  NSPAIR(_ZN10S7926C9_ntC1Ev),
  NSPAIR(_ZN10S7926C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7926C9_nt[];
extern void _ZN10S7926C9_ntD1Ev();
extern void _ZN10S7926C9_ntD0Ev();
extern void _ZN10S7926C9_nt2v2Ev();
static  VTBL_ENTRY vtc_S7926C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7926C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S7926C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7926C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7926C9_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S7926C9_nt[];
VTBL_ENTRY *P__ZTI10S7926C9_nt = _ZTI10S7926C9_nt; 
extern  VTBL_ENTRY _ZTV10S7926C9_nt[];
Class_Descriptor cd_S7926C9_nt = {  "S7926C9_nt", // class name
  0,0,//no base classes
  &(vtc_S7926C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7926C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7926C9_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  S7926C1  : S3619C3_nt , S7926C9_nt {
  ::S3618C13_nt s7926c1f0;
  ::S9740C25 s7926c1f1;
  int s7926c1f2;
  void *s7926c1f3[11];
  int s7926c1f4[2];
  __tsi64 s7926c1f5;
  int s7926c1f6;
  ::S19894C6_nt s7926c1f7;
  void *s7926c1f8;
  char s7926c1f9;
  __tsi64 s7926c1f10[2];
  char s7926c1f11[7];
  int s7926c1f12[2];
  ::S3619C10_nt s7926c1f13;
  ::S3223C4_nt s7926c1f14;
  int s7926c1f15[7];
  char s7926c1f16;
  int s7926c1f17[2];
  __tsi64 s7926c1f18;
  int s7926c1f19[2];
  void *s7926c1f20[3];
  __tsi64 s7926c1f21;
  void *s7926c1f22;
  virtual  ~S7926C1(); // _ZN7S7926C1D1Ev
  virtual void  v1(); // _ZN7S7926C12v1Ev
  S7926C1(); // tgen
};
//SIG(1 S7926C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC4} FC3 Fc} BC5{ vd v2} vd v1 FC6{ m FC7{ Fl[4]}} FC8{ m Fp Fi FC9{ m} FC10{ m}} Fi Fp[11] Fi[2] FL Fi FC11{ m Fp} Fp Fc FL[2] Fc[7] Fi[2] FC12{ m Fc Fl[2] Fs[12] Fc[5]} FC13{ m Fi[2]} Fi[7] Fc Fi[2] FL Fi[2] Fp[3] FL Fp}


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

static void Test_S7926C1()
{
  extern Class_Descriptor cd_S7926C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(56,78)];
    init_test(&cd_S7926C1, buf);
    S7926C1 *dp, &lv = *(dp=new (buf) S7926C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(440,308), "sizeof(S7926C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7926C1)");
    check_base_class_offset(lv, (S3619C3_nt*), 0, "S7926C1");
    check_base_class_offset(lv, (S7926C9_nt*), ABISELECT(48,32), "S7926C1");
    check_field_offset(lv, s7926c1f0, ABISELECT(56,36), "S7926C1.s7926c1f0");
    check_field_offset(lv, s7926c1f1, ABISELECT(88,52), "S7926C1.s7926c1f1");
    check_field_offset(lv, s7926c1f2, ABISELECT(104,64), "S7926C1.s7926c1f2");
    check_field_offset(lv, s7926c1f3, ABISELECT(112,68), "S7926C1.s7926c1f3");
    check_field_offset(lv, s7926c1f4, ABISELECT(200,112), "S7926C1.s7926c1f4");
    check_field_offset(lv, s7926c1f5, ABISELECT(208,120), "S7926C1.s7926c1f5");
    check_field_offset(lv, s7926c1f6, ABISELECT(216,128), "S7926C1.s7926c1f6");
    check_field_offset(lv, s7926c1f7, ABISELECT(224,132), "S7926C1.s7926c1f7");
    check_field_offset(lv, s7926c1f8, ABISELECT(232,136), "S7926C1.s7926c1f8");
    check_field_offset(lv, s7926c1f9, ABISELECT(240,140), "S7926C1.s7926c1f9");
    check_field_offset(lv, s7926c1f10, ABISELECT(248,144), "S7926C1.s7926c1f10");
    check_field_offset(lv, s7926c1f11, ABISELECT(264,160), "S7926C1.s7926c1f11");
    check_field_offset(lv, s7926c1f12, ABISELECT(272,168), "S7926C1.s7926c1f12");
    check_field_offset(lv, s7926c1f13, ABISELECT(280,176), "S7926C1.s7926c1f13");
    check_field_offset(lv, s7926c1f14, ABISELECT(336,220), "S7926C1.s7926c1f14");
    check_field_offset(lv, s7926c1f15, ABISELECT(344,228), "S7926C1.s7926c1f15");
    check_field_offset(lv, s7926c1f16, ABISELECT(372,256), "S7926C1.s7926c1f16");
    check_field_offset(lv, s7926c1f17, ABISELECT(376,260), "S7926C1.s7926c1f17");
    check_field_offset(lv, s7926c1f18, ABISELECT(384,268), "S7926C1.s7926c1f18");
    check_field_offset(lv, s7926c1f19, ABISELECT(392,276), "S7926C1.s7926c1f19");
    check_field_offset(lv, s7926c1f20, ABISELECT(400,284), "S7926C1.s7926c1f20");
    check_field_offset(lv, s7926c1f21, ABISELECT(424,296), "S7926C1.s7926c1f21");
    check_field_offset(lv, s7926c1f22, ABISELECT(432,304), "S7926C1.s7926c1f22");
    test_class_info(&lv, &cd_S7926C1);
    dp->~S7926C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7926C1(Test_S7926C1, "S7926C1", ABISELECT(440,308));

#else // __cplusplus

extern void _ZN7S7926C1C1Ev();
extern void _ZN7S7926C1D1Ev();
Name_Map name_map_S7926C1[] = {
  NSPAIR(_ZN7S7926C1C1Ev),
  NSPAIR(_ZN7S7926C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3619C3_nt;
extern VTBL_ENTRY _ZTI10S3619C3_nt[];
extern  VTBL_ENTRY _ZTV10S3619C3_nt[];
extern Class_Descriptor cd_S7926C9_nt;
extern VTBL_ENTRY _ZTI10S7926C9_nt[];
extern  VTBL_ENTRY _ZTV10S7926C9_nt[];
static Base_Class bases_S7926C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3619C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7926C9_nt,    ABISELECT(48,32), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7926C1[];
extern void _ZN7S7926C1D1Ev();
extern void _ZN7S7926C1D0Ev();
extern void _ZN7S7926C12v1Ev();
extern void ABISELECT(_ZThn48_N7S7926C1D1Ev,_ZThn32_N7S7926C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7926C1D0Ev,_ZThn32_N7S7926C1D0Ev)();
extern void _ZN10S7926C9_nt2v2Ev();
static  VTBL_ENTRY vtc_S7926C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7926C1[0]),
  (VTBL_ENTRY)&_ZN7S7926C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7926C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7926C12v1Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7926C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7926C1D1Ev,_ZThn32_N7S7926C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7926C1D0Ev,_ZThn32_N7S7926C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7926C9_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI7S7926C1[];
extern  VTBL_ENTRY _ZTV7S7926C1[];
Class_Descriptor cd_S7926C1 = {  "S7926C1", // class name
  bases_S7926C1, 2,
  &(vtc_S7926C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(440,308), // object size
  NSPAIRA(_ZTI7S7926C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7926C1),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  S21646C3_nt  {
  virtual  ~S21646C3_nt(); // _ZN11S21646C3_ntD1Ev
  virtual void  v22(); // _ZN11S21646C3_nt3v22Ev
  virtual void  v23(); // _ZN11S21646C3_nt3v23Ev
  virtual void  v24(); // _ZN11S21646C3_nt3v24Ev
  virtual void  v25(); // _ZN11S21646C3_nt3v25Ev
  virtual void  v26(); // _ZN11S21646C3_nt3v26Ev
  virtual void  v27(); // _ZN11S21646C3_nt3v27Ev
  virtual void  v28(); // _ZN11S21646C3_nt3v28Ev
  virtual void  v29(); // _ZN11S21646C3_nt3v29Ev
  virtual void  v30(); // _ZN11S21646C3_nt3v30Ev
  virtual void  v31(); // _ZN11S21646C3_nt3v31Ev
  virtual void  v32(); // _ZN11S21646C3_nt3v32Ev
  virtual void  v33(); // _ZN11S21646C3_nt3v33Ev
  virtual void  v34(); // _ZN11S21646C3_nt3v34Ev
  virtual void  v35(); // _ZN11S21646C3_nt3v35Ev
  virtual void  v36(); // _ZN11S21646C3_nt3v36Ev
  virtual void  v37(); // _ZN11S21646C3_nt3v37Ev
  virtual void  v38(); // _ZN11S21646C3_nt3v38Ev
  virtual void  v39(); // _ZN11S21646C3_nt3v39Ev
  virtual void  v40(); // _ZN11S21646C3_nt3v40Ev
  virtual void  v41(); // _ZN11S21646C3_nt3v41Ev
  virtual void  v42(); // _ZN11S21646C3_nt3v42Ev
  virtual void  v43(); // _ZN11S21646C3_nt3v43Ev
  S21646C3_nt(); // tgen
};
//SIG(-1 S21646C3_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}


 S21646C3_nt ::~S21646C3_nt(){ note_dtor("S21646C3_nt", this);}
void  S21646C3_nt ::v22(){vfunc_called(this, "_ZN11S21646C3_nt3v22Ev");}
void  S21646C3_nt ::v23(){vfunc_called(this, "_ZN11S21646C3_nt3v23Ev");}
void  S21646C3_nt ::v24(){vfunc_called(this, "_ZN11S21646C3_nt3v24Ev");}
void  S21646C3_nt ::v25(){vfunc_called(this, "_ZN11S21646C3_nt3v25Ev");}
void  S21646C3_nt ::v26(){vfunc_called(this, "_ZN11S21646C3_nt3v26Ev");}
void  S21646C3_nt ::v27(){vfunc_called(this, "_ZN11S21646C3_nt3v27Ev");}
void  S21646C3_nt ::v28(){vfunc_called(this, "_ZN11S21646C3_nt3v28Ev");}
void  S21646C3_nt ::v29(){vfunc_called(this, "_ZN11S21646C3_nt3v29Ev");}
void  S21646C3_nt ::v30(){vfunc_called(this, "_ZN11S21646C3_nt3v30Ev");}
void  S21646C3_nt ::v31(){vfunc_called(this, "_ZN11S21646C3_nt3v31Ev");}
void  S21646C3_nt ::v32(){vfunc_called(this, "_ZN11S21646C3_nt3v32Ev");}
void  S21646C3_nt ::v33(){vfunc_called(this, "_ZN11S21646C3_nt3v33Ev");}
void  S21646C3_nt ::v34(){vfunc_called(this, "_ZN11S21646C3_nt3v34Ev");}
void  S21646C3_nt ::v35(){vfunc_called(this, "_ZN11S21646C3_nt3v35Ev");}
void  S21646C3_nt ::v36(){vfunc_called(this, "_ZN11S21646C3_nt3v36Ev");}
void  S21646C3_nt ::v37(){vfunc_called(this, "_ZN11S21646C3_nt3v37Ev");}
void  S21646C3_nt ::v38(){vfunc_called(this, "_ZN11S21646C3_nt3v38Ev");}
void  S21646C3_nt ::v39(){vfunc_called(this, "_ZN11S21646C3_nt3v39Ev");}
void  S21646C3_nt ::v40(){vfunc_called(this, "_ZN11S21646C3_nt3v40Ev");}
void  S21646C3_nt ::v41(){vfunc_called(this, "_ZN11S21646C3_nt3v41Ev");}
void  S21646C3_nt ::v42(){vfunc_called(this, "_ZN11S21646C3_nt3v42Ev");}
void  S21646C3_nt ::v43(){vfunc_called(this, "_ZN11S21646C3_nt3v43Ev");}
S21646C3_nt ::S21646C3_nt(){ note_ctor("S21646C3_nt", this);} // tgen

//skip512 S21646C3_nt

#else // __cplusplus

extern void _ZN11S21646C3_ntC1Ev();
extern void _ZN11S21646C3_ntD1Ev();
Name_Map name_map_S21646C3_nt[] = {
  NSPAIR(_ZN11S21646C3_ntC1Ev),
  NSPAIR(_ZN11S21646C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S21646C3_nt[];
extern void _ZN11S21646C3_ntD1Ev();
extern void _ZN11S21646C3_ntD0Ev();
extern void _ZN11S21646C3_nt3v22Ev();
extern void _ZN11S21646C3_nt3v23Ev();
extern void _ZN11S21646C3_nt3v24Ev();
extern void _ZN11S21646C3_nt3v25Ev();
extern void _ZN11S21646C3_nt3v26Ev();
extern void _ZN11S21646C3_nt3v27Ev();
extern void _ZN11S21646C3_nt3v28Ev();
extern void _ZN11S21646C3_nt3v29Ev();
extern void _ZN11S21646C3_nt3v30Ev();
extern void _ZN11S21646C3_nt3v31Ev();
extern void _ZN11S21646C3_nt3v32Ev();
extern void _ZN11S21646C3_nt3v33Ev();
extern void _ZN11S21646C3_nt3v34Ev();
extern void _ZN11S21646C3_nt3v35Ev();
extern void _ZN11S21646C3_nt3v36Ev();
extern void _ZN11S21646C3_nt3v37Ev();
extern void _ZN11S21646C3_nt3v38Ev();
extern void _ZN11S21646C3_nt3v39Ev();
extern void _ZN11S21646C3_nt3v40Ev();
extern void _ZN11S21646C3_nt3v41Ev();
extern void _ZN11S21646C3_nt3v42Ev();
extern void _ZN11S21646C3_nt3v43Ev();
static  VTBL_ENTRY vtc_S21646C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S21646C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S21646C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v43Ev,
};
extern VTBL_ENTRY _ZTI11S21646C3_nt[];
VTBL_ENTRY *P__ZTI11S21646C3_nt = _ZTI11S21646C3_nt; 
extern  VTBL_ENTRY _ZTV11S21646C3_nt[];
Class_Descriptor cd_S21646C3_nt = {  "S21646C3_nt", // class name
  0,0,//no base classes
  &(vtc_S21646C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S21646C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S21646C3_nt),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21646C6_nt  {
  void *s21646c6f0;
  __tsi64 s21646c6f1;
  int s21646c6f2;
  void *s21646c6f3;
  int s21646c6f4[2];
  void *s21646c6f5;
};
//SIG(-1 S21646C6_nt) C1{ Fp FL Fi Fp Fi[2] Fp}



//skip512 S21646C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21646C7_nt  {
  int s21646c7f0[3];
};
//SIG(-1 S21646C7_nt) C1{ Fi[3]}



//skip512 S21646C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21646C2  : S21646C3_nt {
  int s21646c2f0;
  ::S3618C13_nt s21646c2f1;
  ::S21646C6_nt s21646c2f2;
  int s21646c2f3;
  ::S21646C7_nt s21646c2f4;
  int s21646c2f5[2];
  virtual  ~S21646C2(); // _ZN8S21646C2D1Ev
  virtual void  v1(); // _ZN8S21646C22v1Ev
  virtual void  v2(); // _ZN8S21646C22v2Ev
  virtual void  v3(); // _ZN8S21646C22v3Ev
  virtual void  v4(); // _ZN8S21646C22v4Ev
  virtual void  v5(); // _ZN8S21646C22v5Ev
  virtual void  v6(); // _ZN8S21646C22v6Ev
  virtual void  v7(); // _ZN8S21646C22v7Ev
  virtual void  v8(); // _ZN8S21646C22v8Ev
  virtual void  v9(); // _ZN8S21646C22v9Ev
  virtual void  v10(); // _ZN8S21646C23v10Ev
  virtual void  v11(); // _ZN8S21646C23v11Ev
  virtual void  v12(); // _ZN8S21646C23v12Ev
  virtual void  v13(); // _ZN8S21646C23v13Ev
  virtual void  v14(); // _ZN8S21646C23v14Ev
  virtual void  v15(); // _ZN8S21646C23v15Ev
  virtual void  v16(); // _ZN8S21646C23v16Ev
  virtual void  v17(); // _ZN8S21646C23v17Ev
  virtual void  v18(); // _ZN8S21646C23v18Ev
  virtual void  v19(); // _ZN8S21646C23v19Ev
  virtual void  v20(); // _ZN8S21646C23v20Ev
  virtual void  v21(); // _ZN8S21646C23v21Ev
  S21646C2(); // tgen
};
//SIG(-1 S21646C2) C1{ BC2{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fi FC3{ m FC4{ Fl[4]}} FC5{ Fp FL Fi Fp Fi[2] Fp} Fi FC6{ Fi[3]} Fi[2]}


 S21646C2 ::~S21646C2(){ note_dtor("S21646C2", this);}
void  S21646C2 ::v1(){vfunc_called(this, "_ZN8S21646C22v1Ev");}
void  S21646C2 ::v2(){vfunc_called(this, "_ZN8S21646C22v2Ev");}
void  S21646C2 ::v3(){vfunc_called(this, "_ZN8S21646C22v3Ev");}
void  S21646C2 ::v4(){vfunc_called(this, "_ZN8S21646C22v4Ev");}
void  S21646C2 ::v5(){vfunc_called(this, "_ZN8S21646C22v5Ev");}
void  S21646C2 ::v6(){vfunc_called(this, "_ZN8S21646C22v6Ev");}
void  S21646C2 ::v7(){vfunc_called(this, "_ZN8S21646C22v7Ev");}
void  S21646C2 ::v8(){vfunc_called(this, "_ZN8S21646C22v8Ev");}
void  S21646C2 ::v9(){vfunc_called(this, "_ZN8S21646C22v9Ev");}
void  S21646C2 ::v10(){vfunc_called(this, "_ZN8S21646C23v10Ev");}
void  S21646C2 ::v11(){vfunc_called(this, "_ZN8S21646C23v11Ev");}
void  S21646C2 ::v12(){vfunc_called(this, "_ZN8S21646C23v12Ev");}
void  S21646C2 ::v13(){vfunc_called(this, "_ZN8S21646C23v13Ev");}
void  S21646C2 ::v14(){vfunc_called(this, "_ZN8S21646C23v14Ev");}
void  S21646C2 ::v15(){vfunc_called(this, "_ZN8S21646C23v15Ev");}
void  S21646C2 ::v16(){vfunc_called(this, "_ZN8S21646C23v16Ev");}
void  S21646C2 ::v17(){vfunc_called(this, "_ZN8S21646C23v17Ev");}
void  S21646C2 ::v18(){vfunc_called(this, "_ZN8S21646C23v18Ev");}
void  S21646C2 ::v19(){vfunc_called(this, "_ZN8S21646C23v19Ev");}
void  S21646C2 ::v20(){vfunc_called(this, "_ZN8S21646C23v20Ev");}
void  S21646C2 ::v21(){vfunc_called(this, "_ZN8S21646C23v21Ev");}
S21646C2 ::S21646C2(){ note_ctor("S21646C2", this);} // tgen

static void Test_S21646C2()
{
  extern Class_Descriptor cd_S21646C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S21646C2, buf);
    S21646C2 *dp, &lv = *(dp=new (buf) S21646C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S21646C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21646C2)");
    check_base_class_offset(lv, (S21646C3_nt*), 0, "S21646C2");
    check_field_offset(lv, s21646c2f0, ABISELECT(8,4), "S21646C2.s21646c2f0");
    check_field_offset(lv, s21646c2f1, ABISELECT(16,8), "S21646C2.s21646c2f1");
    check_field_offset(lv, s21646c2f2, ABISELECT(48,24), "S21646C2.s21646c2f2");
    check_field_offset(lv, s21646c2f3, ABISELECT(96,56), "S21646C2.s21646c2f3");
    check_field_offset(lv, s21646c2f4, ABISELECT(100,60), "S21646C2.s21646c2f4");
    check_field_offset(lv, s21646c2f5, ABISELECT(112,72), "S21646C2.s21646c2f5");
    test_class_info(&lv, &cd_S21646C2);
    dp->~S21646C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21646C2(Test_S21646C2, "S21646C2", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN8S21646C2C1Ev();
extern void _ZN8S21646C2D1Ev();
Name_Map name_map_S21646C2[] = {
  NSPAIR(_ZN8S21646C2C1Ev),
  NSPAIR(_ZN8S21646C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21646C3_nt;
extern VTBL_ENTRY _ZTI11S21646C3_nt[];
extern  VTBL_ENTRY _ZTV11S21646C3_nt[];
static Base_Class bases_S21646C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21646C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21646C2[];
extern void _ZN8S21646C2D1Ev();
extern void _ZN8S21646C2D0Ev();
extern void _ZN11S21646C3_nt3v22Ev();
extern void _ZN11S21646C3_nt3v23Ev();
extern void _ZN11S21646C3_nt3v24Ev();
extern void _ZN11S21646C3_nt3v25Ev();
extern void _ZN11S21646C3_nt3v26Ev();
extern void _ZN11S21646C3_nt3v27Ev();
extern void _ZN11S21646C3_nt3v28Ev();
extern void _ZN11S21646C3_nt3v29Ev();
extern void _ZN11S21646C3_nt3v30Ev();
extern void _ZN11S21646C3_nt3v31Ev();
extern void _ZN11S21646C3_nt3v32Ev();
extern void _ZN11S21646C3_nt3v33Ev();
extern void _ZN11S21646C3_nt3v34Ev();
extern void _ZN11S21646C3_nt3v35Ev();
extern void _ZN11S21646C3_nt3v36Ev();
extern void _ZN11S21646C3_nt3v37Ev();
extern void _ZN11S21646C3_nt3v38Ev();
extern void _ZN11S21646C3_nt3v39Ev();
extern void _ZN11S21646C3_nt3v40Ev();
extern void _ZN11S21646C3_nt3v41Ev();
extern void _ZN11S21646C3_nt3v42Ev();
extern void _ZN11S21646C3_nt3v43Ev();
extern void _ZN8S21646C22v1Ev();
extern void _ZN8S21646C22v2Ev();
extern void _ZN8S21646C22v3Ev();
extern void _ZN8S21646C22v4Ev();
extern void _ZN8S21646C22v5Ev();
extern void _ZN8S21646C22v6Ev();
extern void _ZN8S21646C22v7Ev();
extern void _ZN8S21646C22v8Ev();
extern void _ZN8S21646C22v9Ev();
extern void _ZN8S21646C23v10Ev();
extern void _ZN8S21646C23v11Ev();
extern void _ZN8S21646C23v12Ev();
extern void _ZN8S21646C23v13Ev();
extern void _ZN8S21646C23v14Ev();
extern void _ZN8S21646C23v15Ev();
extern void _ZN8S21646C23v16Ev();
extern void _ZN8S21646C23v17Ev();
extern void _ZN8S21646C23v18Ev();
extern void _ZN8S21646C23v19Ev();
extern void _ZN8S21646C23v20Ev();
extern void _ZN8S21646C23v21Ev();
static  VTBL_ENTRY vtc_S21646C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21646C2[0]),
  (VTBL_ENTRY)&_ZN8S21646C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21646C2D0Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S21646C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v2Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v3Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v4Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v5Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v6Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v7Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v8Ev,
  (VTBL_ENTRY)&_ZN8S21646C22v9Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v10Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v11Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v12Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v13Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v14Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v15Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v16Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v17Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21646C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S21646C2[];
extern  VTBL_ENTRY _ZTV8S21646C2[];
Class_Descriptor cd_S21646C2 = {  "S21646C2", // class name
  bases_S21646C2, 1,
  &(vtc_S21646C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI8S21646C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21646C2),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21646C1  {
  int s21646c1f0[2];
  ::S21646C2 s21646c1f1;
  void  mf21646c1(); // _ZN8S21646C19mf21646c1Ev
  virtual  ~S21646C1(); // _ZN8S21646C1D1Ev
  S21646C1(); // tgen
};
//SIG(1 S21646C1) C1{ vd m Fi[2] FC2{ BC3{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fi FC4{ m FC5{ Fl[4]}} FC6{ Fp FL Fi Fp Fi[2] Fp} Fi FC7{ Fi[3]} Fi[2]}}


void  S21646C1 ::mf21646c1(){}
 S21646C1 ::~S21646C1(){ note_dtor("S21646C1", this);}
S21646C1 ::S21646C1(){ note_ctor("S21646C1", this);} // tgen

static void Test_S21646C1()
{
  extern Class_Descriptor cd_S21646C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S21646C1, buf);
    S21646C1 *dp, &lv = *(dp=new (buf) S21646C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S21646C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21646C1)");
    check_field_offset(lv, s21646c1f0, ABISELECT(8,4), "S21646C1.s21646c1f0");
    check_field_offset(lv, s21646c1f1, ABISELECT(16,12), "S21646C1.s21646c1f1");
    test_class_info(&lv, &cd_S21646C1);
    dp->~S21646C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21646C1(Test_S21646C1, "S21646C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S21646C1C1Ev();
extern void _ZN8S21646C1D1Ev();
Name_Map name_map_S21646C1[] = {
  NSPAIR(_ZN8S21646C1C1Ev),
  NSPAIR(_ZN8S21646C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21646C1[];
extern void _ZN8S21646C1D1Ev();
extern void _ZN8S21646C1D0Ev();
static  VTBL_ENTRY vtc_S21646C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21646C1[0]),
  (VTBL_ENTRY)&_ZN8S21646C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21646C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21646C1[];
extern  VTBL_ENTRY _ZTV8S21646C1[];
Class_Descriptor cd_S21646C1 = {  "S21646C1", // class name
  0,0,//no base classes
  &(vtc_S21646C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S21646C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21646C1),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  S7865C10  {
  virtual void  v1(); // _ZN8S7865C102v1Ev
  ~S7865C10(); // tgen
  S7865C10(); // tgen
};
//SIG(-1 S7865C10) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S7865C10C1Ev();
extern void _ZN8S7865C10D1Ev();
Name_Map name_map_S7865C10[] = {
  NSPAIR(_ZN8S7865C10C1Ev),
  NSPAIR(_ZN8S7865C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7865C10[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C10[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
Class_Descriptor cd_S7865C10 = {  "S7865C10", // class name
  0,0,//no base classes
  &(vtc_S7865C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7865C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7865C10),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  S7865C8  : virtual S19894C17_nt , virtual S7865C10 {
  ::S7865C10 s7865c8f0;
  ~S7865C8(); // tgen
  S7865C8(); // tgen
};
//SIG(-1 S7865C8) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S7865C8()
{
  extern Class_Descriptor cd_S7865C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7865C8, buf);
    S7865C8 *dp, &lv = *(dp=new (buf) S7865C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7865C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C8)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S7865C8");
    check_base_class_offset(lv, (S7865C10*), 0, "S7865C8");
    check_field_offset(lv, s7865c8f0, ABISELECT(8,4), "S7865C8.s7865c8f0");
    test_class_info(&lv, &cd_S7865C8);
    dp->~S7865C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C8(Test_S7865C8, "S7865C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7865C8C1Ev();
extern void _ZN7S7865C8D1Ev();
Name_Map name_map_S7865C8[] = {
  NSPAIR(_ZN7S7865C8C1Ev),
  NSPAIR(_ZN7S7865C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
static Base_Class bases_S7865C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7865C10,    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 _ZTI7S7865C8[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV7S7865C8[];
static  VTT_ENTRY vtt_S7865C8[] = {
  {&(_ZTV7S7865C8[5]),  5,6},
  {&(_ZTV7S7865C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
Class_Descriptor cd_S7865C8 = {  "S7865C8", // class name
  bases_S7865C8, 2,
  &(vtc_S7865C8[0]), // expected_vtbl_contents
  &(vtt_S7865C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7865C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7865C8),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7865C8),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  S7865C12  : S7865C8 , S19894C17_nt , S7865C10 {
  virtual  ~S7865C12(); // _ZN8S7865C12D2Ev
  S7865C12(); // tgen
};
//SIG(-1 S7865C12) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S7865C12()
{
  extern Class_Descriptor cd_S7865C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7865C12, buf);
    S7865C12 *dp, &lv = *(dp=new (buf) S7865C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7865C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C12)");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), ABISELECT(24,12), "S7865C12");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*), 0, "S7865C12");
    check_base_class_offset(lv, (S7865C8*), 0, "S7865C12");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S7865C12");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*), ABISELECT(16,8), "S7865C12");
    test_class_info(&lv, &cd_S7865C12);
    dp->~S7865C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C12(Test_S7865C12, "S7865C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7865C12C1Ev();
extern void _ZN8S7865C12D2Ev();
Name_Map name_map_S7865C12[] = {
  NSPAIR(_ZN8S7865C12C1Ev),
  NSPAIR(_ZN8S7865C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
static Base_Class bases_S7865C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C10,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7865C10,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7865C12[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C12[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV8S7865C12[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C12[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C12[] = {
  {&(_ZTV8S7865C12[5]),  5,11},
  {&(_tg__ZTV7S7865C8__8S7865C12[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C12[5]),  5,6},
  {&(_ZTV8S7865C12[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
Class_Descriptor cd_S7865C12 = {  "S7865C12", // class name
  bases_S7865C12, 5,
  &(vtc_S7865C12[0]), // expected_vtbl_contents
  &(vtt_S7865C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7865C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7865C12),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C12),4, //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  S7865C11  : S7865C12 {
  ~S7865C11(); // tgen
  S7865C11(); // tgen
};
//SIG(-1 S7865C11) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S7865C11()
{
  extern Class_Descriptor cd_S7865C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7865C11, buf);
    S7865C11 *dp, &lv = *(dp=new (buf) S7865C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7865C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C11)");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*), ABISELECT(24,12), "S7865C11");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*), 0, "S7865C11");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*), 0, "S7865C11");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*), 0, "S7865C11");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*), ABISELECT(16,8), "S7865C11");
    check_base_class_offset(lv, (S7865C12*), 0, "S7865C11");
    test_class_info(&lv, &cd_S7865C11);
    dp->~S7865C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C11(Test_S7865C11, "S7865C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7865C11C1Ev();
extern void _ZN8S7865C11D1Ev();
Name_Map name_map_S7865C11[] = {
  NSPAIR(_ZN8S7865C11C1Ev),
  NSPAIR(_ZN8S7865C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
static Base_Class bases_S7865C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7865C10,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7865C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7865C11[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C11D1Ev();
extern void _ZN8S7865C11D0Ev();
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV8S7865C11[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C12__8S7865C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C11[] = {
  {&(_ZTV8S7865C11[5]),  5,11},
  {&(_tg__ZTV8S7865C12__8S7865C11[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C12__8S7865C11[5]),  5,6},
  {&(_tg__ZTV7S7865C88S7865C12__8S7865C11[5]),  5,6},
  {&(_tg__ZTV8S7865C12__8S7865C11[5]),  5,8},
  {&(_ZTV8S7865C11[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S7865C11[];
extern  VTBL_ENTRY _ZTV8S7865C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C11[];
Class_Descriptor cd_S7865C11 = {  "S7865C11", // class name
  bases_S7865C11, 6,
  &(vtc_S7865C11[0]), // expected_vtbl_contents
  &(vtt_S7865C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7865C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7865C11),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C11),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  S7865C5  : S19894C6_nt , S19894C34 , virtual S7865C8 , virtual S7865C11 {
  ~S7865C5(); // tgen
  S7865C5(); // tgen
};
//SIG(-1 S7865C5) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S7865C5()
{
  extern Class_Descriptor cd_S7865C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7865C5, buf);
    S7865C5 *dp, &lv = *(dp=new (buf) S7865C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7865C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C5)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S7865C5");
    check_base_class_offset(lv, (S19894C34*), 0, "S7865C5");
    /*is_ambiguous_... S7865C5::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C5");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*)(S7865C11*), 0, "S7865C5");
    /*is_ambiguous_... S7865C5::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), 0, "S7865C5");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*)(S7865C11*), 0, "S7865C5");
    /*is_ambiguous_... S7865C5::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*), ABISELECT(16,8), "S7865C5");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(32,16), "S7865C5");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*)(S7865C11*), ABISELECT(32,16), "S7865C5");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*)(S7865C11*), ABISELECT(48,24), "S7865C5");
    check_base_class_offset(lv, (S7865C12*)(S7865C11*), ABISELECT(32,16), "S7865C5");
    check_base_class_offset(lv, (S7865C11*), ABISELECT(32,16), "S7865C5");
    test_class_info(&lv, &cd_S7865C5);
    dp->~S7865C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C5(Test_S7865C5, "S7865C5", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S7865C5C1Ev();
extern void _ZN7S7865C5D1Ev();
Name_Map name_map_S7865C5[] = {
  NSPAIR(_ZN7S7865C5C1Ev),
  NSPAIR(_ZN7S7865C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C11;
extern VTBL_ENTRY _ZTI8S7865C11[];
extern  VTBL_ENTRY _ZTV8S7865C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C11[];
static Base_Class bases_S7865C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7865C10,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S7865C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C11,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7865C5[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C5D1Ev();
extern void _ZN7S7865C5D0Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7865C5D1Ev,_ZThn16_N7S7865C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7865C5D0Ev,_ZThn16_N7S7865C5D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C5[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV7S7865C5[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__7S7865C5[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C11D1Ev();
extern void _ZN8S7865C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C128S7865C11__7S7865C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C11__7S7865C5[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C5[] = {
  {&(_ZTV7S7865C5[7]),  7,28},
  {&(_ZTV7S7865C5[15]),  15,28},
  {&(_ZTV7S7865C5[7]),  7,28},
  {&(_ZTV7S7865C5[22]),  22,28},
  {&(_ZTV7S7865C5[27]),  27,28},
  {&(_tg__ZTV7S7865C8__7S7865C5[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__7S7865C5[3]),  3,4},
  {&(_tg__ZTV8S7865C11__7S7865C5[5]),  5,8},
  {&(_tg__ZTV8S7865C128S7865C11__7S7865C5[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C5[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C5[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C5[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C11__7S7865C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7865C5[];
extern  VTBL_ENTRY _ZTV7S7865C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C5[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C5D0Ev,_ZThn16_N7S7865C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C5D1Ev,_ZThn16_N7S7865C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C5 = {  "S7865C5", // class name
  bases_S7865C5, 10,
  &(vtc_S7865C5[0]), // expected_vtbl_contents
  &(vtt_S7865C5[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S7865C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7865C5),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7865C5),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C15  : S7865C10 , S19894C6_nt , virtual S7865C8 {
  virtual void  v2(); // _ZN8S7865C152v2Ev
  ~S7865C15(); // tgen
  S7865C15(); // tgen
};
//SIG(-1 S7865C15) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S7865C15()
{
  extern Class_Descriptor cd_S7865C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7865C15, buf);
    S7865C15 *dp, &lv = *(dp=new (buf) S7865C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7865C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C15)");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*), 0, "S7865C15");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S7865C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C15");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*), ABISELECT(16,8), "S7865C15");
    check_base_class_offset(lv, (S7865C8*), ABISELECT(16,8), "S7865C15");
    test_class_info(&lv, &cd_S7865C15);
    dp->~S7865C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C15(Test_S7865C15, "S7865C15", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7865C15C1Ev();
extern void _ZN8S7865C15D1Ev();
Name_Map name_map_S7865C15[] = {
  NSPAIR(_ZN8S7865C15C1Ev),
  NSPAIR(_ZN8S7865C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
static Base_Class bases_S7865C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7865C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S7865C15[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C15[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV8S7865C15[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C15[] = {
  {&(_ZTV8S7865C15[5]),  5,13},
  {&(_ZTV8S7865C15[12]),  12,13},
  {&(_ZTV8S7865C15[12]),  12,13},
  {&(_tg__ZTV7S7865C8__8S7865C15[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C15[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
Class_Descriptor cd_S7865C15 = {  "S7865C15", // class name
  bases_S7865C15, 5,
  &(vtc_S7865C15[0]), // expected_vtbl_contents
  &(vtt_S7865C15[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7865C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7865C15),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C14  : S7865C8 , virtual S19894C6_nt , S7865C15 {
  int s7865c14f0;
  ~S7865C14(); // tgen
  S7865C14(); // tgen
};
//SIG(-1 S7865C14) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S7865C14()
{
  extern Class_Descriptor cd_S7865C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7865C14, buf);
    S7865C14 *dp, &lv = *(dp=new (buf) S7865C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7865C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C14)");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C14");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C14");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), 0, "S7865C14");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), 0, "S7865C14");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*), 0, "S7865C14");
    /*is_ambiguous_... S7865C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S7865C14");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*), ABISELECT(16,8), "S7865C14");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*), ABISELECT(24,12), "S7865C14");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*), ABISELECT(48,24), "S7865C14");
    check_base_class_offset(lv, (S7865C15*), ABISELECT(16,8), "S7865C14");
    check_field_offset(lv, s7865c14f0, ABISELECT(32,16), "S7865C14.s7865c14f0");
    test_class_info(&lv, &cd_S7865C14);
    dp->~S7865C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C14(Test_S7865C14, "S7865C14", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S7865C14C1Ev();
extern void _ZN8S7865C14D1Ev();
Name_Map name_map_S7865C14[] = {
  NSPAIR(_ZN8S7865C14C1Ev),
  NSPAIR(_ZN8S7865C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
static Base_Class bases_S7865C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7865C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7865C10,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7865C8,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7865C15,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7865C14[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C14[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV8S7865C14[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A__8S7865C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15__8S7865C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C15__8S7865C14[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__A1__8S7865C14[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C14[] = {
  {&(_ZTV8S7865C14[7]),  7,21},
  {&(_tg__ZTV7S7865C8__A__8S7865C14[5]),  5,6},
  {&(_tg__ZTV7S7865C8__A__8S7865C14[5]),  5,6},
  {&(_tg__ZTV8S7865C15__8S7865C14[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C15__8S7865C14[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C15__8S7865C14[3]),  3,4},
  {&(_ZTV8S7865C14[7]),  7,21},
  {&(_ZTV8S7865C14[13]),  13,21},
  {&(_ZTV8S7865C14[20]),  20,21},
  {&(_tg__ZTV7S7865C8__A1__8S7865C14[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__A1__8S7865C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7865C14[];
extern  VTBL_ENTRY _ZTV8S7865C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C14[];
Class_Descriptor cd_S7865C14 = {  "S7865C14", // class name
  bases_S7865C14, 8,
  &(vtc_S7865C14[0]), // expected_vtbl_contents
  &(vtt_S7865C14[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S7865C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7865C14),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C14),11, //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  S7865C13  : virtual S7865C8 , S7865C14 , virtual S21216C26_nt , S19894C17_nt , virtual S19894C34 {
  ::S19894C17_nt s7865c13f0;
  virtual  ~S7865C13(); // _ZN8S7865C13D2Ev
  S7865C13(); // tgen
};
//SIG(-1 S7865C13) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S7865C13()
{
  extern Class_Descriptor cd_S7865C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7865C13, buf);
    S7865C13 *dp, &lv = *(dp=new (buf) S7865C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7865C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C13)");
    /*is_ambiguous_... S7865C13::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), ABISELECT(56,32), "S7865C13");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C14*), ABISELECT(56,32), "S7865C13");
    /*is_ambiguous_... S7865C13::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), ABISELECT(40,24), "S7865C13");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C14*), ABISELECT(40,24), "S7865C13");
    /*is_ambiguous_... S7865C13::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*), ABISELECT(40,24), "S7865C13");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*)(S7865C14*), ABISELECT(40,24), "S7865C13");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C14*), 0, "S7865C13");
    /*is_ambiguous_... S7865C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C14*), ABISELECT(56,32), "S7865C13");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*)(S7865C14*), ABISELECT(16,8), "S7865C13");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*)(S7865C14*), ABISELECT(24,12), "S7865C13");
    check_base_class_offset(lv, (S7865C15*)(S7865C14*), ABISELECT(16,8), "S7865C13");
    check_base_class_offset(lv, (S7865C14*), 0, "S7865C13");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(64,36), "S7865C13");
    /*is_ambiguous_... S7865C13::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S7865C13");
    check_base_class_offset(lv, (S19894C34*), 0, "S7865C13");
    check_field_offset(lv, s7865c13f0, ABISELECT(36,20), "S7865C13.s7865c13f0");
    test_class_info(&lv, &cd_S7865C13);
    dp->~S7865C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C13(Test_S7865C13, "S7865C13", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S7865C13C1Ev();
extern void _ZN8S7865C13D2Ev();
Name_Map name_map_S7865C13[] = {
  NSPAIR(_ZN8S7865C13C1Ev),
  NSPAIR(_ZN8S7865C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C14;
extern VTBL_ENTRY _ZTI8S7865C14[];
extern  VTBL_ENTRY _ZTV8S7865C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C14[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S7865C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7865C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7865C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7865C13[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C13D1Ev();
extern void _ZN8S7865C13D0Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7865C13D1Ev,_ZThn36_N8S7865C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7865C13D0Ev,_ZThn36_N8S7865C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7865C13[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7865C13[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C14__8S7865C13[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C14__A1__8S7865C13[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C14__A1__8S7865C13[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C14__8S7865C13[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C158S7865C14__8S7865C13[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C14__8S7865C13[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C14__8S7865C13[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C13[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C13[] = {
  {&(_ZTV8S7865C13[9]),  9,30},
  {&(_tg__ZTV8S7865C14__8S7865C13[7]),  7,8},
  {&(_tg__ZTV7S7865C88S7865C14__A1__8S7865C13[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C14__A1__8S7865C13[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C14__8S7865C13[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C158S7865C14__8S7865C13[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C158S7865C14__8S7865C13[5]),  5,6},
  {&(_tg__ZTV7S7865C8__A1__8S7865C14__8S7865C13[5]),  5,6},
  {&(_tg__ZTV8S7865C15__8S7865C14__8S7865C13[5]),  5,7},
  {&(_tg__ZTV7S7865C8__A1__8S7865C14__8S7865C13[5]),  5,6},
  {&(_ZTV8S7865C13[24]),  24,30},
  {&(_ZTV8S7865C13[24]),  24,30},
  {&(_ZTV8S7865C13[17]),  17,30},
  {&(_ZTV8S7865C13[28]),  28,30},
  {&(_tg__ZTV7S7865C8__8S7865C13[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C13[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S7865C13[];
extern  VTBL_ENTRY _ZTV8S7865C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C13[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7865C13D0Ev,_ZThn36_N8S7865C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7865C13D1Ev,_ZThn36_N8S7865C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C13 = {  "S7865C13", // class name
  bases_S7865C13, 12,
  &(vtc_S7865C13[0]), // expected_vtbl_contents
  &(vtt_S7865C13[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S7865C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7865C13),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C13),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C17  : virtual S7865C12 , virtual S19894C6_nt {
  void *s7865c17f0[9];
  ~S7865C17(); // tgen
  S7865C17(); // tgen
};
//SIG(-1 S7865C17) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S7865C17()
{
  extern Class_Descriptor cd_S7865C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S7865C17, buf);
    S7865C17 *dp, &lv = *(dp=new (buf) S7865C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S7865C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C17)");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*), 0, "S7865C17");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*), 0, "S7865C17");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*), ABISELECT(80,40), "S7865C17");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*), ABISELECT(80,40), "S7865C17");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*), ABISELECT(96,48), "S7865C17");
    check_base_class_offset(lv, (S7865C12*), ABISELECT(80,40), "S7865C17");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S7865C17");
    check_field_offset(lv, s7865c17f0, ABISELECT(8,4), "S7865C17.s7865c17f0");
    test_class_info(&lv, &cd_S7865C17);
    dp->~S7865C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C17(Test_S7865C17, "S7865C17", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S7865C17C1Ev();
extern void _ZN8S7865C17D1Ev();
Name_Map name_map_S7865C17[] = {
  NSPAIR(_ZN8S7865C17C1Ev),
  NSPAIR(_ZN8S7865C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S7865C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7865C10,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7865C17[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C17D1Ev();
extern void _ZN8S7865C17D0Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY vtc_S7865C17[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern VTBL_ENTRY _ZTV8S7865C17[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C17[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C12__8S7865C17[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C12__8S7865C17[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C12__8S7865C17[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C17[] = {
  {&(_ZTV8S7865C17[7]),  7,22},
  {&(_ZTV8S7865C17[16]),  16,22},
  {&(_ZTV8S7865C17[7]),  7,22},
  {&(_ZTV8S7865C17[21]),  21,22},
  {&(_tg__ZTV8S7865C12__8S7865C17[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C12__8S7865C17[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C12__8S7865C17[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C12__8S7865C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7865C17[];
extern  VTBL_ENTRY _ZTV8S7865C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C17[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C17 = {  "S7865C17", // class name
  bases_S7865C17, 7,
  &(vtc_S7865C17[0]), // expected_vtbl_contents
  &(vtt_S7865C17[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S7865C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7865C17),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C17),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  S7865C18  : virtual S7865C8 , virtual S7865C15 {
  ~S7865C18(); // tgen
  S7865C18(); // tgen
};
//SIG(-1 S7865C18) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S7865C18()
{
  extern Class_Descriptor cd_S7865C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7865C18, buf);
    S7865C18 *dp, &lv = *(dp=new (buf) S7865C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7865C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C18)");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C18");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*), 0, "S7865C18");
    check_base_class_offset(lv, (S7865C8*), ABISELECT(8,4), "S7865C18");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*), ABISELECT(8,4), "S7865C18");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*), ABISELECT(24,12), "S7865C18");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*), ABISELECT(32,16), "S7865C18");
    check_base_class_offset(lv, (S7865C15*), ABISELECT(24,12), "S7865C18");
    test_class_info(&lv, &cd_S7865C18);
    dp->~S7865C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C18(Test_S7865C18, "S7865C18", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S7865C18C1Ev();
extern void _ZN8S7865C18D1Ev();
Name_Map name_map_S7865C18[] = {
  NSPAIR(_ZN8S7865C18C1Ev),
  NSPAIR(_ZN8S7865C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
static Base_Class bases_S7865C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7865C10,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7865C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7865C18[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY vtc_S7865C18[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S7865C18[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C18[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__8S7865C18[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C18[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15__8S7865C18[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C15__8S7865C18[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C18[] = {
  {&(_ZTV8S7865C18[7]),  7,23},
  {&(_ZTV8S7865C18[13]),  13,23},
  {&(_ZTV8S7865C18[7]),  7,23},
  {&(_ZTV8S7865C18[21]),  21,23},
  {&(_tg__ZTV7S7865C8__8S7865C18[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__8S7865C18[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C18[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C15__8S7865C18[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C15__8S7865C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7865C18[];
extern  VTBL_ENTRY _ZTV8S7865C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C18[];
Class_Descriptor cd_S7865C18 = {  "S7865C18", // class name
  bases_S7865C18, 6,
  &(vtc_S7865C18[0]), // expected_vtbl_contents
  &(vtt_S7865C18[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S7865C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7865C18),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C18),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C16  : virtual S7865C17 , S19894C17_nt , S7865C18 {
  void *s7865c16f0;
  virtual  ~S7865C16(); // _ZN8S7865C16D2Ev
  S7865C16(); // tgen
};
//SIG(-1 S7865C16) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S7865C16()
{
  extern Class_Descriptor cd_S7865C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S7865C16, buf);
    S7865C16 *dp, &lv = *(dp=new (buf) S7865C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S7865C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C16)");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*), ABISELECT(120,60), "S7865C16");
    /*is_ambiguous_... S7865C16::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), ABISELECT(120,60), "S7865C16");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*), ABISELECT(16,8), "S7865C16");
    /*is_ambiguous_... S7865C16::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), ABISELECT(16,8), "S7865C16");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*), ABISELECT(96,48), "S7865C16");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*), ABISELECT(96,48), "S7865C16");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*), ABISELECT(112,56), "S7865C16");
    check_base_class_offset(lv, (S7865C12*)(S7865C17*), ABISELECT(96,48), "S7865C16");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C17*), ABISELECT(120,60), "S7865C16");
    check_base_class_offset(lv, (S7865C17*), ABISELECT(16,8), "S7865C16");
    /*is_ambiguous_... S7865C16::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S7865C16");
    check_base_class_offset(lv, (S7865C8*)(S7865C18*), ABISELECT(128,64), "S7865C16");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*), ABISELECT(128,64), "S7865C16");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*), ABISELECT(144,72), "S7865C16");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*), ABISELECT(152,76), "S7865C16");
    check_base_class_offset(lv, (S7865C15*)(S7865C18*), ABISELECT(144,72), "S7865C16");
    check_base_class_offset(lv, (S7865C18*), 0, "S7865C16");
    check_field_offset(lv, s7865c16f0, ABISELECT(8,4), "S7865C16.s7865c16f0");
    test_class_info(&lv, &cd_S7865C16);
    dp->~S7865C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C16(Test_S7865C16, "S7865C16", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S7865C16C1Ev();
extern void _ZN8S7865C16D2Ev();
Name_Map name_map_S7865C16[] = {
  NSPAIR(_ZN8S7865C16C1Ev),
  NSPAIR(_ZN8S7865C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C17;
extern VTBL_ENTRY _ZTI8S7865C17[];
extern  VTBL_ENTRY _ZTV8S7865C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C17[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C18;
extern VTBL_ENTRY _ZTI8S7865C18[];
extern  VTBL_ENTRY _ZTV8S7865C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C18[];
static Base_Class bases_S7865C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7865C17,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7865C8,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7865C10,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7865C18,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7865C16[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C16D1Ev();
extern void _ZN8S7865C16D0Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S7865C16D1Ev,_ZThn8_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S7865C16D0Ev,_ZThn8_N8S7865C16D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S7865C16D1Ev,_ZThn48_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S7865C16D0Ev,_ZThn48_N8S7865C16D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY vtc_S7865C16[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S7865C16[];
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C18__8S7865C16[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C18__8S7865C16[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C18__8S7865C16[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C18__8S7865C16[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C17D1Ev();
extern void _ZN8S7865C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C17__8S7865C16[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C17__8S7865C16[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C17__8S7865C16[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C16[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C12__8S7865C16[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C12__8S7865C16[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C12__8S7865C16[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C16[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__A1__8S7865C16[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C16[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15__8S7865C16[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C15__8S7865C16[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C16[] = {
  {&(_ZTV8S7865C16[10]),  10,51},
  {&(_tg__ZTV8S7865C18__8S7865C16[7]),  7,8},
  {&(_tg__ZTV7S7865C8__8S7865C18__8S7865C16[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C18__8S7865C16[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C18__8S7865C16[7]),  7,9},
  {&(_ZTV8S7865C16[21]),  21,51},
  {&(_ZTV8S7865C16[30]),  30,51},
  {&(_ZTV8S7865C16[21]),  21,51},
  {&(_ZTV8S7865C16[35]),  35,51},
  {&(_ZTV8S7865C16[41]),  41,51},
  {&(_ZTV8S7865C16[49]),  49,51},
  {&(_tg__ZTV8S7865C17__8S7865C16[7]),  7,10},
  {&(_tg__ZTV8S7865C12__8S7865C17__8S7865C16[6]),  6,9},
  {&(_tg__ZTV8S7865C17__8S7865C16[7]),  7,10},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C17__8S7865C16[2]),  2,3},
  {&(_tg__ZTV8S7865C12__8S7865C16[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C12__8S7865C16[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C12__8S7865C16[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C12__8S7865C16[3]),  3,4},
  {&(_tg__ZTV7S7865C8__A1__8S7865C16[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__A1__8S7865C16[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C16[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C15__8S7865C16[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C15__8S7865C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7865C16[];
extern  VTBL_ENTRY _ZTV8S7865C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C16[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7865C16D0Ev,_ZThn48_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7865C16D1Ev,_ZThn48_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7865C16D0Ev,_ZThn8_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7865C16D1Ev,_ZThn8_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C16 = {  "S7865C16", // class name
  bases_S7865C16, 14,
  &(vtc_S7865C16[0]), // expected_vtbl_contents
  &(vtt_S7865C16[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S7865C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7865C16),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7865C16),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C3  : virtual S21216C26_nt , virtual S7865C5 , virtual S7865C13 , S7865C16 {
  virtual  ~S7865C3(); // _ZN7S7865C3D2Ev
  S7865C3(); // tgen
};
//SIG(-1 S7865C3) C1{ VBC2{ vd m} VBC3{ BC4{ m Fp} BC5{ m} VBC6{ VBC7{ m} VBC8{ v1} FC8} VBC9{ BC10{ BC6 BC7 BC8 vd}}} VBC11{ VBC6 BC12{ BC6 VBC4 BC13{ BC8 BC4 VBC6 v2} Fi} VBC2 BC7 VBC5 vd FC7} BC14{ VBC15{ VBC10 VBC4 Fp[9]} BC7 BC16{ VBC6 VBC13} vd Fp} vd}


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

static void Test_S7865C3()
{
  extern Class_Descriptor cd_S7865C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S7865C3, buf);
    S7865C3 *dp, &lv = *(dp=new (buf) S7865C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S7865C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C3)");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S7865C3");
    check_base_class_offset(lv, (S21216C26_nt*)(S7865C13*), ABISELECT(16,8), "S7865C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C5*), ABISELECT(32,16), "S7865C3");
    check_base_class_offset(lv, (S19894C34*)(S7865C5*), ABISELECT(24,12), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), ABISELECT(56,28), "S7865C3");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(56,28), "S7865C3");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(56,28), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C12 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*), ABISELECT(56,28), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), ABISELECT(24,12), "S7865C3");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(24,12), "S7865C3");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(24,12), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*), ABISELECT(24,12), "S7865C3");
    /*is_ambiguous_... S7865C5::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C5*), ABISELECT(40,20), "S7865C3");
    /*is_ambiguous_... S7865C13::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C13*), ABISELECT(40,20), "S7865C3");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(40,20), "S7865C3");
    check_base_class_offset(lv, (S7865C8*)(S7865C18*)(S7865C16*), ABISELECT(40,20), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C15 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C15*), ABISELECT(40,20), "S7865C3");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(64,32), "S7865C3");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*)(S7865C11*), ABISELECT(64,32), "S7865C3");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*)(S7865C11*), ABISELECT(80,40), "S7865C3");
    check_base_class_offset(lv, (S7865C12*)(S7865C11*), ABISELECT(64,32), "S7865C3");
    check_base_class_offset(lv, (S7865C11*)(S7865C5*), ABISELECT(64,32), "S7865C3");
    check_base_class_offset(lv, (S7865C5*), ABISELECT(24,12), "S7865C3");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(88,44), "S7865C3");
    /*is_ambiguous_... S7865C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C14*)(S7865C13*), ABISELECT(128,68), "S7865C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C17*), ABISELECT(128,68), "S7865C3");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(104,52), "S7865C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(112,56), "S7865C3");
    check_base_class_offset(lv, (S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(104,52), "S7865C3");
    check_base_class_offset(lv, (S7865C14*)(S7865C13*), ABISELECT(88,44), "S7865C3");
    /*is_ambiguous_... S7865C13::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C13*), ABISELECT(88,44), "S7865C3");
    check_base_class_offset(lv, (S19894C34*)(S7865C13*), 0, "S7865C3");
    check_base_class_offset(lv, (S7865C13*), ABISELECT(88,44), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C12*), ABISELECT(216,112), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C12 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*), ABISELECT(216,112), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*), ABISELECT(232,120), "S7865C3");
    check_base_class_offset(lv, (S7865C12*)(S7865C17*), ABISELECT(216,112), "S7865C3");
    check_base_class_offset(lv, (S7865C17*)(S7865C16*), ABISELECT(136,72), "S7865C3");
    /*is_ambiguous_... S7865C16::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C16*), 0, "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C15 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*), ABISELECT(240,124), "S7865C3");
    /*is_ambiguous_... S7865C3::S7865C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*), ABISELECT(248,128), "S7865C3");
    check_base_class_offset(lv, (S7865C15*)(S7865C18*)(S7865C16*), ABISELECT(240,124), "S7865C3");
    check_base_class_offset(lv, (S7865C18*)(S7865C16*), 0, "S7865C3");
    check_base_class_offset(lv, (S7865C16*), 0, "S7865C3");
    test_class_info(&lv, &cd_S7865C3);
    dp->~S7865C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C3(Test_S7865C3, "S7865C3", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN7S7865C3C1Ev();
extern void _ZN7S7865C3D2Ev();
Name_Map name_map_S7865C3[] = {
  NSPAIR(_ZN7S7865C3C1Ev),
  NSPAIR(_ZN7S7865C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C11;
extern VTBL_ENTRY _ZTI8S7865C11[];
extern  VTBL_ENTRY _ZTV8S7865C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C11[];
extern Class_Descriptor cd_S7865C5;
extern VTBL_ENTRY _ZTI7S7865C5[];
extern  VTBL_ENTRY _ZTV7S7865C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C5[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C14;
extern VTBL_ENTRY _ZTI8S7865C14[];
extern  VTBL_ENTRY _ZTV8S7865C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C14[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7865C13;
extern VTBL_ENTRY _ZTI8S7865C13[];
extern  VTBL_ENTRY _ZTV8S7865C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C13[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C17;
extern VTBL_ENTRY _ZTI8S7865C17[];
extern  VTBL_ENTRY _ZTV8S7865C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C17[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C18;
extern VTBL_ENTRY _ZTI8S7865C18[];
extern  VTBL_ENTRY _ZTV8S7865C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C18[];
extern Class_Descriptor cd_S7865C16;
extern VTBL_ENTRY _ZTI8S7865C16[];
extern  VTBL_ENTRY _ZTV8S7865C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C16[];
static Base_Class bases_S7865C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(24,12), //bcp->offset
    -1, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(40,20), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(80,40), //bcp->offset
    49, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7865C11,    ABISELECT(64,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7865C5,    ABISELECT(24,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7865C8,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(104,52), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7865C14,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7865C13,    ABISELECT(88,44), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7865C8,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(232,120), //bcp->offset
    93, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(216,112), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7865C17,    ABISELECT(136,72), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(240,124), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7865C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7865C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7865C3[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C3D1Ev();
extern void _ZN7S7865C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7865C3D1Ev,_ZThn8_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7865C3D0Ev,_ZThn8_N7S7865C3D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7865C3D1Ev,_ZThn12_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7865C3D0Ev,_ZThn12_N7S7865C3D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7865C3D1Ev,_ZThn32_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7865C3D0Ev,_ZThn32_N7S7865C3D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7865C3D1Ev,_ZThn44_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7865C3D0Ev,_ZThn44_N7S7865C3D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7865C3D1Ev,_ZThn72_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7865C3D0Ev,_ZThn72_N7S7865C3D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7865C3D1Ev,_ZThn112_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7865C3D0Ev,_ZThn112_N7S7865C3D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY vtc_S7865C3[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern VTBL_ENTRY _ZTV7S7865C3[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C16D1Ev();
extern void _ZN8S7865C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C16__7S7865C3[] = {
  ABISELECT(128,68),
  ABISELECT(216,112),
  ABISELECT(136,72),
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C188S7865C16__7S7865C3[] = {
  ABISELECT(240,124),
  ABISELECT(24,12),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C188S7865C16__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C188S7865C16__7S7865C3[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C188S7865C16__7S7865C3[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn136_N8S7865C16D1Ev,_ZThn72_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn136_N8S7865C16D0Ev,_ZThn72_N8S7865C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C17__8S7865C16__7S7865C3[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn216_N8S7865C16D1Ev,_ZThn112_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn216_N8S7865C16D0Ev,_ZThn112_N8S7865C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C16__7S7865C3[] = {
  ABISELECT(-216,-112),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C16__7S7865C3[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C16__7S7865C3[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C16__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C16__7S7865C3[] = {
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C5D1Ev();
extern void _ZN7S7865C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C5__7S7865C3[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C5__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7865C5D1Ev,_ZThn20_N7S7865C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7865C5D0Ev,_ZThn20_N7S7865C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C5__7S7865C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C5__7S7865C3[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__7S7865C3[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C11D1Ev();
extern void _ZN8S7865C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C128S7865C11__7S7865C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C3[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C3[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C11__7S7865C3[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C13D1Ev();
extern void _ZN8S7865C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C13__7S7865C3[] = {
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C148S7865C13__7S7865C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,24),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C148S7865C13__A2__7S7865C3[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C148S7865C13__A2__7S7865C3[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C148S7865C13__7S7865C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C158S7865C148S7865C13__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C158S7865C148S7865C13__7S7865C3[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C148S7865C13__7S7865C3[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C148S7865C13__7S7865C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C148S7865C13__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C13__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C13__7S7865C3[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C14__8S7865C13__7S7865C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S7865C13__7S7865C3[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C17D1Ev();
extern void _ZN8S7865C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C17__7S7865C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  ABISELECT(80,40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C17__7S7865C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C17__7S7865C3[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C17__7S7865C3[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C12__A1__7S7865C3[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C12__A3__7S7865C3[] = {
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C12__A3__7S7865C3[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C12__A1__7S7865C3[] = {
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__A1__7S7865C3[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15__A1__7S7865C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C15__A1__7S7865C3[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C3[] = {
  {&(_ZTV7S7865C3[15]),  15,105},
  {&(_tg__ZTV8S7865C16__7S7865C3[10]),  10,13},
  {&(_tg__ZTV8S7865C188S7865C16__7S7865C3[7]),  7,8},
  {&(_tg__ZTV7S7865C8__8S7865C188S7865C16__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C188S7865C16__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C188S7865C16__7S7865C3[7]),  7,9},
  {&(_tg__ZTV8S7865C17__8S7865C16__7S7865C3[8]),  8,11},
  {&(_tg__ZTV8S7865C12__8S7865C16__7S7865C3[6]),  6,9},
  {&(_tg__ZTV8S7865C10__8S7865C16__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C16__7S7865C3[2]),  2,3},
  {&(_tg__ZTV7S7865C8__A1__8S7865C16__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C15__8S7865C16__7S7865C3[7]),  7,9},
  {&(_ZTV7S7865C3[21]),  21,105},
  {&(_ZTV7S7865C3[31]),  31,105},
  {&(_ZTV7S7865C3[39]),  39,105},
  {&(_ZTV7S7865C3[31]),  31,105},
  {&(_ZTV7S7865C3[46]),  46,105},
  {&(_ZTV7S7865C3[51]),  51,105},
  {&(_ZTV7S7865C3[63]),  63,105},
  {&(_ZTV7S7865C3[71]),  71,105},
  {&(_ZTV7S7865C3[81]),  81,105},
  {&(_ZTV7S7865C3[90]),  90,105},
  {&(_ZTV7S7865C3[95]),  95,105},
  {&(_ZTV7S7865C3[103]),  103,105},
  {&(_tg__ZTV7S7865C5__7S7865C3[7]),  7,10},
  {&(_tg__ZTV7S7865C8__7S7865C5__7S7865C3[5]),  5,6},
  {&(_tg__ZTV7S7865C5__7S7865C3[7]),  7,10},
  {&(_tg__ZTV8S7865C11__7S7865C5__7S7865C3[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C5__7S7865C3[2]),  2,3},
  {&(_tg__ZTV7S7865C8__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C11__7S7865C3[5]),  5,8},
  {&(_tg__ZTV8S7865C128S7865C11__7S7865C3[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C11__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C13__7S7865C3[9]),  9,12},
  {&(_tg__ZTV8S7865C148S7865C13__7S7865C3[7]),  7,8},
  {&(_tg__ZTV7S7865C88S7865C148S7865C13__A2__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C148S7865C13__A2__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C148S7865C13__7S7865C3[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C158S7865C148S7865C13__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C158S7865C148S7865C13__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C148S7865C13__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C148S7865C13__7S7865C3[5]),  5,7},
  {&(_tg__ZTV7S7865C8__A1__8S7865C148S7865C13__7S7865C3[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C13__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C13__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C14__8S7865C13__7S7865C3[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S7865C13__7S7865C3[3]),  3,5},
  {&(_tg__ZTV8S7865C17__7S7865C3[7]),  7,10},
  {&(_tg__ZTV8S7865C12__8S7865C17__7S7865C3[6]),  6,9},
  {&(_tg__ZTV8S7865C10__8S7865C17__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C17__7S7865C3[2]),  2,3},
  {&(_tg__ZTV8S7865C12__A1__7S7865C3[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C12__A3__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C12__A3__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C12__A1__7S7865C3[3]),  3,4},
  {&(_tg__ZTV8S7865C15__A1__7S7865C3[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C15__A1__7S7865C3[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C15__A1__7S7865C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7865C3[];
extern  VTBL_ENTRY _ZTV7S7865C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C3[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7865C5D0Ev,_ZThn20_N7S7865C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7865C5D1Ev,_ZThn20_N7S7865C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7865C16D0Ev,_ZThn112_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7865C16D1Ev,_ZThn112_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7865C16D0Ev,_ZThn72_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7865C16D1Ev,_ZThn72_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7865C3D0Ev,_ZThn44_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7865C3D1Ev,_ZThn44_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7865C3D0Ev,_ZThn112_N7S7865C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7865C3D0Ev,_ZThn32_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7865C3D1Ev,_ZThn112_N7S7865C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7865C3D1Ev,_ZThn32_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7865C3D0Ev,_ZThn72_N7S7865C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7865C3D0Ev,_ZThn12_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7865C3D1Ev,_ZThn72_N7S7865C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7865C3D1Ev,_ZThn12_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C3D0Ev,_ZThn8_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C3D1Ev,_ZThn8_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C3 = {  "S7865C3", // class name
  bases_S7865C3, 32,
  &(vtc_S7865C3[0]), // expected_vtbl_contents
  &(vtt_S7865C3[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI7S7865C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7865C3),105, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7865C3),62, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C2  : virtual S7865C3 {
  virtual  ~S7865C2(); // _ZN7S7865C2D2Ev
  S7865C2(); // tgen
};
//SIG(-1 S7865C2) C1{ VBC2{ VBC3{ vd m} VBC4{ BC5{ m Fp} BC6{ m} VBC7{ VBC8{ m} VBC9{ v1} FC9} VBC10{ BC11{ BC7 BC8 BC9 vd}}} VBC12{ VBC7 BC13{ BC7 VBC5 BC14{ BC9 BC5 VBC7 v2} Fi} VBC3 BC8 VBC6 vd FC8} BC15{ VBC16{ VBC11 VBC5 Fp[9]} BC8 BC17{ VBC7 VBC14} vd Fp} vd} vd}


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

static void Test_S7865C2()
{
  extern Class_Descriptor cd_S7865C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,33)];
    init_test(&cd_S7865C2, buf);
    S7865C2 *dp, &lv = *(dp=new (buf) S7865C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,128), "sizeof(S7865C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C2)");
    check_base_class_offset(lv, (S21216C26_nt*)(S7865C3*), 0, "S7865C2");
    check_base_class_offset(lv, (S21216C26_nt*)(S7865C13*), 0, "S7865C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C5*), ABISELECT(32,16), "S7865C2");
    check_base_class_offset(lv, (S19894C34*)(S7865C5*), ABISELECT(24,12), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*)(S7865C11*), 0, "S7865C2");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C14*)(S7865C13*), 0, "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C12 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*), 0, "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), ABISELECT(24,12), "S7865C2");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(24,12), "S7865C2");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(24,12), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*), ABISELECT(24,12), "S7865C2");
    /*is_ambiguous_... S7865C5::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C5*), ABISELECT(40,20), "S7865C2");
    /*is_ambiguous_... S7865C13::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C13*), ABISELECT(40,20), "S7865C2");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(40,20), "S7865C2");
    check_base_class_offset(lv, (S7865C8*)(S7865C18*)(S7865C16*)(S7865C3*), ABISELECT(40,20), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C15 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C15*), ABISELECT(40,20), "S7865C2");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(56,28), "S7865C2");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*)(S7865C11*), ABISELECT(56,28), "S7865C2");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*)(S7865C11*), ABISELECT(72,36), "S7865C2");
    check_base_class_offset(lv, (S7865C12*)(S7865C11*), ABISELECT(56,28), "S7865C2");
    check_base_class_offset(lv, (S7865C11*)(S7865C5*), ABISELECT(56,28), "S7865C2");
    check_base_class_offset(lv, (S7865C5*)(S7865C3*), ABISELECT(24,12), "S7865C2");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(80,40), "S7865C2");
    /*is_ambiguous_... S7865C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C14*)(S7865C13*), ABISELECT(120,64), "S7865C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C17*), ABISELECT(120,64), "S7865C2");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(96,48), "S7865C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(104,52), "S7865C2");
    check_base_class_offset(lv, (S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(96,48), "S7865C2");
    check_base_class_offset(lv, (S7865C14*)(S7865C13*), ABISELECT(80,40), "S7865C2");
    /*is_ambiguous_... S7865C13::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C13*), ABISELECT(80,40), "S7865C2");
    check_base_class_offset(lv, (S19894C34*)(S7865C13*), 0, "S7865C2");
    check_base_class_offset(lv, (S7865C13*)(S7865C3*), ABISELECT(80,40), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C12*), ABISELECT(208,108), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C12 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*), ABISELECT(208,108), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*), ABISELECT(224,116), "S7865C2");
    check_base_class_offset(lv, (S7865C12*)(S7865C17*), ABISELECT(208,108), "S7865C2");
    check_base_class_offset(lv, (S7865C17*)(S7865C16*)(S7865C3*), ABISELECT(128,68), "S7865C2");
    /*is_ambiguous_... S7865C16::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C16*)(S7865C3*), ABISELECT(8,4), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C15 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*), ABISELECT(232,120), "S7865C2");
    /*is_ambiguous_... S7865C2::S7865C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*), ABISELECT(240,124), "S7865C2");
    check_base_class_offset(lv, (S7865C15*)(S7865C18*)(S7865C16*)(S7865C3*), ABISELECT(232,120), "S7865C2");
    check_base_class_offset(lv, (S7865C18*)(S7865C16*)(S7865C3*), ABISELECT(8,4), "S7865C2");
    check_base_class_offset(lv, (S7865C16*)(S7865C3*), ABISELECT(8,4), "S7865C2");
    check_base_class_offset(lv, (S7865C3*), ABISELECT(8,4), "S7865C2");
    test_class_info(&lv, &cd_S7865C2);
    dp->~S7865C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C2(Test_S7865C2, "S7865C2", ABISELECT(248,128));

#else // __cplusplus

extern void _ZN7S7865C2C1Ev();
extern void _ZN7S7865C2D2Ev();
Name_Map name_map_S7865C2[] = {
  NSPAIR(_ZN7S7865C2C1Ev),
  NSPAIR(_ZN7S7865C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C11;
extern VTBL_ENTRY _ZTI8S7865C11[];
extern  VTBL_ENTRY _ZTV8S7865C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C11[];
extern Class_Descriptor cd_S7865C5;
extern VTBL_ENTRY _ZTI7S7865C5[];
extern  VTBL_ENTRY _ZTV7S7865C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C5[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C14;
extern VTBL_ENTRY _ZTI8S7865C14[];
extern  VTBL_ENTRY _ZTV8S7865C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C14[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7865C13;
extern VTBL_ENTRY _ZTI8S7865C13[];
extern  VTBL_ENTRY _ZTV8S7865C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C13[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C17;
extern VTBL_ENTRY _ZTI8S7865C17[];
extern  VTBL_ENTRY _ZTV8S7865C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C17[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C18;
extern VTBL_ENTRY _ZTI8S7865C18[];
extern  VTBL_ENTRY _ZTV8S7865C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C18[];
extern Class_Descriptor cd_S7865C16;
extern VTBL_ENTRY _ZTI8S7865C16[];
extern  VTBL_ENTRY _ZTV8S7865C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C16[];
extern Class_Descriptor cd_S7865C3;
extern VTBL_ENTRY _ZTI7S7865C3[];
extern  VTBL_ENTRY _ZTV7S7865C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C3[];
static Base_Class bases_S7865C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(40,20), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(72,36), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7865C11,    ABISELECT(56,28), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7865C5,    ABISELECT(24,12), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7865C10,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(96,48), //bcp->offset
    80, //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
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7865C14,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7865C13,    ABISELECT(80,40), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(224,116), //bcp->offset
    107, //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
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(208,108), //bcp->offset
    98, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7865C17,    ABISELECT(128,68), //bcp->offset
    87, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(232,120), //bcp->offset
    110, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7865C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7865C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //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
    32, //immediately_derived
  0, 0},
  {&cd_S7865C3,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7865C2[];
extern void _ZN7S7865C2D1Ev();
extern void _ZN7S7865C2D0Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n128_N7S7865C2D1Ev,_ZTv0_n64_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7865C2D1Ev,_ZThn4_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7865C2D0Ev,_ZTv0_n64_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7865C2D0Ev,_ZThn4_N7S7865C2D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7865C2D1Ev,_ZThn12_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7865C2D0Ev,_ZThn12_N7S7865C2D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7865C2D1Ev,_ZThn28_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7865C2D0Ev,_ZThn28_N7S7865C2D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7865C2D1Ev,_ZTv0_n44_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7865C2D1Ev,_ZThn40_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7865C2D0Ev,_ZTv0_n44_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7865C2D0Ev,_ZThn40_N7S7865C2D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S7865C2D1Ev,_ZThn68_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S7865C2D0Ev,_ZThn68_N7S7865C2D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S7865C2D1Ev,_ZThn108_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S7865C2D0Ev,_ZThn108_N7S7865C2D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY vtc_S7865C2[] = {
  ABISELECT(232,120),
  ABISELECT(208,108),
  ABISELECT(128,68),
  0,
  ABISELECT(120,64),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN7S7865C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7865C2D1Ev,_ZTv0_n64_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7865C2D0Ev,_ZTv0_n64_N7S7865C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  0,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C2D1Ev,_ZTv0_n44_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C2D0Ev,_ZTv0_n44_N7S7865C2D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
  ABISELECT(-128,-68),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-232,-120),
  ABISELECT(-192,-100),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern VTBL_ENTRY _ZTV7S7865C2[];
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C3D1Ev();
extern void _ZN7S7865C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C3__7S7865C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C3D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C16D1Ev();
extern void _ZN8S7865C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C188S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C188S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C188S7865C167S7865C3__7S7865C2[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C188S7865C167S7865C3__7S7865C2[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-232,-120),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn120_N8S7865C16D1Ev,_ZThn64_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn120_N8S7865C16D0Ev,_ZThn64_N8S7865C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C17__8S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn200_N8S7865C16D1Ev,_ZThn104_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn200_N8S7865C16D0Ev,_ZThn104_N8S7865C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C167S7865C3__7S7865C2[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C167S7865C3__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C167S7865C3__7S7865C2[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-232,-120),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S7865C3__7S7865C2[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7865C3D1Ev,_ZThn8_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7865C3D0Ev,_ZThn8_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7865C5__7S7865C3__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C3__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7865C3D1Ev,_ZThn24_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7865C3D0Ev,_ZThn24_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C3__7S7865C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C3__7S7865C2[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7865C3D1Ev,_ZThn36_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7865C3D0Ev,_ZThn36_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C13__7S7865C3__7S7865C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C148S7865C13__7S7865C3__7S7865C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7865C3D1Ev,_ZThn64_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7865C3D0Ev,_ZThn64_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C17__7S7865C3__7S7865C2[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn200_N7S7865C3D1Ev,_ZThn104_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn200_N7S7865C3D0Ev,_ZThn104_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__A1__7S7865C3__7S7865C2[] = {
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A3__7S7865C3__7S7865C2[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__A1__7S7865C3__7S7865C2[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-232,-120),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C5D1Ev();
extern void _ZN7S7865C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C5__7S7865C2[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C5__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7865C5D1Ev,_ZThn16_N7S7865C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7865C5D0Ev,_ZThn16_N7S7865C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C5__7S7865C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C5__7S7865C2[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__7S7865C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C11D1Ev();
extern void _ZN8S7865C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C128S7865C11__7S7865C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C11__7S7865C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C13D1Ev();
extern void _ZN8S7865C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C13__7S7865C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C148S7865C13__7S7865C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C148S7865C13__A2__7S7865C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C148S7865C13__A2__7S7865C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C148S7865C13__7S7865C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C158S7865C148S7865C13__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C158S7865C148S7865C13__7S7865C2[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C148S7865C13__7S7865C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C148S7865C13__7S7865C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C148S7865C13__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C13__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C13__7S7865C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C14__8S7865C13__7S7865C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-96,-48),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S7865C13__7S7865C2[] = {
  ABISELECT(80,40),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C17D1Ev();
extern void _ZN8S7865C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C17__7S7865C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C17__7S7865C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C17__7S7865C2[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C17__7S7865C2[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C12__A1__7S7865C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C12__A3__7S7865C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-208,-108),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C12__A3__7S7865C2[] = {
  0,
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C12__A1__7S7865C2[] = {
  0,
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__A1__7S7865C2[] = {
  ABISELECT(-208,-108),
  ABISELECT(-232,-120),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15__A1__7S7865C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C15__A1__7S7865C2[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C2[] = {
  {&(_ZTV7S7865C2[16]),  16,119},
  {&(_ZTV7S7865C2[34]),  34,119},
  {&(_ZTV7S7865C2[16]),  16,119},
  {&(_ZTV7S7865C2[45]),  45,119},
  {&(_ZTV7S7865C2[53]),  53,119},
  {&(_ZTV7S7865C2[45]),  45,119},
  {&(_ZTV7S7865C2[60]),  60,119},
  {&(_ZTV7S7865C2[65]),  65,119},
  {&(_ZTV7S7865C2[77]),  77,119},
  {&(_ZTV7S7865C2[85]),  85,119},
  {&(_ZTV7S7865C2[95]),  95,119},
  {&(_ZTV7S7865C2[104]),  104,119},
  {&(_ZTV7S7865C2[109]),  109,119},
  {&(_ZTV7S7865C2[117]),  117,119},
  {&(_tg__ZTV7S7865C3__7S7865C2[15]),  15,18},
  {&(_tg__ZTV8S7865C167S7865C3__7S7865C2[10]),  10,13},
  {&(_tg__ZTV8S7865C188S7865C167S7865C3__7S7865C2[7]),  7,8},
  {&(_tg__ZTV7S7865C8__8S7865C188S7865C167S7865C3__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C188S7865C167S7865C3__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C188S7865C167S7865C3__7S7865C2[7]),  7,9},
  {&(_tg__ZTV8S7865C17__8S7865C167S7865C3__7S7865C2[8]),  8,11},
  {&(_tg__ZTV8S7865C12__8S7865C167S7865C3__7S7865C2[6]),  6,9},
  {&(_tg__ZTV8S7865C10__8S7865C167S7865C3__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C167S7865C3__7S7865C2[2]),  2,3},
  {&(_tg__ZTV7S7865C8__A1__8S7865C167S7865C3__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C15__8S7865C167S7865C3__7S7865C2[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__7S7865C3__7S7865C2[3]),  3,5},
  {&(_tg__ZTV7S7865C5__7S7865C3__7S7865C2[8]),  8,11},
  {&(_tg__ZTV7S7865C8__7S7865C3__7S7865C2[5]),  5,6},
  {&(_tg__ZTV7S7865C5__7S7865C3__7S7865C2[8]),  8,11},
  {&(_tg__ZTV8S7865C11__7S7865C3__7S7865C2[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C3__7S7865C2[2]),  2,3},
  {&(_tg__ZTV8S7865C13__7S7865C3__7S7865C2[11]),  11,14},
  {&(_tg__ZTV8S7865C158S7865C148S7865C13__7S7865C3__7S7865C2[5]),  5,7},
  {&(_tg__ZTV8S7865C17__7S7865C3__7S7865C2[8]),  8,11},
  {&(_tg__ZTV8S7865C12__A1__7S7865C3__7S7865C2[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C12__A3__7S7865C3__7S7865C2[2]),  2,3},
  {&(_tg__ZTV8S7865C15__A1__7S7865C3__7S7865C2[7]),  7,9},
  {&(_tg__ZTV7S7865C5__7S7865C2[7]),  7,10},
  {&(_tg__ZTV7S7865C8__7S7865C5__7S7865C2[5]),  5,6},
  {&(_tg__ZTV7S7865C5__7S7865C2[7]),  7,10},
  {&(_tg__ZTV8S7865C11__7S7865C5__7S7865C2[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C5__7S7865C2[2]),  2,3},
  {&(_tg__ZTV7S7865C8__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C11__7S7865C2[5]),  5,8},
  {&(_tg__ZTV8S7865C128S7865C11__7S7865C2[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C11__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C13__7S7865C2[9]),  9,12},
  {&(_tg__ZTV8S7865C148S7865C13__7S7865C2[7]),  7,8},
  {&(_tg__ZTV7S7865C88S7865C148S7865C13__A2__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C148S7865C13__A2__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C148S7865C13__7S7865C2[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C158S7865C148S7865C13__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C158S7865C148S7865C13__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C148S7865C13__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C148S7865C13__7S7865C2[5]),  5,7},
  {&(_tg__ZTV7S7865C8__A1__8S7865C148S7865C13__7S7865C2[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C13__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C13__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C14__8S7865C13__7S7865C2[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S7865C13__7S7865C2[3]),  3,5},
  {&(_tg__ZTV8S7865C17__7S7865C2[7]),  7,10},
  {&(_tg__ZTV8S7865C12__8S7865C17__7S7865C2[6]),  6,9},
  {&(_tg__ZTV8S7865C10__8S7865C17__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C17__7S7865C2[2]),  2,3},
  {&(_tg__ZTV8S7865C12__A1__7S7865C2[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C12__A3__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C12__A3__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C12__A1__7S7865C2[3]),  3,4},
  {&(_tg__ZTV8S7865C15__A1__7S7865C2[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C15__A1__7S7865C2[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C15__A1__7S7865C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7865C2[];
extern  VTBL_ENTRY _ZTV7S7865C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C2[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C5D0Ev,_ZThn16_N7S7865C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C5D1Ev,_ZThn16_N7S7865C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7865C3D0Ev,_ZThn36_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7865C3D1Ev,_ZThn36_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7865C3D0Ev,_ZThn104_N7S7865C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7865C3D0Ev,_ZThn24_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7865C3D1Ev,_ZThn104_N7S7865C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7865C3D1Ev,_ZThn24_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7865C3D0Ev,_ZThn64_N7S7865C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C3D0Ev,_ZThn8_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7865C3D1Ev,_ZThn64_N7S7865C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C3D1Ev,_ZThn8_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7865C16D0Ev,_ZThn104_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7865C16D1Ev,_ZThn104_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7865C16D0Ev,_ZThn64_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7865C16D1Ev,_ZThn64_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C2D0Ev,_ZTv0_n44_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7865C2D0Ev,_ZThn40_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C2D1Ev,_ZTv0_n44_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7865C2D1Ev,_ZThn40_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7865C2D0Ev,_ZThn108_N7S7865C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7865C2D0Ev,_ZThn28_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7865C2D1Ev,_ZThn108_N7S7865C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7865C2D1Ev,_ZThn28_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7865C2D0Ev,_ZThn68_N7S7865C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7865C2D0Ev,_ZThn12_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7865C2D1Ev,_ZThn68_N7S7865C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7865C2D1Ev,_ZThn12_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7865C2D0Ev,_ZTv0_n64_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7865C2D0Ev,_ZThn4_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7865C2D1Ev,_ZTv0_n64_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7865C2D1Ev,_ZThn4_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C2 = {  "S7865C2", // class name
  bases_S7865C2, 33,
  &(vtc_S7865C2[0]), // expected_vtbl_contents
  &(vtt_S7865C2[0]), // expected_vtt_contents
  ABISELECT(248,128), // object size
  NSPAIRA(_ZTI7S7865C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7865C2),119, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7865C2),76, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7865C1  : S7865C2 , S3619C26 , virtual S3619C16 {
  ::S3619C5_nt s7865c1f0;
  virtual  ~S7865C1(); // _ZN7S7865C1D2Ev
  S7865C1(); // tgen
};
//SIG(1 S7865C1) C1{ BC2{ VBC3{ VBC4{ vd m} VBC5{ BC6{ m Fp} BC7{ m} VBC8{ VBC9{ m} VBC10{ v1} FC10} VBC11{ BC12{ BC8 BC9 BC10 vd}}} VBC13{ VBC8 BC14{ BC8 VBC6 BC15{ BC10 BC6 VBC8 v2} Fi} VBC4 BC9 VBC7 vd FC9} BC16{ VBC17{ VBC12 VBC6 Fp[9]} BC9 BC18{ VBC8 VBC15} vd Fp} vd} vd} BC19{ m} VBC20{ m} vd FC21{ m}}


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

static void Test_S7865C1()
{
  extern Class_Descriptor cd_S7865C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S7865C1, buf);
    S7865C1 *dp, &lv = *(dp=new (buf) S7865C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S7865C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7865C1)");
    check_base_class_offset(lv, (S21216C26_nt*)(S7865C3*), 0, "S7865C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S7865C13*), 0, "S7865C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C5*), ABISELECT(40,20), "S7865C1");
    check_base_class_offset(lv, (S19894C34*)(S7865C5*), ABISELECT(32,16), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*), 0, "S7865C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*)(S7865C11*), 0, "S7865C1");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C14*)(S7865C13*), 0, "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C12 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C8*)(S7865C12*), 0, "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*), ABISELECT(32,16), "S7865C1");
    check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(32,16), "S7865C1");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(32,16), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C8*)(S7865C12*), ABISELECT(32,16), "S7865C1");
    /*is_ambiguous_... S7865C5::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C5*), ABISELECT(48,24), "S7865C1");
    /*is_ambiguous_... S7865C13::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C13*), ABISELECT(48,24), "S7865C1");
    check_base_class_offset(lv, (S7865C8*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(48,24), "S7865C1");
    check_base_class_offset(lv, (S7865C8*)(S7865C18*)(S7865C16*)(S7865C3*), ABISELECT(48,24), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C15 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C15*), ABISELECT(48,24), "S7865C1");
    check_base_class_offset(lv, (S7865C8*)(S7865C12*)(S7865C11*), ABISELECT(64,32), "S7865C1");
    /*is_ambiguous_... S7865C12::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*)(S7865C11*), ABISELECT(64,32), "S7865C1");
    /*is_ambiguous_... S7865C12::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*)(S7865C11*), ABISELECT(80,40), "S7865C1");
    check_base_class_offset(lv, (S7865C12*)(S7865C11*), ABISELECT(64,32), "S7865C1");
    check_base_class_offset(lv, (S7865C11*)(S7865C5*), ABISELECT(64,32), "S7865C1");
    check_base_class_offset(lv, (S7865C5*)(S7865C3*), ABISELECT(32,16), "S7865C1");
    /*is_ambiguous_... S7865C14::S7865C8 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C14*)(S7865C13*), ABISELECT(88,44), "S7865C1");
    /*is_ambiguous_... S7865C14::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C14*)(S7865C13*), ABISELECT(128,68), "S7865C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C17*), ABISELECT(128,68), "S7865C1");
    /*is_ambiguous_... S7865C15::S7865C10 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(104,52), "S7865C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(112,56), "S7865C1");
    check_base_class_offset(lv, (S7865C15*)(S7865C14*)(S7865C13*), ABISELECT(104,52), "S7865C1");
    check_base_class_offset(lv, (S7865C14*)(S7865C13*), ABISELECT(88,44), "S7865C1");
    /*is_ambiguous_... S7865C13::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C13*), ABISELECT(88,44), "S7865C1");
    check_base_class_offset(lv, (S19894C34*)(S7865C13*), 0, "S7865C1");
    check_base_class_offset(lv, (S7865C13*)(S7865C3*), ABISELECT(88,44), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C8*)(S7865C12*), ABISELECT(216,112), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C12 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C12*), ABISELECT(216,112), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C12 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C12*), ABISELECT(232,120), "S7865C1");
    check_base_class_offset(lv, (S7865C12*)(S7865C17*), ABISELECT(216,112), "S7865C1");
    check_base_class_offset(lv, (S7865C17*)(S7865C16*)(S7865C3*), ABISELECT(136,72), "S7865C1");
    /*is_ambiguous_... S7865C16::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S7865C16*)(S7865C3*), ABISELECT(16,8), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C15 */ AMB_check_base_class_offset(lv, (S7865C10*)(S7865C15*), ABISELECT(240,124), "S7865C1");
    /*is_ambiguous_... S7865C1::S7865C15 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S7865C15*), ABISELECT(248,128), "S7865C1");
    check_base_class_offset(lv, (S7865C15*)(S7865C18*)(S7865C16*)(S7865C3*), ABISELECT(240,124), "S7865C1");
    check_base_class_offset(lv, (S7865C18*)(S7865C16*)(S7865C3*), ABISELECT(16,8), "S7865C1");
    check_base_class_offset(lv, (S7865C16*)(S7865C3*), ABISELECT(16,8), "S7865C1");
    check_base_class_offset(lv, (S7865C3*)(S7865C2*), ABISELECT(16,8), "S7865C1");
    check_base_class_offset(lv, (S7865C2*), 0, "S7865C1");
    check_base_class_offset(lv, (S3619C26*), 0, "S7865C1");
    check_base_class_offset(lv, (S3619C16*), 0, "S7865C1");
    check_field_offset(lv, s7865c1f0, ABISELECT(8,4), "S7865C1.s7865c1f0");
    test_class_info(&lv, &cd_S7865C1);
    dp->~S7865C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7865C1(Test_S7865C1, "S7865C1", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN7S7865C1C1Ev();
extern void _ZN7S7865C1D2Ev();
Name_Map name_map_S7865C1[] = {
  NSPAIR(_ZN7S7865C1C1Ev),
  NSPAIR(_ZN7S7865C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C11;
extern VTBL_ENTRY _ZTI8S7865C11[];
extern  VTBL_ENTRY _ZTV8S7865C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C11[];
extern Class_Descriptor cd_S7865C5;
extern VTBL_ENTRY _ZTI7S7865C5[];
extern  VTBL_ENTRY _ZTV7S7865C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C5[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C14;
extern VTBL_ENTRY _ZTI8S7865C14[];
extern  VTBL_ENTRY _ZTV8S7865C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C14[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7865C13;
extern VTBL_ENTRY _ZTI8S7865C13[];
extern  VTBL_ENTRY _ZTV8S7865C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C13[];
extern Class_Descriptor cd_S7865C8;
extern VTBL_ENTRY _ZTI7S7865C8[];
extern  VTBL_ENTRY _ZTV7S7865C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C8[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S7865C12;
extern VTBL_ENTRY _ZTI8S7865C12[];
extern  VTBL_ENTRY _ZTV8S7865C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C12[];
extern Class_Descriptor cd_S7865C17;
extern VTBL_ENTRY _ZTI8S7865C17[];
extern  VTBL_ENTRY _ZTV8S7865C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C17[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S7865C10;
extern VTBL_ENTRY _ZTI8S7865C10[];
extern  VTBL_ENTRY _ZTV8S7865C10[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S7865C15;
extern VTBL_ENTRY _ZTI8S7865C15[];
extern  VTBL_ENTRY _ZTV8S7865C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C15[];
extern Class_Descriptor cd_S7865C18;
extern VTBL_ENTRY _ZTI8S7865C18[];
extern  VTBL_ENTRY _ZTV8S7865C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C18[];
extern Class_Descriptor cd_S7865C16;
extern VTBL_ENTRY _ZTI8S7865C16[];
extern  VTBL_ENTRY _ZTV8S7865C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7865C16[];
extern Class_Descriptor cd_S7865C3;
extern VTBL_ENTRY _ZTI7S7865C3[];
extern  VTBL_ENTRY _ZTV7S7865C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C3[];
extern Class_Descriptor cd_S7865C2;
extern VTBL_ENTRY _ZTI7S7865C2[];
extern  VTBL_ENTRY _ZTV7S7865C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C2[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
static Base_Class bases_S7865C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(48,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(80,40), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7865C11,    ABISELECT(64,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7865C5,    ABISELECT(32,16), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(88,44), //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
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7865C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(104,52), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7865C14,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7865C13,    ABISELECT(88,44), //bcp->offset
    67, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7865C8,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(232,120), //bcp->offset
    108, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7865C12,    ABISELECT(216,112), //bcp->offset
    99, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7865C17,    ABISELECT(136,72), //bcp->offset
    88, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7865C10,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7865C15,    ABISELECT(240,124), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7865C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7865C16,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7865C3,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7865C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7865C1[];
extern void _ZN7S7865C1D1Ev();
extern void _ZN7S7865C1D0Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n128_N7S7865C1D1Ev,_ZTv0_n64_N7S7865C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7865C1D1Ev,_ZThn8_N7S7865C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7865C1D0Ev,_ZTv0_n64_N7S7865C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7865C1D0Ev,_ZThn8_N7S7865C1D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C1D1Ev,_ZTv0_n32_N7S7865C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7865C1D1Ev,_ZThn16_N7S7865C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C1D0Ev,_ZTv0_n32_N7S7865C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7865C1D0Ev,_ZThn16_N7S7865C1D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C1D1Ev,_ZTv0_n24_N7S7865C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7865C1D1Ev,_ZThn32_N7S7865C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C1D0Ev,_ZTv0_n24_N7S7865C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7865C1D0Ev,_ZThn32_N7S7865C1D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7865C1D1Ev,_ZTv0_n44_N7S7865C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S7865C1D1Ev,_ZThn44_N7S7865C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7865C1D0Ev,_ZTv0_n44_N7S7865C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S7865C1D0Ev,_ZThn44_N7S7865C1D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C1D1Ev,_ZTv0_n32_N7S7865C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S7865C1D1Ev,_ZThn72_N7S7865C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C1D0Ev,_ZTv0_n32_N7S7865C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S7865C1D0Ev,_ZThn72_N7S7865C1D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C1D1Ev,_ZTv0_n24_N7S7865C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S7865C1D1Ev,_ZThn112_N7S7865C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C1D0Ev,_ZTv0_n24_N7S7865C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S7865C1D0Ev,_ZThn112_N7S7865C1D0Ev)() __attribute__((weak));
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY vtc_S7865C1[] = {
  0,
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(136,72),
  0,
  ABISELECT(128,68),
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN7S7865C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7865C1D1Ev,_ZTv0_n64_N7S7865C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7865C1D0Ev,_ZTv0_n64_N7S7865C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C1D1Ev,_ZTv0_n32_N7S7865C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C1D0Ev,_ZTv0_n32_N7S7865C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C1D1Ev,_ZTv0_n24_N7S7865C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C1D0Ev,_ZTv0_n24_N7S7865C1D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C1D1Ev,_ZTv0_n44_N7S7865C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C1D0Ev,_ZTv0_n44_N7S7865C1D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-56,-28),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C1D1Ev,_ZTv0_n32_N7S7865C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C1D0Ev,_ZTv0_n32_N7S7865C1D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C1D1Ev,_ZTv0_n24_N7S7865C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C1D0Ev,_ZTv0_n24_N7S7865C1D0Ev),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-240,-124),
  ABISELECT(-192,-100),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S7865C1[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern VTBL_ENTRY _ZTV7S7865C1[];
extern void _ZN7S7865C2D1Ev();
extern void _ZN7S7865C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C2__7S7865C1[] = {
  ABISELECT(240,124),
  ABISELECT(216,112),
  ABISELECT(136,72),
  0,
  ABISELECT(128,68),
  ABISELECT(88,44),
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN7S7865C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C2D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n128_N7S7865C2D1Ev,_ZTv0_n64_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7865C2D1Ev,_ZThn8_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7865C2D0Ev,_ZTv0_n64_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7865C2D0Ev,_ZThn8_N7S7865C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7865C3__7S7865C2__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7865C2D1Ev,_ZTv0_n64_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7865C2D0Ev,_ZTv0_n64_N7S7865C2D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7865C2D1Ev,_ZThn16_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7865C2D0Ev,_ZThn16_N7S7865C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7865C5__7S7865C2__7S7865C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C2__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7865C2D1Ev,_ZThn32_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7865C2D0Ev,_ZThn32_N7S7865C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C2__7S7865C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C2__7S7865C1[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7865C2D1Ev,_ZTv0_n44_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7865C2D1Ev,_ZThn44_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7865C2D0Ev,_ZTv0_n44_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7865C2D0Ev,_ZThn44_N7S7865C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C13__7S7865C2__7S7865C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C2D1Ev,_ZTv0_n44_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C2D0Ev,_ZTv0_n44_N7S7865C2D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C148S7865C13__7S7865C2__7S7865C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-56,-28),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S7865C2D1Ev,_ZThn72_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S7865C2D0Ev,_ZThn72_N7S7865C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C17__7S7865C2__7S7865C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev)();
extern void ABISELECT(_ZThn216_N7S7865C2D1Ev,_ZThn112_N7S7865C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev)();
extern void ABISELECT(_ZThn216_N7S7865C2D0Ev,_ZThn112_N7S7865C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__A1__7S7865C2__7S7865C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A3__7S7865C2__7S7865C1[] = {
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__A1__7S7865C2__7S7865C1[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-240,-124),
  ABISELECT(-192,-100),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S7865C2[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C3D1Ev();
extern void _ZN7S7865C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C3__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C3D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C16D1Ev();
extern void _ZN8S7865C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(112,60),
  ABISELECT(200,104),
  ABISELECT(120,64),
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C16D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C188S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(224,116),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C188S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C188S7865C167S7865C3__7S7865C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C188S7865C167S7865C3__7S7865C1[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-240,-124),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7865C18[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn120_N8S7865C16D1Ev,_ZThn64_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn120_N8S7865C16D0Ev,_ZThn64_N8S7865C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C17__8S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev)();
extern void ABISELECT(_ZThn200_N8S7865C16D1Ev,_ZThn104_N8S7865C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev)();
extern void ABISELECT(_ZThn200_N8S7865C16D0Ev,_ZThn104_N8S7865C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C167S7865C3__7S7865C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C167S7865C3__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C167S7865C3__7S7865C1[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-240,-124),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7865C16[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S7865C3__7S7865C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7865C3D1Ev,_ZTv0_n12_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7865C3D0Ev,_ZTv0_n12_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7865C3D1Ev,_ZThn8_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7865C3D0Ev,_ZThn8_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7865C5__7S7865C3__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C3__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7865C3D1Ev,_ZThn24_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7865C3D0Ev,_ZThn24_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C3__7S7865C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C3__7S7865C1[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7865C3D1Ev,_ZThn36_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7865C3D0Ev,_ZThn36_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C13__7S7865C3__7S7865C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C148S7865C13__7S7865C3__7S7865C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7865C3D1Ev,_ZThn64_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7865C3D0Ev,_ZThn64_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C17__7S7865C3__7S7865C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev)();
extern void ABISELECT(_ZThn200_N7S7865C3D1Ev,_ZThn104_N7S7865C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev)();
extern void ABISELECT(_ZThn200_N7S7865C3D0Ev,_ZThn104_N7S7865C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__A1__7S7865C3__7S7865C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A3__7S7865C3__7S7865C1[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__A1__7S7865C3__7S7865C1[] = {
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(-240,-124),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI7S7865C3[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN7S7865C5D1Ev();
extern void _ZN7S7865C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C5__7S7865C1[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7865C5D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C5__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7865C5D1Ev,_ZThn16_N7S7865C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7865C5D0Ev,_ZThn16_N7S7865C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C5__7S7865C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C5__7S7865C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7865C5[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C8__7S7865C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C11D1Ev();
extern void _ZN8S7865C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C11__7S7865C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C11D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C128S7865C11__7S7865C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C11__7S7865C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7865C11[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C13D1Ev();
extern void _ZN8S7865C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C13__7S7865C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C13D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C148S7865C13__7S7865C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(40,24),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C148S7865C13__A2__7S7865C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C148S7865C13__A2__7S7865C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C148S7865C13__7S7865C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C158S7865C148S7865C13__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C158S7865C148S7865C13__7S7865C1[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C148S7865C13__7S7865C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__8S7865C148S7865C13__7S7865C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__A1__8S7865C148S7865C13__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7865C14[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C13__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C13__7S7865C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C158S7865C14__8S7865C13__7S7865C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S7865C13__7S7865C1[] = {
  ABISELECT(88,44),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S7865C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D1Ev,_ZTv0_n12_N8S7865C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7865C13D0Ev,_ZTv0_n12_N8S7865C13D0Ev),
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C17D1Ev();
extern void _ZN8S7865C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C17__7S7865C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-104,-56),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C17D0Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7865C12__8S7865C17__7S7865C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev),
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C17__7S7865C1[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C108S7865C12__A1__8S7865C17__7S7865C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7865C17[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C12D1Ev();
extern void _ZN8S7865C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C12__A1__7S7865C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7865C12D0Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C88S7865C12__A3__7S7865C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__7S7865C88S7865C12__A3__7S7865C1[] = {
  0,
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7865C8[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__8S7865C12__A1__7S7865C1[] = {
  0,
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7865C12[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
extern void _ZN8S7865C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C15__A1__7S7865C1[] = {
  ABISELECT(-208,-108),
  ABISELECT(-240,-124),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
  (VTBL_ENTRY)&_ZN8S7865C152v2Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7865C8__8S7865C15__A1__7S7865C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
extern void _ZN8S7865C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7865C10__A1__8S7865C15__A1__7S7865C1[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S7865C15[0]),
  (VTBL_ENTRY)&_ZN8S7865C102v1Ev,
};
static  VTT_ENTRY vtt_S7865C1[] = {
  {&(_ZTV7S7865C1[17]),  17,120},
  {&(_tg__ZTV7S7865C2__7S7865C1[16]),  16,18},
  {&(_tg__ZTV7S7865C3__7S7865C2__7S7865C1[16]),  16,19},
  {&(_tg__ZTV7S7865C2__7S7865C1[16]),  16,18},
  {&(_tg__ZTV7S7865C5__7S7865C2__7S7865C1[8]),  8,11},
  {&(_tg__ZTV7S7865C8__7S7865C2__7S7865C1[5]),  5,6},
  {&(_tg__ZTV7S7865C5__7S7865C2__7S7865C1[8]),  8,11},
  {&(_tg__ZTV8S7865C11__7S7865C2__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C2__7S7865C1[2]),  2,3},
  {&(_tg__ZTV8S7865C13__7S7865C2__7S7865C1[11]),  11,14},
  {&(_tg__ZTV8S7865C158S7865C148S7865C13__7S7865C2__7S7865C1[5]),  5,7},
  {&(_tg__ZTV8S7865C17__7S7865C2__7S7865C1[8]),  8,11},
  {&(_tg__ZTV8S7865C12__A1__7S7865C2__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C12__A3__7S7865C2__7S7865C1[2]),  2,3},
  {&(_tg__ZTV8S7865C15__A1__7S7865C2__7S7865C1[7]),  7,9},
  {&(_ZTV7S7865C1[35]),  35,120},
  {&(_ZTV7S7865C1[17]),  17,120},
  {&(_ZTV7S7865C1[46]),  46,120},
  {&(_ZTV7S7865C1[54]),  54,120},
  {&(_ZTV7S7865C1[46]),  46,120},
  {&(_ZTV7S7865C1[61]),  61,120},
  {&(_ZTV7S7865C1[66]),  66,120},
  {&(_ZTV7S7865C1[78]),  78,120},
  {&(_ZTV7S7865C1[86]),  86,120},
  {&(_ZTV7S7865C1[96]),  96,120},
  {&(_ZTV7S7865C1[105]),  105,120},
  {&(_ZTV7S7865C1[110]),  110,120},
  {&(_ZTV7S7865C1[118]),  118,120},
  {&(_tg__ZTV7S7865C3__7S7865C1[15]),  15,18},
  {&(_tg__ZTV8S7865C167S7865C3__7S7865C1[10]),  10,13},
  {&(_tg__ZTV8S7865C188S7865C167S7865C3__7S7865C1[7]),  7,8},
  {&(_tg__ZTV7S7865C8__8S7865C188S7865C167S7865C3__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C188S7865C167S7865C3__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C188S7865C167S7865C3__7S7865C1[7]),  7,9},
  {&(_tg__ZTV8S7865C17__8S7865C167S7865C3__7S7865C1[8]),  8,11},
  {&(_tg__ZTV8S7865C12__8S7865C167S7865C3__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C10__8S7865C167S7865C3__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C167S7865C3__7S7865C1[2]),  2,3},
  {&(_tg__ZTV7S7865C8__A1__8S7865C167S7865C3__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C15__8S7865C167S7865C3__7S7865C1[7]),  7,9},
  {&(_tg__ZTV12S21216C26_nt__7S7865C3__7S7865C1[3]),  3,5},
  {&(_tg__ZTV7S7865C5__7S7865C3__7S7865C1[8]),  8,11},
  {&(_tg__ZTV7S7865C8__7S7865C3__7S7865C1[5]),  5,6},
  {&(_tg__ZTV7S7865C5__7S7865C3__7S7865C1[8]),  8,11},
  {&(_tg__ZTV8S7865C11__7S7865C3__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C3__7S7865C1[2]),  2,3},
  {&(_tg__ZTV8S7865C13__7S7865C3__7S7865C1[11]),  11,14},
  {&(_tg__ZTV8S7865C158S7865C148S7865C13__7S7865C3__7S7865C1[5]),  5,7},
  {&(_tg__ZTV8S7865C17__7S7865C3__7S7865C1[8]),  8,11},
  {&(_tg__ZTV8S7865C12__A1__7S7865C3__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C12__A3__7S7865C3__7S7865C1[2]),  2,3},
  {&(_tg__ZTV8S7865C15__A1__7S7865C3__7S7865C1[7]),  7,9},
  {&(_tg__ZTV7S7865C5__7S7865C1[7]),  7,10},
  {&(_tg__ZTV7S7865C8__7S7865C5__7S7865C1[5]),  5,6},
  {&(_tg__ZTV7S7865C5__7S7865C1[7]),  7,10},
  {&(_tg__ZTV8S7865C11__7S7865C5__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C108S7865C128S7865C11__A1__7S7865C5__7S7865C1[2]),  2,3},
  {&(_tg__ZTV7S7865C8__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C8__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C11__7S7865C1[5]),  5,8},
  {&(_tg__ZTV8S7865C128S7865C11__7S7865C1[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C128S7865C11__A1__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C128S7865C11__A1__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C128S7865C11__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C11__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C13__7S7865C1[9]),  9,12},
  {&(_tg__ZTV8S7865C148S7865C13__7S7865C1[7]),  7,8},
  {&(_tg__ZTV7S7865C88S7865C148S7865C13__A2__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C148S7865C13__A2__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C148S7865C13__7S7865C1[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C158S7865C148S7865C13__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C158S7865C148S7865C13__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C148S7865C13__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C15__8S7865C148S7865C13__7S7865C1[5]),  5,7},
  {&(_tg__ZTV7S7865C8__A1__8S7865C148S7865C13__7S7865C1[5]),  5,6},
  {&(_tg__ZTV7S7865C8__8S7865C13__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__8S7865C13__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C158S7865C14__8S7865C13__7S7865C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S7865C13__7S7865C1[3]),  3,5},
  {&(_tg__ZTV8S7865C17__7S7865C1[7]),  7,10},
  {&(_tg__ZTV8S7865C12__8S7865C17__7S7865C1[6]),  6,9},
  {&(_tg__ZTV8S7865C10__8S7865C17__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C108S7865C12__A1__8S7865C17__7S7865C1[2]),  2,3},
  {&(_tg__ZTV8S7865C12__A1__7S7865C1[5]),  5,8},
  {&(_tg__ZTV7S7865C88S7865C12__A3__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__7S7865C88S7865C12__A3__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C10__8S7865C12__A1__7S7865C1[3]),  3,4},
  {&(_tg__ZTV8S7865C15__A1__7S7865C1[5]),  5,7},
  {&(_tg__ZTV7S7865C8__8S7865C15__A1__7S7865C1[5]),  5,6},
  {&(_tg__ZTV8S7865C10__A1__8S7865C15__A1__7S7865C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7865C1[];
extern  VTBL_ENTRY _ZTV7S7865C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7865C1[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D0Ev,_ZTv0_n24_N8S7865C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D0Ev,_ZThn40_N8S7865C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C17D1Ev,_ZTv0_n24_N8S7865C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7865C17D1Ev,_ZThn40_N8S7865C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D0Ev,_ZTv0_n24_N7S7865C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C5D0Ev,_ZThn16_N7S7865C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C5D1Ev,_ZTv0_n24_N7S7865C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C5D1Ev,_ZThn16_N7S7865C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C3D0Ev,_ZTv0_n44_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7865C3D0Ev,_ZThn36_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C3D1Ev,_ZTv0_n44_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7865C3D1Ev,_ZThn36_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C3D0Ev,_ZTv0_n24_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7865C3D0Ev,_ZThn104_N7S7865C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7865C3D0Ev,_ZThn24_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C3D1Ev,_ZTv0_n24_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7865C3D1Ev,_ZThn104_N7S7865C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7865C3D1Ev,_ZThn24_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C3D0Ev,_ZTv0_n32_N7S7865C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7865C3D0Ev,_ZThn64_N7S7865C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C3D0Ev,_ZThn8_N7S7865C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C3D1Ev,_ZTv0_n32_N7S7865C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7865C3D1Ev,_ZThn64_N7S7865C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C3D1Ev,_ZThn8_N7S7865C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D0Ev,_ZTv0_n24_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7865C16D0Ev,_ZThn104_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7865C16D1Ev,_ZTv0_n24_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7865C16D1Ev,_ZThn104_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D0Ev,_ZTv0_n32_N8S7865C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7865C16D0Ev,_ZThn64_N8S7865C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7865C16D1Ev,_ZTv0_n32_N8S7865C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7865C16D1Ev,_ZThn64_N8S7865C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C2D0Ev,_ZTv0_n44_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7865C2D0Ev,_ZThn44_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C2D1Ev,_ZTv0_n44_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7865C2D1Ev,_ZThn44_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C2D0Ev,_ZTv0_n24_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7865C2D0Ev,_ZThn112_N7S7865C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7865C2D0Ev,_ZThn32_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C2D1Ev,_ZTv0_n24_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7865C2D1Ev,_ZThn112_N7S7865C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7865C2D1Ev,_ZThn32_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C2D0Ev,_ZTv0_n32_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7865C2D0Ev,_ZThn72_N7S7865C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C2D0Ev,_ZThn16_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C2D1Ev,_ZTv0_n32_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7865C2D1Ev,_ZThn72_N7S7865C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C2D1Ev,_ZThn16_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7865C2D0Ev,_ZTv0_n64_N7S7865C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C2D0Ev,_ZThn8_N7S7865C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7865C2D1Ev,_ZTv0_n64_N7S7865C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C2D1Ev,_ZThn8_N7S7865C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C1D0Ev,_ZTv0_n44_N7S7865C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7865C1D0Ev,_ZThn44_N7S7865C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7865C1D1Ev,_ZTv0_n44_N7S7865C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7865C1D1Ev,_ZThn44_N7S7865C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C1D0Ev,_ZTv0_n24_N7S7865C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7865C1D0Ev,_ZThn112_N7S7865C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7865C1D0Ev,_ZThn32_N7S7865C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7865C1D1Ev,_ZTv0_n24_N7S7865C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7865C1D1Ev,_ZThn112_N7S7865C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7865C1D1Ev,_ZThn32_N7S7865C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C1D0Ev,_ZTv0_n32_N7S7865C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7865C1D0Ev,_ZThn72_N7S7865C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C1D0Ev,_ZThn16_N7S7865C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7865C1D1Ev,_ZTv0_n32_N7S7865C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7865C1D1Ev,_ZThn72_N7S7865C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7865C1D1Ev,_ZThn16_N7S7865C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7865C1D0Ev,_ZTv0_n64_N7S7865C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C1D0Ev,_ZThn8_N7S7865C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7865C1D1Ev,_ZTv0_n64_N7S7865C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7865C1D1Ev,_ZThn8_N7S7865C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7865C1 = {  "S7865C1", // class name
  bases_S7865C1, 36,
  &(vtc_S7865C1[0]), // expected_vtbl_contents
  &(vtt_S7865C1[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI7S7865C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7865C1),120, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7865C1),90, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21648C3  {
  virtual  ~S21648C3(); // _ZN8S21648C3D1Ev
  virtual void  v22(); // _ZN8S21648C33v22Ev
  virtual void  v23(); // _ZN8S21648C33v23Ev
  virtual void  v24(); // _ZN8S21648C33v24Ev
  virtual void  v25(); // _ZN8S21648C33v25Ev
  virtual void  v26(); // _ZN8S21648C33v26Ev
  virtual void  v27(); // _ZN8S21648C33v27Ev
  virtual void  v28(); // _ZN8S21648C33v28Ev
  virtual void  v29(); // _ZN8S21648C33v29Ev
  virtual void  v30(); // _ZN8S21648C33v30Ev
  virtual void  v31(); // _ZN8S21648C33v31Ev
  virtual void  v32(); // _ZN8S21648C33v32Ev
  virtual void  v33(); // _ZN8S21648C33v33Ev
  virtual void  v34(); // _ZN8S21648C33v34Ev
  virtual void  v35(); // _ZN8S21648C33v35Ev
  virtual void  v36(); // _ZN8S21648C33v36Ev
  virtual void  v37(); // _ZN8S21648C33v37Ev
  virtual void  v38(); // _ZN8S21648C33v38Ev
  virtual void  v39(); // _ZN8S21648C33v39Ev
  virtual void  v40(); // _ZN8S21648C33v40Ev
  virtual void  v41(); // _ZN8S21648C33v41Ev
  virtual void  v42(); // _ZN8S21648C33v42Ev
  virtual void  v43(); // _ZN8S21648C33v43Ev
  S21648C3(); // tgen
};
//SIG(-1 S21648C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22}


 S21648C3 ::~S21648C3(){ note_dtor("S21648C3", this);}
void  S21648C3 ::v22(){vfunc_called(this, "_ZN8S21648C33v22Ev");}
void  S21648C3 ::v23(){vfunc_called(this, "_ZN8S21648C33v23Ev");}
void  S21648C3 ::v24(){vfunc_called(this, "_ZN8S21648C33v24Ev");}
void  S21648C3 ::v25(){vfunc_called(this, "_ZN8S21648C33v25Ev");}
void  S21648C3 ::v26(){vfunc_called(this, "_ZN8S21648C33v26Ev");}
void  S21648C3 ::v27(){vfunc_called(this, "_ZN8S21648C33v27Ev");}
void  S21648C3 ::v28(){vfunc_called(this, "_ZN8S21648C33v28Ev");}
void  S21648C3 ::v29(){vfunc_called(this, "_ZN8S21648C33v29Ev");}
void  S21648C3 ::v30(){vfunc_called(this, "_ZN8S21648C33v30Ev");}
void  S21648C3 ::v31(){vfunc_called(this, "_ZN8S21648C33v31Ev");}
void  S21648C3 ::v32(){vfunc_called(this, "_ZN8S21648C33v32Ev");}
void  S21648C3 ::v33(){vfunc_called(this, "_ZN8S21648C33v33Ev");}
void  S21648C3 ::v34(){vfunc_called(this, "_ZN8S21648C33v34Ev");}
void  S21648C3 ::v35(){vfunc_called(this, "_ZN8S21648C33v35Ev");}
void  S21648C3 ::v36(){vfunc_called(this, "_ZN8S21648C33v36Ev");}
void  S21648C3 ::v37(){vfunc_called(this, "_ZN8S21648C33v37Ev");}
void  S21648C3 ::v38(){vfunc_called(this, "_ZN8S21648C33v38Ev");}
void  S21648C3 ::v39(){vfunc_called(this, "_ZN8S21648C33v39Ev");}
void  S21648C3 ::v40(){vfunc_called(this, "_ZN8S21648C33v40Ev");}
void  S21648C3 ::v41(){vfunc_called(this, "_ZN8S21648C33v41Ev");}
void  S21648C3 ::v42(){vfunc_called(this, "_ZN8S21648C33v42Ev");}
void  S21648C3 ::v43(){vfunc_called(this, "_ZN8S21648C33v43Ev");}
S21648C3 ::S21648C3(){ note_ctor("S21648C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21648C3C1Ev();
extern void _ZN8S21648C3D1Ev();
Name_Map name_map_S21648C3[] = {
  NSPAIR(_ZN8S21648C3C1Ev),
  NSPAIR(_ZN8S21648C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21648C3[];
extern void _ZN8S21648C3D1Ev();
extern void _ZN8S21648C3D0Ev();
extern void _ZN8S21648C33v22Ev();
extern void _ZN8S21648C33v23Ev();
extern void _ZN8S21648C33v24Ev();
extern void _ZN8S21648C33v25Ev();
extern void _ZN8S21648C33v26Ev();
extern void _ZN8S21648C33v27Ev();
extern void _ZN8S21648C33v28Ev();
extern void _ZN8S21648C33v29Ev();
extern void _ZN8S21648C33v30Ev();
extern void _ZN8S21648C33v31Ev();
extern void _ZN8S21648C33v32Ev();
extern void _ZN8S21648C33v33Ev();
extern void _ZN8S21648C33v34Ev();
extern void _ZN8S21648C33v35Ev();
extern void _ZN8S21648C33v36Ev();
extern void _ZN8S21648C33v37Ev();
extern void _ZN8S21648C33v38Ev();
extern void _ZN8S21648C33v39Ev();
extern void _ZN8S21648C33v40Ev();
extern void _ZN8S21648C33v41Ev();
extern void _ZN8S21648C33v42Ev();
extern void _ZN8S21648C33v43Ev();
static  VTBL_ENTRY vtc_S21648C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21648C3[0]),
  (VTBL_ENTRY)&_ZN8S21648C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21648C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v22Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v23Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v24Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v25Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v26Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v27Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v28Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v29Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v30Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v31Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v32Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v34Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v35Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v36Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v43Ev,
};
extern VTBL_ENTRY _ZTI8S21648C3[];
extern  VTBL_ENTRY _ZTV8S21648C3[];
Class_Descriptor cd_S21648C3 = {  "S21648C3", // class name
  0,0,//no base classes
  &(vtc_S21648C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21648C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21648C3),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21648C2  : S21648C3 {
  int s21648c2f0;
  ::S3620C13_nt s21648c2f1;
  ::S21646C6_nt s21648c2f2;
  int s21648c2f3;
  ::S21646C7_nt s21648c2f4;
  int s21648c2f5[2];
  virtual  ~S21648C2(); // _ZN8S21648C2D1Ev
  virtual void  v1(); // _ZN8S21648C22v1Ev
  virtual void  v2(); // _ZN8S21648C22v2Ev
  virtual void  v3(); // _ZN8S21648C22v3Ev
  virtual void  v4(); // _ZN8S21648C22v4Ev
  virtual void  v5(); // _ZN8S21648C22v5Ev
  virtual void  v6(); // _ZN8S21648C22v6Ev
  virtual void  v7(); // _ZN8S21648C22v7Ev
  virtual void  v8(); // _ZN8S21648C22v8Ev
  virtual void  v9(); // _ZN8S21648C22v9Ev
  virtual void  v10(); // _ZN8S21648C23v10Ev
  virtual void  v11(); // _ZN8S21648C23v11Ev
  virtual void  v12(); // _ZN8S21648C23v12Ev
  virtual void  v13(); // _ZN8S21648C23v13Ev
  virtual void  v14(); // _ZN8S21648C23v14Ev
  virtual void  v15(); // _ZN8S21648C23v15Ev
  virtual void  v16(); // _ZN8S21648C23v16Ev
  virtual void  v17(); // _ZN8S21648C23v17Ev
  virtual void  v18(); // _ZN8S21648C23v18Ev
  virtual void  v19(); // _ZN8S21648C23v19Ev
  virtual void  v20(); // _ZN8S21648C23v20Ev
  virtual void  v21(); // _ZN8S21648C23v21Ev
  S21648C2(); // tgen
};
//SIG(-1 S21648C2) C1{ BC2{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fi FC3{ m FL[4]} FC4{ Fp FL Fi Fp Fi[2] Fp} Fi FC5{ Fi[3]} Fi[2]}


 S21648C2 ::~S21648C2(){ note_dtor("S21648C2", this);}
void  S21648C2 ::v1(){vfunc_called(this, "_ZN8S21648C22v1Ev");}
void  S21648C2 ::v2(){vfunc_called(this, "_ZN8S21648C22v2Ev");}
void  S21648C2 ::v3(){vfunc_called(this, "_ZN8S21648C22v3Ev");}
void  S21648C2 ::v4(){vfunc_called(this, "_ZN8S21648C22v4Ev");}
void  S21648C2 ::v5(){vfunc_called(this, "_ZN8S21648C22v5Ev");}
void  S21648C2 ::v6(){vfunc_called(this, "_ZN8S21648C22v6Ev");}
void  S21648C2 ::v7(){vfunc_called(this, "_ZN8S21648C22v7Ev");}
void  S21648C2 ::v8(){vfunc_called(this, "_ZN8S21648C22v8Ev");}
void  S21648C2 ::v9(){vfunc_called(this, "_ZN8S21648C22v9Ev");}
void  S21648C2 ::v10(){vfunc_called(this, "_ZN8S21648C23v10Ev");}
void  S21648C2 ::v11(){vfunc_called(this, "_ZN8S21648C23v11Ev");}
void  S21648C2 ::v12(){vfunc_called(this, "_ZN8S21648C23v12Ev");}
void  S21648C2 ::v13(){vfunc_called(this, "_ZN8S21648C23v13Ev");}
void  S21648C2 ::v14(){vfunc_called(this, "_ZN8S21648C23v14Ev");}
void  S21648C2 ::v15(){vfunc_called(this, "_ZN8S21648C23v15Ev");}
void  S21648C2 ::v16(){vfunc_called(this, "_ZN8S21648C23v16Ev");}
void  S21648C2 ::v17(){vfunc_called(this, "_ZN8S21648C23v17Ev");}
void  S21648C2 ::v18(){vfunc_called(this, "_ZN8S21648C23v18Ev");}
void  S21648C2 ::v19(){vfunc_called(this, "_ZN8S21648C23v19Ev");}
void  S21648C2 ::v20(){vfunc_called(this, "_ZN8S21648C23v20Ev");}
void  S21648C2 ::v21(){vfunc_called(this, "_ZN8S21648C23v21Ev");}
S21648C2 ::S21648C2(){ note_ctor("S21648C2", this);} // tgen

static void Test_S21648C2()
{
  extern Class_Descriptor cd_S21648C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,25)];
    init_test(&cd_S21648C2, buf);
    S21648C2 *dp, &lv = *(dp=new (buf) S21648C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S21648C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21648C2)");
    check_base_class_offset(lv, (S21648C3*), 0, "S21648C2");
    check_field_offset(lv, s21648c2f0, ABISELECT(8,4), "S21648C2.s21648c2f0");
    check_field_offset(lv, s21648c2f1, ABISELECT(16,8), "S21648C2.s21648c2f1");
    check_field_offset(lv, s21648c2f2, ABISELECT(48,40), "S21648C2.s21648c2f2");
    check_field_offset(lv, s21648c2f3, ABISELECT(96,72), "S21648C2.s21648c2f3");
    check_field_offset(lv, s21648c2f4, ABISELECT(100,76), "S21648C2.s21648c2f4");
    check_field_offset(lv, s21648c2f5, ABISELECT(112,88), "S21648C2.s21648c2f5");
    test_class_info(&lv, &cd_S21648C2);
    dp->~S21648C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21648C2(Test_S21648C2, "S21648C2", ABISELECT(120,96));

#else // __cplusplus

extern void _ZN8S21648C2C1Ev();
extern void _ZN8S21648C2D1Ev();
Name_Map name_map_S21648C2[] = {
  NSPAIR(_ZN8S21648C2C1Ev),
  NSPAIR(_ZN8S21648C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21648C3;
extern VTBL_ENTRY _ZTI8S21648C3[];
extern  VTBL_ENTRY _ZTV8S21648C3[];
static Base_Class bases_S21648C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21648C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21648C2[];
extern void _ZN8S21648C2D1Ev();
extern void _ZN8S21648C2D0Ev();
extern void _ZN8S21648C33v22Ev();
extern void _ZN8S21648C33v23Ev();
extern void _ZN8S21648C33v24Ev();
extern void _ZN8S21648C33v25Ev();
extern void _ZN8S21648C33v26Ev();
extern void _ZN8S21648C33v27Ev();
extern void _ZN8S21648C33v28Ev();
extern void _ZN8S21648C33v29Ev();
extern void _ZN8S21648C33v30Ev();
extern void _ZN8S21648C33v31Ev();
extern void _ZN8S21648C33v32Ev();
extern void _ZN8S21648C33v33Ev();
extern void _ZN8S21648C33v34Ev();
extern void _ZN8S21648C33v35Ev();
extern void _ZN8S21648C33v36Ev();
extern void _ZN8S21648C33v37Ev();
extern void _ZN8S21648C33v38Ev();
extern void _ZN8S21648C33v39Ev();
extern void _ZN8S21648C33v40Ev();
extern void _ZN8S21648C33v41Ev();
extern void _ZN8S21648C33v42Ev();
extern void _ZN8S21648C33v43Ev();
extern void _ZN8S21648C22v1Ev();
extern void _ZN8S21648C22v2Ev();
extern void _ZN8S21648C22v3Ev();
extern void _ZN8S21648C22v4Ev();
extern void _ZN8S21648C22v5Ev();
extern void _ZN8S21648C22v6Ev();
extern void _ZN8S21648C22v7Ev();
extern void _ZN8S21648C22v8Ev();
extern void _ZN8S21648C22v9Ev();
extern void _ZN8S21648C23v10Ev();
extern void _ZN8S21648C23v11Ev();
extern void _ZN8S21648C23v12Ev();
extern void _ZN8S21648C23v13Ev();
extern void _ZN8S21648C23v14Ev();
extern void _ZN8S21648C23v15Ev();
extern void _ZN8S21648C23v16Ev();
extern void _ZN8S21648C23v17Ev();
extern void _ZN8S21648C23v18Ev();
extern void _ZN8S21648C23v19Ev();
extern void _ZN8S21648C23v20Ev();
extern void _ZN8S21648C23v21Ev();
static  VTBL_ENTRY vtc_S21648C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21648C2[0]),
  (VTBL_ENTRY)&_ZN8S21648C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21648C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v22Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v23Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v24Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v25Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v26Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v27Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v28Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v29Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v30Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v31Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v32Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v34Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v35Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v36Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21648C33v43Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v2Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v3Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v4Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v5Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v6Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v7Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v8Ev,
  (VTBL_ENTRY)&_ZN8S21648C22v9Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v10Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v11Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v12Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v13Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v14Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v15Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v16Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v17Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21648C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S21648C2[];
extern  VTBL_ENTRY _ZTV8S21648C2[];
Class_Descriptor cd_S21648C2 = {  "S21648C2", // class name
  bases_S21648C2, 1,
  &(vtc_S21648C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,96), // object size
  NSPAIRA(_ZTI8S21648C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21648C2),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21648C1  {
  int s21648c1f0[2];
  ::S21648C2 s21648c1f1;
  void  mf21648c1(); // _ZN8S21648C19mf21648c1Ev
  virtual  ~S21648C1(); // _ZN8S21648C1D1Ev
  S21648C1(); // tgen
};
//SIG(1 S21648C1) C1{ vd m Fi[2] FC2{ BC3{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fi FC4{ m FL[4]} FC5{ Fp FL Fi Fp Fi[2] Fp} Fi FC6{ Fi[3]} Fi[2]}}


void  S21648C1 ::mf21648c1(){}
 S21648C1 ::~S21648C1(){ note_dtor("S21648C1", this);}
S21648C1 ::S21648C1(){ note_ctor("S21648C1", this);} // tgen

static void Test_S21648C1()
{
  extern Class_Descriptor cd_S21648C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S21648C1, buf);
    S21648C1 *dp, &lv = *(dp=new (buf) S21648C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S21648C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21648C1)");
    check_field_offset(lv, s21648c1f0, ABISELECT(8,4), "S21648C1.s21648c1f0");
    check_field_offset(lv, s21648c1f1, ABISELECT(16,12), "S21648C1.s21648c1f1");
    test_class_info(&lv, &cd_S21648C1);
    dp->~S21648C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21648C1(Test_S21648C1, "S21648C1", ABISELECT(136,108));

#else // __cplusplus

extern void _ZN8S21648C1C1Ev();
extern void _ZN8S21648C1D1Ev();
Name_Map name_map_S21648C1[] = {
  NSPAIR(_ZN8S21648C1C1Ev),
  NSPAIR(_ZN8S21648C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21648C1[];
extern void _ZN8S21648C1D1Ev();
extern void _ZN8S21648C1D0Ev();
static  VTBL_ENTRY vtc_S21648C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21648C1[0]),
  (VTBL_ENTRY)&_ZN8S21648C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21648C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21648C1[];
extern  VTBL_ENTRY _ZTV8S21648C1[];
Class_Descriptor cd_S21648C1 = {  "S21648C1", // class name
  0,0,//no base classes
  &(vtc_S21648C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,108), // object size
  NSPAIRA(_ZTI8S21648C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21648C1),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  S8273C6  {
  virtual void  v1(); // _ZN7S8273C62v1Ev
  ~S8273C6(); // tgen
  S8273C6(); // tgen
};
//SIG(-1 S8273C6) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S8273C6C1Ev();
extern void _ZN7S8273C6D1Ev();
Name_Map name_map_S8273C6[] = {
  NSPAIR(_ZN7S8273C6C1Ev),
  NSPAIR(_ZN7S8273C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8273C6[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C6[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
Class_Descriptor cd_S8273C6 = {  "S8273C6", // class name
  0,0,//no base classes
  &(vtc_S8273C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8273C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8273C6),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  S8273C8  : virtual S19894C34 , virtual S8273C6 {
  ::S8273C6 s8273c8f0;
  ~S8273C8(); // tgen
  S8273C8(); // tgen
};
//SIG(-1 S8273C8) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S8273C8()
{
  extern Class_Descriptor cd_S8273C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8273C8, buf);
    S8273C8 *dp, &lv = *(dp=new (buf) S8273C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8273C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C8)");
    check_base_class_offset(lv, (S19894C34*), 0, "S8273C8");
    check_base_class_offset(lv, (S8273C6*), 0, "S8273C8");
    check_field_offset(lv, s8273c8f0, ABISELECT(8,4), "S8273C8.s8273c8f0");
    test_class_info(&lv, &cd_S8273C8);
    dp->~S8273C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C8(Test_S8273C8, "S8273C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8273C8C1Ev();
extern void _ZN7S8273C8D1Ev();
Name_Map name_map_S8273C8[] = {
  NSPAIR(_ZN7S8273C8C1Ev),
  NSPAIR(_ZN7S8273C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
static Base_Class bases_S8273C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C6,    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 _ZTI7S8273C8[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S8273C8[];
static  VTT_ENTRY vtt_S8273C8[] = {
  {&(_ZTV7S8273C8[5]),  5,6},
  {&(_ZTV7S8273C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
Class_Descriptor cd_S8273C8 = {  "S8273C8", // class name
  bases_S8273C8, 2,
  &(vtc_S8273C8[0]), // expected_vtbl_contents
  &(vtt_S8273C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8273C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8273C8),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8273C8),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  S8273C5  : S8273C6 , S19894C6_nt , virtual S8273C8 {
  virtual void  v2(); // _ZN7S8273C52v2Ev
  ~S8273C5(); // tgen
  S8273C5(); // tgen
};
//SIG(-1 S8273C5) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S8273C5()
{
  extern Class_Descriptor cd_S8273C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S8273C5, buf);
    S8273C5 *dp, &lv = *(dp=new (buf) S8273C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S8273C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C5)");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*), 0, "S8273C5");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S8273C5");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C5");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(16,8), "S8273C5");
    check_base_class_offset(lv, (S8273C8*), ABISELECT(16,8), "S8273C5");
    test_class_info(&lv, &cd_S8273C5);
    dp->~S8273C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C5(Test_S8273C5, "S8273C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S8273C5C1Ev();
extern void _ZN7S8273C5D1Ev();
Name_Map name_map_S8273C5[] = {
  NSPAIR(_ZN7S8273C5C1Ev),
  NSPAIR(_ZN7S8273C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
static Base_Class bases_S8273C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8273C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8273C6,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI7S8273C5[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C5[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S8273C5[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C5[] = {
  {&(_ZTV7S8273C5[5]),  5,13},
  {&(_ZTV7S8273C5[12]),  12,13},
  {&(_ZTV7S8273C5[12]),  12,13},
  {&(_tg__ZTV7S8273C8__7S8273C5[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
Class_Descriptor cd_S8273C5 = {  "S8273C5", // class name
  bases_S8273C5, 5,
  &(vtc_S8273C5[0]), // expected_vtbl_contents
  &(vtt_S8273C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S8273C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8273C5),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8273C5),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8273C11  : S8273C8 , S19894C34 , S8273C6 {
  virtual  ~S8273C11(); // _ZN8S8273C11D2Ev
  S8273C11(); // tgen
};
//SIG(-1 S8273C11) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S8273C11()
{
  extern Class_Descriptor cd_S8273C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S8273C11, buf);
    S8273C11 *dp, &lv = *(dp=new (buf) S8273C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S8273C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C11)");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*), ABISELECT(24,12), "S8273C11");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*), 0, "S8273C11");
    check_base_class_offset(lv, (S8273C8*), 0, "S8273C11");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S8273C11");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*), ABISELECT(16,8), "S8273C11");
    test_class_info(&lv, &cd_S8273C11);
    dp->~S8273C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C11(Test_S8273C11, "S8273C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S8273C11C1Ev();
extern void _ZN8S8273C11D2Ev();
Name_Map name_map_S8273C11[] = {
  NSPAIR(_ZN8S8273C11C1Ev),
  NSPAIR(_ZN8S8273C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
static Base_Class bases_S8273C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8273C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S8273C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8273C6,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S8273C11[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S8273C11[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C11[] = {
  {&(_ZTV8S8273C11[5]),  5,11},
  {&(_tg__ZTV7S8273C8__8S8273C11[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C11[5]),  5,6},
  {&(_ZTV8S8273C11[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
Class_Descriptor cd_S8273C11 = {  "S8273C11", // class name
  bases_S8273C11, 5,
  &(vtc_S8273C11[0]), // expected_vtbl_contents
  &(vtt_S8273C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S8273C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S8273C11),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C11),4, //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  S8273C10  : S19894C6_nt , S8273C6 , virtual S8273C5 , S8273C8 , S8273C11 {
  virtual  ~S8273C10(); // _ZN8S8273C10D2Ev
  S8273C10(); // tgen
};
//SIG(-1 S8273C10) C1{ BC2{ m Fp} BC3{ v1} VBC4{ BC3 BC2 VBC5{ VBC6{ m} VBC3 FC3} v2} BC5 BC7{ BC5 BC6 BC3 vd} vd}


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

static void Test_S8273C10()
{
  extern Class_Descriptor cd_S8273C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S8273C10, buf);
    S8273C10 *dp, &lv = *(dp=new (buf) S8273C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S8273C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C10)");
    /*is_ambiguous_... S8273C10::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S8273C10");
    /*is_ambiguous_... S8273C10::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*), 0, "S8273C10");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*), ABISELECT(56,28), "S8273C10");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*), ABISELECT(64,32), "S8273C10");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C10");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C10");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*), 0, "S8273C10");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(72,36), "S8273C10");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(72,36), "S8273C10");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*), ABISELECT(72,36), "S8273C10");
    check_base_class_offset(lv, (S8273C8*)(S8273C5*), ABISELECT(72,36), "S8273C10");
    check_base_class_offset(lv, (S8273C5*), ABISELECT(56,28), "S8273C10");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*), ABISELECT(16,8), "S8273C10");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*), ABISELECT(32,16), "S8273C10");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*), ABISELECT(32,16), "S8273C10");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*), ABISELECT(48,24), "S8273C10");
    check_base_class_offset(lv, (S8273C11*), ABISELECT(32,16), "S8273C10");
    test_class_info(&lv, &cd_S8273C10);
    dp->~S8273C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C10(Test_S8273C10, "S8273C10", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN8S8273C10C1Ev();
extern void _ZN8S8273C10D2Ev();
Name_Map name_map_S8273C10[] = {
  NSPAIR(_ZN8S8273C10C1Ev),
  NSPAIR(_ZN8S8273C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
static Base_Class bases_S8273C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8273C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8273C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8273C6,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(72,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8273C5,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8273C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(48,24), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI8S8273C10[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C10D1Ev();
extern void _ZN8S8273C10D0Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZThn32_N8S8273C10D1Ev,_ZThn16_N8S8273C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S8273C10D0Ev,_ZThn16_N8S8273C10D0Ev)();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C10[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C10D0Ev,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S8273C10D1Ev,_ZThn16_N8S8273C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S8273C10D0Ev,_ZThn16_N8S8273C10D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S8273C10[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A__8S8273C10[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C8__A__8S8273C10[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C10[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C11__A2__8S8273C10[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C11__A2__8S8273C10[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C11__8S8273C10[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C10[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5__8S8273C10[] = {
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C10[] = {
  0,
  ABISELECT(-72,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C10[] = {
  {&(_ZTV8S8273C10[6]),  6,41},
  {&(_tg__ZTV7S8273C8__A__8S8273C10[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C8__A__8S8273C10[3]),  3,4},
  {&(_tg__ZTV8S8273C11__8S8273C10[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C11__A2__8S8273C10[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C11__A2__8S8273C10[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C11__8S8273C10[3]),  3,4},
  {&(_ZTV8S8273C10[33]),  33,41},
  {&(_ZTV8S8273C10[40]),  40,41},
  {&(_ZTV8S8273C10[40]),  40,41},
  {&(_ZTV8S8273C10[14]),  14,41},
  {&(_ZTV8S8273C10[20]),  20,41},
  {&(_tg__ZTV7S8273C5__8S8273C10[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C5__8S8273C10[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C5__8S8273C10[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C10[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C10[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S8273C10[];
extern  VTBL_ENTRY _ZTV8S8273C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C10[];
Class_Descriptor cd_S8273C10 = {  "S8273C10", // class name
  bases_S8273C10, 13,
  &(vtc_S8273C10[0]), // expected_vtbl_contents
  &(vtt_S8273C10[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI8S8273C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8273C10),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C10),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  S8273C12  : S8273C11 {
  ~S8273C12(); // tgen
  S8273C12(); // tgen
};
//SIG(-1 S8273C12) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S8273C12()
{
  extern Class_Descriptor cd_S8273C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S8273C12, buf);
    S8273C12 *dp, &lv = *(dp=new (buf) S8273C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S8273C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C12)");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*), ABISELECT(24,12), "S8273C12");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*), 0, "S8273C12");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*), 0, "S8273C12");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*), 0, "S8273C12");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*), ABISELECT(16,8), "S8273C12");
    check_base_class_offset(lv, (S8273C11*), 0, "S8273C12");
    test_class_info(&lv, &cd_S8273C12);
    dp->~S8273C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C12(Test_S8273C12, "S8273C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S8273C12C1Ev();
extern void _ZN8S8273C12D1Ev();
Name_Map name_map_S8273C12[] = {
  NSPAIR(_ZN8S8273C12C1Ev),
  NSPAIR(_ZN8S8273C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
static Base_Class bases_S8273C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8273C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8273C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8273C6,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8273C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S8273C12[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C12D1Ev();
extern void _ZN8S8273C12D0Ev();
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C12[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C12[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C12D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C12[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S8273C12[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C12[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C11__8S8273C12[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C12[] = {
  {&(_ZTV8S8273C12[5]),  5,11},
  {&(_tg__ZTV8S8273C11__8S8273C12[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C11__8S8273C12[5]),  5,6},
  {&(_tg__ZTV7S8273C88S8273C11__8S8273C12[5]),  5,6},
  {&(_tg__ZTV8S8273C11__8S8273C12[5]),  5,8},
  {&(_ZTV8S8273C12[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S8273C12[];
extern  VTBL_ENTRY _ZTV8S8273C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C12[];
Class_Descriptor cd_S8273C12 = {  "S8273C12", // class name
  bases_S8273C12, 6,
  &(vtc_S8273C12[0]), // expected_vtbl_contents
  &(vtt_S8273C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S8273C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S8273C12),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C12),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  S8273C13  : virtual S8273C8 , virtual S8273C5 {
  ~S8273C13(); // tgen
  S8273C13(); // tgen
};
//SIG(-1 S8273C13) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S8273C13()
{
  extern Class_Descriptor cd_S8273C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S8273C13, buf);
    S8273C13 *dp, &lv = *(dp=new (buf) S8273C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S8273C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C13)");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C13");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*), 0, "S8273C13");
    check_base_class_offset(lv, (S8273C8*), ABISELECT(8,4), "S8273C13");
    check_base_class_offset(lv, (S8273C8*)(S8273C5*), ABISELECT(8,4), "S8273C13");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*), ABISELECT(24,12), "S8273C13");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*), ABISELECT(32,16), "S8273C13");
    check_base_class_offset(lv, (S8273C5*), ABISELECT(24,12), "S8273C13");
    test_class_info(&lv, &cd_S8273C13);
    dp->~S8273C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C13(Test_S8273C13, "S8273C13", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S8273C13C1Ev();
extern void _ZN8S8273C13D1Ev();
Name_Map name_map_S8273C13[] = {
  NSPAIR(_ZN8S8273C13C1Ev),
  NSPAIR(_ZN8S8273C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
static Base_Class bases_S8273C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8273C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8273C5,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8273C13[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY vtc_S8273C13[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S8273C13[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C8__8S8273C13[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5__8S8273C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__A1__7S8273C5__8S8273C13[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C13[] = {
  {&(_ZTV8S8273C13[7]),  7,23},
  {&(_ZTV8S8273C13[13]),  13,23},
  {&(_ZTV8S8273C13[7]),  7,23},
  {&(_ZTV8S8273C13[21]),  21,23},
  {&(_tg__ZTV7S8273C8__8S8273C13[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C8__8S8273C13[3]),  3,4},
  {&(_tg__ZTV7S8273C5__8S8273C13[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C5__8S8273C13[5]),  5,6},
  {&(_tg__ZTV7S8273C6__A1__7S8273C5__8S8273C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S8273C13[];
extern  VTBL_ENTRY _ZTV8S8273C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C13[];
Class_Descriptor cd_S8273C13 = {  "S8273C13", // class name
  bases_S8273C13, 6,
  &(vtc_S8273C13[0]), // expected_vtbl_contents
  &(vtt_S8273C13[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S8273C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8273C13),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C13),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8273C4  : S8273C5 , virtual S8273C10 , virtual S8273C12 , virtual S8273C13 , S19894C17_nt {
  virtual  ~S8273C4(); // _ZN7S8273C4D2Ev
  S8273C4(); // tgen
};
//SIG(-1 S8273C4) C1{ BC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2} VBC7{ BC4 BC3 VBC2 BC5 BC8{ BC5 BC6 BC3 vd} vd} VBC9{ BC8} VBC10{ VBC5 VBC2} BC11{ m} vd}


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

static void Test_S8273C4()
{
  extern Class_Descriptor cd_S8273C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S8273C4, buf);
    S8273C4 *dp, &lv = *(dp=new (buf) S8273C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S8273C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C4)");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*), 0, "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*), ABISELECT(8,4), "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C4");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C10*), 0, "S8273C4");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*)(S8273C10*), 0, "S8273C4");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*)(S8273C12*), 0, "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(16,8), "S8273C4");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C10*), ABISELECT(16,8), "S8273C4");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*)(S8273C10*), ABISELECT(16,8), "S8273C4");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*)(S8273C12*), ABISELECT(16,8), "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C5*), ABISELECT(16,8), "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C5*), ABISELECT(16,8), "S8273C4");
    check_base_class_offset(lv, (S8273C8*)(S8273C13*), ABISELECT(16,8), "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C5*), 0, "S8273C4");
    /*is_ambiguous_... S8273C10::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C10*), ABISELECT(40,20), "S8273C4");
    /*is_ambiguous_... S8273C10::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C10*), ABISELECT(32,16), "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*), ABISELECT(88,44), "S8273C4");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*), ABISELECT(96,48), "S8273C4");
    check_base_class_offset(lv, (S8273C5*)(S8273C10*), ABISELECT(88,44), "S8273C4");
    check_base_class_offset(lv, (S8273C5*)(S8273C13*), ABISELECT(88,44), "S8273C4");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C10*), ABISELECT(48,24), "S8273C4");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*)(S8273C10*), ABISELECT(64,32), "S8273C4");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*)(S8273C10*), ABISELECT(64,32), "S8273C4");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*)(S8273C10*), ABISELECT(80,40), "S8273C4");
    check_base_class_offset(lv, (S8273C11*)(S8273C10*), ABISELECT(64,32), "S8273C4");
    check_base_class_offset(lv, (S8273C10*), ABISELECT(32,16), "S8273C4");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*)(S8273C12*), ABISELECT(104,52), "S8273C4");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*)(S8273C12*), ABISELECT(104,52), "S8273C4");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*)(S8273C12*), ABISELECT(120,60), "S8273C4");
    check_base_class_offset(lv, (S8273C11*)(S8273C12*), ABISELECT(104,52), "S8273C4");
    check_base_class_offset(lv, (S8273C12*), ABISELECT(104,52), "S8273C4");
    check_base_class_offset(lv, (S8273C13*), ABISELECT(128,64), "S8273C4");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S8273C4");
    test_class_info(&lv, &cd_S8273C4);
    dp->~S8273C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C4(Test_S8273C4, "S8273C4", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN7S8273C4C1Ev();
extern void _ZN7S8273C4D2Ev();
Name_Map name_map_S8273C4[] = {
  NSPAIR(_ZN7S8273C4C1Ev),
  NSPAIR(_ZN7S8273C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S8273C10;
extern VTBL_ENTRY _ZTI8S8273C10[];
extern  VTBL_ENTRY _ZTV8S8273C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C10[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S8273C12;
extern VTBL_ENTRY _ZTI8S8273C12[];
extern  VTBL_ENTRY _ZTV8S8273C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C12[];
extern Class_Descriptor cd_S8273C13;
extern VTBL_ENTRY _ZTI8S8273C13[];
extern  VTBL_ENTRY _ZTV8S8273C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C13[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S8273C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8273C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8273C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8273C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8273C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8273C5,    ABISELECT(88,44), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8273C8,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(80,40), //bcp->offset
    44, //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
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(64,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8273C10,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C8,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(120,60), //bcp->offset
    65, //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
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S8273C12,    ABISELECT(104,52), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C13,    ABISELECT(128,64), //bcp->offset
    68, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8273C4[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C4D1Ev();
extern void _ZN7S8273C4D0Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S8273C4D1Ev,_ZTv0_n32_N7S8273C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S8273C4D1Ev,_ZThn16_N7S8273C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S8273C4D0Ev,_ZTv0_n32_N7S8273C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S8273C4D0Ev,_ZThn16_N7S8273C4D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTvn32_n64_N7S8273C4D1Ev,_ZTvn16_n32_N7S8273C4D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N7S8273C4D0Ev,_ZTvn16_n32_N7S8273C4D0Ev)();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S8273C4D1Ev,_ZTv0_n24_N7S8273C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S8273C4D1Ev,_ZThn52_N7S8273C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8273C4D0Ev,_ZTv0_n24_N7S8273C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S8273C4D0Ev,_ZThn52_N7S8273C4D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C4[] = {
  ABISELECT(128,64),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  (VTBL_ENTRY)&_ZN7S8273C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8273C4D0Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C4D1Ev,_ZTv0_n32_N7S8273C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C4D0Ev,_ZTv0_n32_N7S8273C4D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N7S8273C4D1Ev,_ZTvn16_n32_N7S8273C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N7S8273C4D0Ev,_ZTvn16_n32_N7S8273C4D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C4D1Ev,_ZTv0_n24_N7S8273C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C4D0Ev,_ZTv0_n24_N7S8273C4D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S8273C4[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__A__7S8273C4[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5__A__7S8273C4[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C4[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C10D1Ev();
extern void _ZN8S8273C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C10__7S8273C4[] = {
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C10D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C10__A1__7S8273C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C10__A1__7S8273C4[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C118S8273C10__7S8273C4[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C118S8273C10__A2__7S8273C4[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C118S8273C10__A2__7S8273C4[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C118S8273C10__7S8273C4[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C10__7S8273C4[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C10__7S8273C4[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A__8S8273C10__7S8273C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZThn32_N8S8273C10D1Ev,_ZThn16_N8S8273C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S8273C10D0Ev,_ZThn16_N8S8273C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C10__7S8273C4[] = {
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S8273C10D1Ev,_ZThn16_N8S8273C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S8273C10D0Ev,_ZThn16_N8S8273C10D0Ev),
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__A1__7S8273C4[] = {
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5__A1__7S8273C4[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C12D1Ev();
extern void _ZN8S8273C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C12__7S8273C4[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C12[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C12D0Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C118S8273C12__A1__7S8273C4[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C118S8273C12__A3__7S8273C4[] = {
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C118S8273C12__A3__7S8273C4[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C118S8273C12__A1__7S8273C4[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C12__7S8273C4[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S8273C12[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C13__7S8273C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C13__7S8273C4[] = {
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C13__7S8273C4[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-88,-44),
  ABISELECT(-72,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
static  VTT_ENTRY vtt_S8273C4[] = {
  {&(_ZTV7S8273C4[9]),  9,76},
  {&(_tg__ZTV7S8273C5__A__7S8273C4[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C5__A__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C5__A__7S8273C4[5]),  5,6},
  {&(_ZTV7S8273C4[18]),  18,76},
  {&(_ZTV7S8273C4[18]),  18,76},
  {&(_ZTV7S8273C4[27]),  27,76},
  {&(_ZTV7S8273C4[54]),  54,76},
  {&(_ZTV7S8273C4[35]),  35,76},
  {&(_ZTV7S8273C4[41]),  41,76},
  {&(_ZTV7S8273C4[46]),  46,76},
  {&(_ZTV7S8273C4[62]),  62,76},
  {&(_ZTV7S8273C4[67]),  67,76},
  {&(_ZTV7S8273C4[75]),  75,76},
  {&(_tg__ZTV7S8273C8__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C4[5]),  5,6},
  {&(_tg__ZTV8S8273C10__7S8273C4[6]),  6,9},
  {&(_tg__ZTV7S8273C88S8273C10__A1__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C10__A1__7S8273C4[3]),  3,4},
  {&(_tg__ZTV8S8273C118S8273C10__7S8273C4[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C118S8273C10__A2__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C118S8273C10__A2__7S8273C4[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C118S8273C10__7S8273C4[3]),  3,4},
  {&(_tg__ZTV7S8273C5__8S8273C10__7S8273C4[7]),  7,9},
  {&(_tg__ZTV7S8273C8__8S8273C10__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C10__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C8__A__8S8273C10__7S8273C4[5]),  5,6},
  {&(_tg__ZTV8S8273C11__8S8273C10__7S8273C4[5]),  5,8},
  {&(_tg__ZTV7S8273C5__A1__7S8273C4[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C5__A1__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C5__A1__7S8273C4[5]),  5,6},
  {&(_tg__ZTV8S8273C12__7S8273C4[5]),  5,8},
  {&(_tg__ZTV8S8273C118S8273C12__A1__7S8273C4[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C118S8273C12__A3__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C118S8273C12__A3__7S8273C4[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C118S8273C12__A1__7S8273C4[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C12__7S8273C4[3]),  3,4},
  {&(_tg__ZTV8S8273C13__7S8273C4[7]),  7,8},
  {&(_tg__ZTV7S8273C8__8S8273C13__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C13__7S8273C4[5]),  5,6},
  {&(_tg__ZTV7S8273C5__8S8273C13__7S8273C4[7]),  7,9},
};
extern VTBL_ENTRY _ZTI7S8273C4[];
extern  VTBL_ENTRY _ZTV7S8273C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C4[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8273C4D0Ev,_ZTv0_n24_N7S8273C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S8273C4D0Ev,_ZThn52_N7S8273C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8273C4D1Ev,_ZTv0_n24_N7S8273C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S8273C4D1Ev,_ZThn52_N7S8273C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S8273C4D0Ev,_ZTv0_n32_N7S8273C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S8273C4D0Ev,_ZThn16_N7S8273C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S8273C4D1Ev,_ZTv0_n32_N7S8273C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S8273C4D1Ev,_ZThn16_N7S8273C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8273C4 = {  "S8273C4", // class name
  bases_S8273C4, 24,
  &(vtc_S8273C4[0]), // expected_vtbl_contents
  &(vtt_S8273C4[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI7S8273C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S8273C4),76, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8273C4),41, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8273C17  : S8273C8 , virtual S19894C6_nt , S8273C5 {
  int s8273c17f0;
  ~S8273C17(); // tgen
  S8273C17(); // tgen
};
//SIG(-1 S8273C17) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ m Fp} BC6{ BC4 BC5 VBC2 v2} Fi}


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

static void Test_S8273C17()
{
  extern Class_Descriptor cd_S8273C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S8273C17, buf);
    S8273C17 *dp, &lv = *(dp=new (buf) S8273C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S8273C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C17)");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C17");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C17");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), 0, "S8273C17");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), 0, "S8273C17");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*), 0, "S8273C17");
    /*is_ambiguous_... S8273C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(40,20), "S8273C17");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*), ABISELECT(16,8), "S8273C17");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*), ABISELECT(24,12), "S8273C17");
    check_base_class_offset(lv, (S8273C8*)(S8273C5*), ABISELECT(48,24), "S8273C17");
    check_base_class_offset(lv, (S8273C5*), ABISELECT(16,8), "S8273C17");
    check_field_offset(lv, s8273c17f0, ABISELECT(32,16), "S8273C17.s8273c17f0");
    test_class_info(&lv, &cd_S8273C17);
    dp->~S8273C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C17(Test_S8273C17, "S8273C17", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S8273C17C1Ev();
extern void _ZN8S8273C17D1Ev();
Name_Map name_map_S8273C17[] = {
  NSPAIR(_ZN8S8273C17C1Ev),
  NSPAIR(_ZN8S8273C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
static Base_Class bases_S8273C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8273C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8273C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C6,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8273C8,    ABISELECT(48,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8273C5,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S8273C17[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S8273C17[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A__8S8273C17[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5__8S8273C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__A1__7S8273C5__8S8273C17[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A1__8S8273C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C8__A1__8S8273C17[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C17[] = {
  {&(_ZTV8S8273C17[7]),  7,21},
  {&(_tg__ZTV7S8273C8__A__8S8273C17[5]),  5,6},
  {&(_tg__ZTV7S8273C8__A__8S8273C17[5]),  5,6},
  {&(_tg__ZTV7S8273C5__8S8273C17[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C5__8S8273C17[5]),  5,6},
  {&(_tg__ZTV7S8273C6__A1__7S8273C5__8S8273C17[3]),  3,4},
  {&(_ZTV8S8273C17[7]),  7,21},
  {&(_ZTV8S8273C17[13]),  13,21},
  {&(_ZTV8S8273C17[20]),  20,21},
  {&(_tg__ZTV7S8273C8__A1__8S8273C17[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C8__A1__8S8273C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S8273C17[];
extern  VTBL_ENTRY _ZTV8S8273C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C17[];
Class_Descriptor cd_S8273C17 = {  "S8273C17", // class name
  bases_S8273C17, 8,
  &(vtc_S8273C17[0]), // expected_vtbl_contents
  &(vtt_S8273C17[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S8273C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S8273C17),21, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C17),11, //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  S8273C16  : virtual S8273C8 , S8273C17 , virtual S21216C26_nt , S19894C34 , virtual S19894C17_nt {
  ::S19894C34 s8273c16f0;
  virtual  ~S8273C16(); // _ZN8S8273C16D2Ev
  S8273C16(); // tgen
};
//SIG(-1 S8273C16) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} BC5{ BC2 VBC6{ m Fp} BC7{ BC4 BC6 VBC2 v2} Fi} VBC8{ vd m} BC3 VBC9{ m} vd FC3}


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

static void Test_S8273C16()
{
  extern Class_Descriptor cd_S8273C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S8273C16, buf);
    S8273C16 *dp, &lv = *(dp=new (buf) S8273C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S8273C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C16)");
    /*is_ambiguous_... S8273C16::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), ABISELECT(56,32), "S8273C16");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C17*), ABISELECT(56,32), "S8273C16");
    /*is_ambiguous_... S8273C16::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(40,24), "S8273C16");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C17*), ABISELECT(40,24), "S8273C16");
    /*is_ambiguous_... S8273C16::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*), ABISELECT(40,24), "S8273C16");
    check_base_class_offset(lv, (S8273C8*)(S8273C5*)(S8273C17*), ABISELECT(40,24), "S8273C16");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C17*), 0, "S8273C16");
    /*is_ambiguous_... S8273C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C17*), ABISELECT(56,32), "S8273C16");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*)(S8273C17*), ABISELECT(16,8), "S8273C16");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*)(S8273C17*), ABISELECT(24,12), "S8273C16");
    check_base_class_offset(lv, (S8273C5*)(S8273C17*), ABISELECT(16,8), "S8273C16");
    check_base_class_offset(lv, (S8273C17*), 0, "S8273C16");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(64,36), "S8273C16");
    /*is_ambiguous_... S8273C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S8273C16");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S8273C16");
    check_field_offset(lv, s8273c16f0, ABISELECT(36,20), "S8273C16.s8273c16f0");
    test_class_info(&lv, &cd_S8273C16);
    dp->~S8273C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C16(Test_S8273C16, "S8273C16", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S8273C16C1Ev();
extern void _ZN8S8273C16D2Ev();
Name_Map name_map_S8273C16[] = {
  NSPAIR(_ZN8S8273C16C1Ev),
  NSPAIR(_ZN8S8273C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S8273C17;
extern VTBL_ENTRY _ZTI8S8273C17[];
extern  VTBL_ENTRY _ZTV8S8273C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C17[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S8273C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8273C6,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S8273C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8273C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8273C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S8273C16[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C16D1Ev();
extern void _ZN8S8273C16D0Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S8273C16D1Ev,_ZThn36_N8S8273C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S8273C16D0Ev,_ZThn36_N8S8273C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8273C16[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C16D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C16D0Ev,
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S8273C16[];
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C17__8S8273C16[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C17__A1__8S8273C16[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C17__A1__8S8273C16[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C58S8273C17__8S8273C16[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C58S8273C17__8S8273C16[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A1__8S8273C17__8S8273C16[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C17__8S8273C16[] = {
  ABISELECT(24,16),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C16[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C16[] = {
  {&(_ZTV8S8273C16[9]),  9,30},
  {&(_tg__ZTV8S8273C17__8S8273C16[7]),  7,8},
  {&(_tg__ZTV7S8273C88S8273C17__A1__8S8273C16[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C17__A1__8S8273C16[3]),  3,4},
  {&(_tg__ZTV7S8273C58S8273C17__8S8273C16[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C58S8273C17__8S8273C16[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C58S8273C17__8S8273C16[5]),  5,6},
  {&(_tg__ZTV7S8273C8__A1__8S8273C17__8S8273C16[5]),  5,6},
  {&(_tg__ZTV7S8273C5__8S8273C17__8S8273C16[5]),  5,7},
  {&(_tg__ZTV7S8273C8__A1__8S8273C17__8S8273C16[5]),  5,6},
  {&(_ZTV8S8273C16[24]),  24,30},
  {&(_ZTV8S8273C16[24]),  24,30},
  {&(_ZTV8S8273C16[17]),  17,30},
  {&(_ZTV8S8273C16[28]),  28,30},
  {&(_tg__ZTV7S8273C8__8S8273C16[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C16[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S8273C16[];
extern  VTBL_ENTRY _ZTV8S8273C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C16[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S8273C16D0Ev,_ZThn36_N8S8273C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S8273C16D1Ev,_ZThn36_N8S8273C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8273C16 = {  "S8273C16", // class name
  bases_S8273C16, 12,
  &(vtc_S8273C16[0]), // expected_vtbl_contents
  &(vtt_S8273C16[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S8273C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8273C16),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C16),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8273C18  : virtual S8273C11 , virtual S19894C6_nt {
  void *s8273c18f0[9];
  ~S8273C18(); // tgen
  S8273C18(); // tgen
};
//SIG(-1 S8273C18) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S8273C18()
{
  extern Class_Descriptor cd_S8273C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S8273C18, buf);
    S8273C18 *dp, &lv = *(dp=new (buf) S8273C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S8273C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C18)");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*), 0, "S8273C18");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*), 0, "S8273C18");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*), ABISELECT(80,40), "S8273C18");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*), ABISELECT(80,40), "S8273C18");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*), ABISELECT(96,48), "S8273C18");
    check_base_class_offset(lv, (S8273C11*), ABISELECT(80,40), "S8273C18");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S8273C18");
    check_field_offset(lv, s8273c18f0, ABISELECT(8,4), "S8273C18.s8273c18f0");
    test_class_info(&lv, &cd_S8273C18);
    dp->~S8273C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C18(Test_S8273C18, "S8273C18", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S8273C18C1Ev();
extern void _ZN8S8273C18D1Ev();
Name_Map name_map_S8273C18[] = {
  NSPAIR(_ZN8S8273C18C1Ev),
  NSPAIR(_ZN8S8273C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S8273C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8273C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8273C18[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C18D1Ev();
extern void _ZN8S8273C18D0Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S8273C18D1Ev,_ZThn40_N8S8273C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S8273C18D0Ev,_ZThn40_N8S8273C18D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C18[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C18D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C18D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S8273C18[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C11__8S8273C18[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C11__8S8273C18[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C11__8S8273C18[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C18[] = {
  {&(_ZTV8S8273C18[7]),  7,22},
  {&(_ZTV8S8273C18[16]),  16,22},
  {&(_ZTV8S8273C18[7]),  7,22},
  {&(_ZTV8S8273C18[21]),  21,22},
  {&(_tg__ZTV8S8273C11__8S8273C18[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C11__8S8273C18[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C11__8S8273C18[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C11__8S8273C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S8273C18[];
extern  VTBL_ENTRY _ZTV8S8273C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C18[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C18D0Ev,_ZThn40_N8S8273C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C18D1Ev,_ZThn40_N8S8273C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8273C18 = {  "S8273C18", // class name
  bases_S8273C18, 7,
  &(vtc_S8273C18[0]), // expected_vtbl_contents
  &(vtt_S8273C18[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S8273C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8273C18),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C18),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8273C15  : virtual S8273C6 , virtual S8273C16 , virtual S8273C18 {
  __tsi64 s8273c15f0;
  virtual  ~S8273C15(); // _ZN8S8273C15D2Ev
  S8273C15(); // tgen
};
//SIG(-1 S8273C15) C1{ VBC2{ v1} VBC3{ VBC4{ VBC5{ m} VBC2 FC2} BC6{ BC4 VBC7{ m Fp} BC8{ BC2 BC7 VBC4 v2} Fi} VBC9{ vd m} BC5 VBC10{ m} vd FC5} VBC11{ VBC12{ BC4 BC5 BC2 vd} VBC7 Fp[9]} vd FL}


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

static void Test_S8273C15()
{
  extern Class_Descriptor cd_S8273C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,26)];
    init_test(&cd_S8273C15, buf);
    S8273C15 *dp, &lv = *(dp=new (buf) S8273C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,100), "sizeof(S8273C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C15)");
    /*is_ambiguous_... S8273C15::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*), ABISELECT(56,36), "S8273C15");
    /*is_ambiguous_... S8273C15::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(56,36), "S8273C15");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C17*)(S8273C16*), ABISELECT(56,36), "S8273C15");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*), ABISELECT(56,36), "S8273C15");
    /*is_ambiguous_... S8273C15::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C15");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C17*)(S8273C16*), 0, "S8273C15");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*), 0, "S8273C15");
    /*is_ambiguous_... S8273C16::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C16*), ABISELECT(56,36), "S8273C15");
    check_base_class_offset(lv, (S8273C8*)(S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(56,36), "S8273C15");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C17*)(S8273C16*), ABISELECT(16,12), "S8273C15");
    /*is_ambiguous_... S8273C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C17*)(S8273C16*), ABISELECT(72,44), "S8273C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C18*), ABISELECT(72,44), "S8273C15");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(32,20), "S8273C15");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(40,24), "S8273C15");
    check_base_class_offset(lv, (S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(32,20), "S8273C15");
    check_base_class_offset(lv, (S8273C17*)(S8273C16*), ABISELECT(16,12), "S8273C15");
    check_base_class_offset(lv, (S21216C26_nt*)(S8273C16*), 0, "S8273C15");
    /*is_ambiguous_... S8273C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C16*), ABISELECT(16,12), "S8273C15");
    check_base_class_offset(lv, (S19894C17_nt*)(S8273C16*), 0, "S8273C15");
    check_base_class_offset(lv, (S8273C16*), ABISELECT(16,12), "S8273C15");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*), ABISELECT(160,88), "S8273C15");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*), ABISELECT(160,88), "S8273C15");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*), ABISELECT(176,96), "S8273C15");
    check_base_class_offset(lv, (S8273C11*)(S8273C18*), ABISELECT(160,88), "S8273C15");
    check_base_class_offset(lv, (S8273C18*), ABISELECT(80,48), "S8273C15");
    check_field_offset(lv, s8273c15f0, ABISELECT(8,4), "S8273C15.s8273c15f0");
    test_class_info(&lv, &cd_S8273C15);
    dp->~S8273C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C15(Test_S8273C15, "S8273C15", ABISELECT(184,100));

#else // __cplusplus

extern void _ZN8S8273C15C1Ev();
extern void _ZN8S8273C15D2Ev();
Name_Map name_map_S8273C15[] = {
  NSPAIR(_ZN8S8273C15C1Ev),
  NSPAIR(_ZN8S8273C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S8273C17;
extern VTBL_ENTRY _ZTI8S8273C17[];
extern  VTBL_ENTRY _ZTV8S8273C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C17[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S8273C16;
extern VTBL_ENTRY _ZTI8S8273C16[];
extern  VTBL_ENTRY _ZTV8S8273C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C16[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S8273C18;
extern VTBL_ENTRY _ZTI8S8273C18[];
extern  VTBL_ENTRY _ZTV8S8273C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C18[];
static Base_Class bases_S8273C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8273C6,    ABISELECT(56,36), //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_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8273C8,    ABISELECT(56,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S8273C6,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8273C5,    ABISELECT(32,20), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8273C17,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8273C16,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C8,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(176,96), //bcp->offset
    61, //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(160,88), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S8273C18,    ABISELECT(80,48), //bcp->offset
    41, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8273C15[];
extern void _ZN8S8273C15D1Ev();
extern void _ZN8S8273C15D0Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S8273C15D1Ev,_ZTv0_n44_N8S8273C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S8273C15D1Ev,_ZThn12_N8S8273C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S8273C15D0Ev,_ZTv0_n44_N8S8273C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S8273C15D0Ev,_ZThn12_N8S8273C15D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S8273C15D1Ev,_ZTv0_n32_N8S8273C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S8273C15D1Ev,_ZThn48_N8S8273C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S8273C15D0Ev,_ZTv0_n32_N8S8273C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S8273C15D0Ev,_ZThn48_N8S8273C15D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S8273C15D1Ev,_ZTv0_n24_N8S8273C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S8273C15D1Ev,_ZThn88_N8S8273C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8273C15D0Ev,_ZTv0_n24_N8S8273C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S8273C15D0Ev,_ZThn88_N8S8273C15D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C15[] = {
  ABISELECT(160,88),
  ABISELECT(80,48),
  0,
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(56,36),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN8S8273C15D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C15D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S8273C15D1Ev,_ZTv0_n44_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S8273C15D0Ev,_ZTv0_n44_N8S8273C15D0Ev),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-80,-48),
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S8273C15D1Ev,_ZTv0_n32_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S8273C15D0Ev,_ZTv0_n32_N8S8273C15D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-104,-52),
  ABISELECT(-160,-88),
  ABISELECT(-104,-52),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C15D1Ev,_ZTv0_n24_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C15D0Ev,_ZTv0_n24_N8S8273C15D0Ev),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S8273C15[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C16D1Ev();
extern void _ZN8S8273C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C16__8S8273C15[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C16D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C16D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C178S8273C16__8S8273C15[] = {
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C178S8273C16__A1__8S8273C15[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C178S8273C16__A1__8S8273C15[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C58S8273C178S8273C16__8S8273C15[] = {
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C58S8273C178S8273C16__8S8273C15[] = {
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A1__8S8273C178S8273C16__8S8273C15[] = {
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C178S8273C16__8S8273C15[] = {
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C16__8S8273C15[] = {
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C58S8273C17__8S8273C16__8S8273C15[] = {
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S8273C16__8S8273C15[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C15[] = {
  0,
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C18D1Ev();
extern void _ZN8S8273C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C18__8S8273C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C18D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C18D0Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S8273C18D1Ev,_ZThn40_N8S8273C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S8273C18D0Ev,_ZThn40_N8S8273C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C18__8S8273C15[] = {
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-160,-88),
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C18__8S8273C15[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C68S8273C11__A1__8S8273C18__8S8273C15[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C15[] = {
  ABISELECT(-104,-52),
  ABISELECT(-160,-88),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C11__A2__8S8273C15[] = {
  ABISELECT(-104,-52),
  ABISELECT(-160,-88),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C11__A2__8S8273C15[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C11__8S8273C15[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C15[] = {
  {&(_ZTV8S8273C15[12]),  12,64},
  {&(_ZTV8S8273C15[40]),  40,64},
  {&(_ZTV8S8273C15[25]),  25,64},
  {&(_ZTV8S8273C15[40]),  40,64},
  {&(_ZTV8S8273C15[33]),  33,64},
  {&(_ZTV8S8273C15[12]),  12,64},
  {&(_ZTV8S8273C15[49]),  49,64},
  {&(_ZTV8S8273C15[58]),  58,64},
  {&(_ZTV8S8273C15[63]),  63,64},
  {&(_tg__ZTV8S8273C16__8S8273C15[9]),  9,12},
  {&(_tg__ZTV8S8273C178S8273C16__8S8273C15[7]),  7,8},
  {&(_tg__ZTV7S8273C88S8273C178S8273C16__A1__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C178S8273C16__A1__8S8273C15[3]),  3,4},
  {&(_tg__ZTV7S8273C58S8273C178S8273C16__8S8273C15[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C58S8273C178S8273C16__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C58S8273C178S8273C16__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C8__A1__8S8273C178S8273C16__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C5__8S8273C178S8273C16__8S8273C15[5]),  5,7},
  {&(_tg__ZTV7S8273C8__A1__8S8273C178S8273C16__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C16__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C16__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C58S8273C17__8S8273C16__8S8273C15[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S8273C16__8S8273C15[3]),  3,5},
  {&(_tg__ZTV7S8273C8__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C15[5]),  5,6},
  {&(_tg__ZTV8S8273C18__8S8273C15[7]),  7,10},
  {&(_tg__ZTV8S8273C11__8S8273C18__8S8273C15[6]),  6,9},
  {&(_tg__ZTV7S8273C6__8S8273C18__8S8273C15[3]),  3,4},
  {&(_tg__ZTV7S8273C68S8273C11__A1__8S8273C18__8S8273C15[2]),  2,3},
  {&(_tg__ZTV8S8273C11__8S8273C15[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C11__A2__8S8273C15[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C11__A2__8S8273C15[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C11__8S8273C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S8273C15[];
extern  VTBL_ENTRY _ZTV8S8273C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C15[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C18D0Ev,_ZThn40_N8S8273C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C18D1Ev,_ZThn40_N8S8273C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C15D0Ev,_ZTv0_n24_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8273C15D0Ev,_ZThn88_N8S8273C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C15D1Ev,_ZTv0_n24_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8273C15D1Ev,_ZThn88_N8S8273C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S8273C15D0Ev,_ZTv0_n32_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C15D0Ev,_ZThn48_N8S8273C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S8273C15D1Ev,_ZTv0_n32_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C15D1Ev,_ZThn48_N8S8273C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S8273C15D0Ev,_ZTv0_n44_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S8273C15D0Ev,_ZThn12_N8S8273C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S8273C15D1Ev,_ZTv0_n44_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S8273C15D1Ev,_ZThn12_N8S8273C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8273C15 = {  "S8273C15", // class name
  bases_S8273C15, 18,
  &(vtc_S8273C15[0]), // expected_vtbl_contents
  &(vtt_S8273C15[0]), // expected_vtt_contents
  ABISELECT(184,100), // object size
  NSPAIRA(_ZTI8S8273C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S8273C15),64, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8273C15),33, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8273C1  : S21216C26_nt , virtual S3223C8_nt , S8273C4 , S8273C15 {
  virtual  ~S8273C1(); // _ZN7S8273C1D2Ev
  S8273C1(); // tgen
};
//SIG(1 S8273C1) C1{ BC2{ vd m} VBC3{ m Fi} BC4{ BC5{ BC6{ v1} BC7{ m Fp} VBC8{ VBC9{ m} VBC6 FC6} v2} VBC10{ BC7 BC6 VBC5 BC8 BC11{ BC8 BC9 BC6 vd} vd} VBC12{ BC11} VBC13{ VBC8 VBC5} BC14{ m} vd} BC15{ VBC6 VBC16{ VBC8 BC17{ BC8 VBC7 BC5 Fi} VBC2 BC9 VBC14 vd FC9} VBC18{ VBC11 VBC7 Fp[9]} vd FL} vd}


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

static void Test_S8273C1()
{
  extern Class_Descriptor cd_S8273C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,43)];
    init_test(&cd_S8273C1, buf);
    S8273C1 *dp, &lv = *(dp=new (buf) S8273C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,168), "sizeof(S8273C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8273C1)");
    /*is_ambiguous_... S8273C1::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S8273C1");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(40,24), "S8273C1");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*)(S8273C4*), ABISELECT(8,4), "S8273C1");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*)(S8273C4*), ABISELECT(16,8), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*), 0, "S8273C1");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C10*), 0, "S8273C1");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*)(S8273C10*), 0, "S8273C1");
    check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*)(S8273C12*), 0, "S8273C1");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C17*)(S8273C16*), 0, "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C8*)(S8273C11*), 0, "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C10*), ABISELECT(48,28), "S8273C1");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*)(S8273C10*), ABISELECT(48,28), "S8273C1");
    check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*)(S8273C12*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C15::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C15*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C17*)(S8273C16*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C11 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C8*)(S8273C11*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C5*)(S8273C4*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C5*), ABISELECT(48,28), "S8273C1");
    check_base_class_offset(lv, (S8273C8*)(S8273C13*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C16::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C16*), ABISELECT(48,28), "S8273C1");
    check_base_class_offset(lv, (S8273C8*)(S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(48,28), "S8273C1");
    /*is_ambiguous_... S8273C4::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C5*)(S8273C4*), ABISELECT(8,4), "S8273C1");
    /*is_ambiguous_... S8273C10::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C10*), ABISELECT(72,40), "S8273C1");
    /*is_ambiguous_... S8273C10::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C10*), ABISELECT(64,36), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C5 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*), ABISELECT(120,64), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C5 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*), ABISELECT(128,68), "S8273C1");
    check_base_class_offset(lv, (S8273C5*)(S8273C10*), ABISELECT(120,64), "S8273C1");
    check_base_class_offset(lv, (S8273C5*)(S8273C13*), ABISELECT(120,64), "S8273C1");
    /*is_ambiguous_... S8273C10::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C10*), ABISELECT(80,44), "S8273C1");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*)(S8273C10*), ABISELECT(96,52), "S8273C1");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*)(S8273C10*), ABISELECT(96,52), "S8273C1");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*)(S8273C10*), ABISELECT(112,60), "S8273C1");
    check_base_class_offset(lv, (S8273C11*)(S8273C10*), ABISELECT(96,52), "S8273C1");
    check_base_class_offset(lv, (S8273C10*)(S8273C4*), ABISELECT(64,36), "S8273C1");
    check_base_class_offset(lv, (S8273C8*)(S8273C11*)(S8273C12*), ABISELECT(136,72), "S8273C1");
    /*is_ambiguous_... S8273C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*)(S8273C12*), ABISELECT(136,72), "S8273C1");
    /*is_ambiguous_... S8273C11::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*)(S8273C12*), ABISELECT(152,80), "S8273C1");
    check_base_class_offset(lv, (S8273C11*)(S8273C12*), ABISELECT(136,72), "S8273C1");
    check_base_class_offset(lv, (S8273C12*)(S8273C4*), ABISELECT(136,72), "S8273C1");
    check_base_class_offset(lv, (S8273C13*)(S8273C4*), ABISELECT(160,84), "S8273C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S8273C4*), ABISELECT(8,4), "S8273C1");
    check_base_class_offset(lv, (S8273C4*), ABISELECT(8,4), "S8273C1");
    /*is_ambiguous_... S8273C17::S8273C8 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C17*)(S8273C16*), ABISELECT(168,88), "S8273C1");
    /*is_ambiguous_... S8273C17::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S8273C17*)(S8273C16*), ABISELECT(208,112), "S8273C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C18*), ABISELECT(208,112), "S8273C1");
    /*is_ambiguous_... S8273C5::S8273C6 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(184,96), "S8273C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(192,100), "S8273C1");
    check_base_class_offset(lv, (S8273C5*)(S8273C17*)(S8273C16*), ABISELECT(184,96), "S8273C1");
    check_base_class_offset(lv, (S8273C17*)(S8273C16*), ABISELECT(168,88), "S8273C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S8273C16*), ABISELECT(24,12), "S8273C1");
    /*is_ambiguous_... S8273C16::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C16*), ABISELECT(168,88), "S8273C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S8273C16*), 0, "S8273C1");
    check_base_class_offset(lv, (S8273C16*)(S8273C15*), ABISELECT(168,88), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C11 */ AMB_check_base_class_offset(lv, (S8273C8*)(S8273C11*), ABISELECT(296,156), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S8273C11*), ABISELECT(296,156), "S8273C1");
    /*is_ambiguous_... S8273C1::S8273C11 */ AMB_check_base_class_offset(lv, (S8273C6*)(S8273C11*), ABISELECT(312,164), "S8273C1");
    check_base_class_offset(lv, (S8273C11*)(S8273C18*), ABISELECT(296,156), "S8273C1");
    check_base_class_offset(lv, (S8273C18*)(S8273C15*), ABISELECT(216,116), "S8273C1");
    check_base_class_offset(lv, (S8273C15*), ABISELECT(24,12), "S8273C1");
    test_class_info(&lv, &cd_S8273C1);
    dp->~S8273C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8273C1(Test_S8273C1, "S8273C1", ABISELECT(320,168));

#else // __cplusplus

extern void _ZN7S8273C1C1Ev();
extern void _ZN7S8273C1D2Ev();
Name_Map name_map_S8273C1[] = {
  NSPAIR(_ZN7S8273C1C1Ev),
  NSPAIR(_ZN7S8273C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S8273C10;
extern VTBL_ENTRY _ZTI8S8273C10[];
extern  VTBL_ENTRY _ZTV8S8273C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C10[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S8273C12;
extern VTBL_ENTRY _ZTI8S8273C12[];
extern  VTBL_ENTRY _ZTV8S8273C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C12[];
extern Class_Descriptor cd_S8273C13;
extern VTBL_ENTRY _ZTI8S8273C13[];
extern  VTBL_ENTRY _ZTV8S8273C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C13[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S8273C4;
extern VTBL_ENTRY _ZTI7S8273C4[];
extern  VTBL_ENTRY _ZTV7S8273C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C4[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S8273C5;
extern VTBL_ENTRY _ZTI7S8273C5[];
extern  VTBL_ENTRY _ZTV7S8273C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C5[];
extern Class_Descriptor cd_S8273C17;
extern VTBL_ENTRY _ZTI8S8273C17[];
extern  VTBL_ENTRY _ZTV8S8273C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C17[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S8273C16;
extern VTBL_ENTRY _ZTI8S8273C16[];
extern  VTBL_ENTRY _ZTV8S8273C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C16[];
extern Class_Descriptor cd_S8273C8;
extern VTBL_ENTRY _ZTI7S8273C8[];
extern  VTBL_ENTRY _ZTV7S8273C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S8273C6;
extern VTBL_ENTRY _ZTI7S8273C6[];
extern  VTBL_ENTRY _ZTV7S8273C6[];
extern Class_Descriptor cd_S8273C11;
extern VTBL_ENTRY _ZTI8S8273C11[];
extern  VTBL_ENTRY _ZTV8S8273C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C11[];
extern Class_Descriptor cd_S8273C18;
extern VTBL_ENTRY _ZTI8S8273C18[];
extern  VTBL_ENTRY _ZTV8S8273C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C18[];
extern Class_Descriptor cd_S8273C15;
extern VTBL_ENTRY _ZTI8S8273C15[];
extern  VTBL_ENTRY _ZTV8S8273C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8273C15[];
static Base_Class bases_S8273C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S3223C8_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8273C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8273C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(48,28), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8273C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S8273C6,    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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8273C5,    ABISELECT(120,64), //bcp->offset
    79, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(80,44), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S8273C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    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
    17, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(112,60), //bcp->offset
    76, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(96,52), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S8273C10,    ABISELECT(64,36), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(152,80), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S8273C12,    ABISELECT(136,72), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S8273C13,    ABISELECT(160,84), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S8273C4,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8273C8,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S8273C6,    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
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S8273C5,    ABISELECT(184,96), //bcp->offset
    122, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S8273C17,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    36, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S8273C16,    ABISELECT(168,88), //bcp->offset
    108, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S8273C8,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S8273C6,    ABISELECT(312,164), //bcp->offset
    149, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S8273C11,    ABISELECT(296,156), //bcp->offset
    140, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S8273C18,    ABISELECT(216,116), //bcp->offset
    129, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S8273C15,    ABISELECT(24,12), //bcp->offset
    31, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8273C1[];
extern void _ZN7S8273C1D1Ev();
extern void _ZN7S8273C1D0Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void ABISELECT(_ZThn8_N7S8273C1D1Ev,_ZThn4_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S8273C1D0Ev,_ZThn4_N7S8273C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S8273C1D1Ev,_ZTv0_n12_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S8273C1D1Ev,_ZThn12_N7S8273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8273C1D0Ev,_ZTv0_n12_N7S8273C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S8273C1D0Ev,_ZThn12_N7S8273C1D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S8273C1D1Ev,_ZTv0_n32_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S8273C1D1Ev,_ZThn36_N7S8273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S8273C1D0Ev,_ZTv0_n32_N7S8273C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S8273C1D0Ev,_ZThn36_N7S8273C1D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTvn32_n64_N7S8273C1D1Ev,_ZTvn16_n32_N7S8273C1D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N7S8273C1D0Ev,_ZTvn16_n32_N7S8273C1D0Ev)();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S8273C1D1Ev,_ZTv0_n24_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S8273C1D1Ev,_ZThn72_N7S8273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8273C1D0Ev,_ZTv0_n24_N7S8273C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S8273C1D0Ev,_ZThn72_N7S8273C1D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S8273C1D1Ev,_ZTv0_n44_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S8273C1D1Ev,_ZThn88_N7S8273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8273C1D0Ev,_ZTv0_n44_N7S8273C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S8273C1D0Ev,_ZThn88_N7S8273C1D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S8273C1D1Ev,_ZTv0_n32_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S8273C1D1Ev,_ZThn116_N7S8273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S8273C1D0Ev,_ZTv0_n32_N7S8273C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S8273C1D0Ev,_ZThn116_N7S8273C1D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S8273C1D1Ev,_ZTv0_n24_N7S8273C1D1Ev)();
extern void ABISELECT(_ZThn296_N7S8273C1D1Ev,_ZThn156_N7S8273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8273C1D0Ev,_ZTv0_n24_N7S8273C1D0Ev)();
extern void ABISELECT(_ZThn296_N7S8273C1D0Ev,_ZThn156_N7S8273C1D0Ev)() __attribute__((weak));
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY vtc_S8273C1[] = {
  ABISELECT(296,156),
  ABISELECT(216,116),
  0,
  ABISELECT(24,12),
  ABISELECT(208,112),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(48,28),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8273C1D0Ev,
  ABISELECT(152,80),
  ABISELECT(128,68),
  ABISELECT(112,60),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(-8,-4),
  ABISELECT(40,24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S8273C1D1Ev,_ZThn4_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S8273C1D0Ev,_ZThn4_N7S8273C1D0Ev),
  ABISELECT(272,144),
  ABISELECT(192,104),
  ABISELECT(-24,-12),
  0,
  ABISELECT(184,100),
  ABISELECT(-24,-12),
  ABISELECT(24,16),
  ABISELECT(144,76),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8273C1D1Ev,_ZTv0_n12_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8273C1D0Ev,_ZTv0_n12_N7S8273C1D0Ev),
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-64,-36),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C1D1Ev,_ZTv0_n32_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C1D0Ev,_ZTv0_n32_N7S8273C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-48,-24),
  ABISELECT(-96,-52),
  ABISELECT(-48,-24),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N7S8273C1D1Ev,_ZTvn16_n32_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N7S8273C1D0Ev,_ZTvn16_n32_N7S8273C1D0Ev),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C1D1Ev,_ZTv0_n24_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C1D0Ev,_ZTv0_n24_N7S8273C1D0Ev),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  ABISELECT(-168,-88),
  ABISELECT(16,8),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-120,-60),
  ABISELECT(40,24),
  ABISELECT(-120,-60),
  ABISELECT(-168,-88),
  ABISELECT(-120,-60),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8273C1D1Ev,_ZTv0_n44_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8273C1D0Ev,_ZTv0_n44_N7S8273C1D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-184,-96),
  ABISELECT(-136,-68),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  ABISELECT(-216,-116),
  ABISELECT(-8,-4),
  ABISELECT(-168,-88),
  ABISELECT(-216,-116),
  ABISELECT(80,40),
  ABISELECT(-168,-88),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C1D1Ev,_ZTv0_n32_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C1D0Ev,_ZTv0_n32_N7S8273C1D0Ev),
  ABISELECT(-296,-156),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C1D1Ev,_ZTv0_n24_N7S8273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C1D0Ev,_ZTv0_n24_N7S8273C1D0Ev),
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI7S8273C1[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S8273C1[];
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
extern void _ZN7S8273C4D1Ev();
extern void _ZN7S8273C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C4__7S8273C1[] = {
  ABISELECT(152,80),
  ABISELECT(128,68),
  ABISELECT(112,60),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(-8,-4),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
  (VTBL_ENTRY)&_ZN7S8273C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8273C4D0Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C57S8273C4__7S8273C1[] = {
  ABISELECT(40,24),
  ABISELECT(-8,-4),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C57S8273C4__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C4__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S8273C4D1Ev,_ZTv0_n32_N7S8273C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S8273C4D1Ev,_ZThn32_N7S8273C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S8273C4D0Ev,_ZTv0_n32_N7S8273C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S8273C4D0Ev,_ZThn32_N7S8273C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C10__7S8273C4__7S8273C1[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C4D1Ev,_ZTv0_n32_N7S8273C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S8273C4D0Ev,_ZTv0_n32_N7S8273C4D0Ev),
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__A1__7S8273C4__7S8273C1[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C10__A1__7S8273C4__7S8273C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTvn32_n64_N7S8273C4D1Ev,_ZTvn16_n32_N7S8273C4D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N7S8273C4D0Ev,_ZTvn16_n32_N7S8273C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8273C118S8273C10__7S8273C4__7S8273C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-52),
  ABISELECT(-48,-24),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N7S8273C4D1Ev,_ZTvn16_n32_N7S8273C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N7S8273C4D0Ev,_ZTvn16_n32_N7S8273C4D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C68S8273C118S8273C10__A4__7S8273C4__7S8273C1[] = {
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S8273C4D1Ev,_ZTv0_n24_N7S8273C4D1Ev)();
extern void ABISELECT(_ZThn128_N7S8273C4D1Ev,_ZThn68_N7S8273C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8273C4D0Ev,_ZTv0_n24_N7S8273C4D0Ev)();
extern void ABISELECT(_ZThn128_N7S8273C4D0Ev,_ZThn68_N7S8273C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C12__7S8273C4__7S8273C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-88,-44),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C4D1Ev,_ZTv0_n24_N7S8273C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8273C4D0Ev,_ZTv0_n24_N7S8273C4D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C68S8273C118S8273C12__A5__7S8273C4__7S8273C1[] = {
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C13__7S8273C4__7S8273C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S8273C4[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8273C15D1Ev,_ZTv0_n12_N8S8273C15D1Ev)();
extern void _ZN8S8273C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8273C15D0Ev,_ZTv0_n12_N8S8273C15D0Ev)();
extern void _ZN8S8273C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C15__7S8273C1[] = {
  ABISELECT(272,144),
  ABISELECT(192,104),
  ABISELECT(-24,-12),
  0,
  ABISELECT(184,100),
  ABISELECT(-24,-12),
  ABISELECT(24,16),
  ABISELECT(144,76),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C15D1Ev,_ZTv0_n12_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C15D0Ev,_ZTv0_n12_N8S8273C15D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C15__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S8273C15D1Ev,_ZTv0_n44_N8S8273C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S8273C15D1Ev,_ZThn76_N8S8273C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S8273C15D0Ev,_ZTv0_n44_N8S8273C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S8273C15D0Ev,_ZThn76_N8S8273C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C16__8S8273C15__7S8273C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(16,8),
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-120,-60),
  ABISELECT(40,24),
  ABISELECT(-120,-60),
  ABISELECT(-168,-88),
  ABISELECT(-120,-60),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S8273C15D1Ev,_ZTv0_n44_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S8273C15D0Ev,_ZTv0_n44_N8S8273C15D0Ev),
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C58S8273C178S8273C16__8S8273C15__7S8273C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-184,-96),
  ABISELECT(-136,-68),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S8273C15D1Ev,_ZTv0_n32_N8S8273C15D1Ev)();
extern void ABISELECT(_ZThn192_N8S8273C15D1Ev,_ZThn104_N8S8273C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S8273C15D0Ev,_ZTv0_n32_N8S8273C15D0Ev)();
extern void ABISELECT(_ZThn192_N8S8273C15D0Ev,_ZThn104_N8S8273C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C18__8S8273C15__7S8273C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-8,-4),
  ABISELECT(-168,-88),
  ABISELECT(-216,-116),
  ABISELECT(80,40),
  ABISELECT(-168,-88),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S8273C15D1Ev,_ZTv0_n32_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S8273C15D0Ev,_ZTv0_n32_N8S8273C15D0Ev),
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S8273C15D1Ev,_ZTv0_n24_N8S8273C15D1Ev)();
extern void ABISELECT(_ZThn272_N8S8273C15D1Ev,_ZThn144_N8S8273C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8273C15D0Ev,_ZTv0_n24_N8S8273C15D0Ev)();
extern void ABISELECT(_ZThn272_N8S8273C15D0Ev,_ZThn144_N8S8273C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C15__7S8273C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-248,-128),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C15D1Ev,_ZTv0_n24_N8S8273C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C15D0Ev,_ZTv0_n24_N8S8273C15D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C68S8273C11__A2__8S8273C15__7S8273C1[] = {
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S8273C15[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C10D1Ev();
extern void _ZN8S8273C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C10__7S8273C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C10D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C10__A1__7S8273C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C10__A1__7S8273C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C118S8273C10__7S8273C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-52),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C118S8273C10__A2__7S8273C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-52),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C118S8273C10__A2__7S8273C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C118S8273C10__7S8273C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C10__7S8273C1[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C10__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A__8S8273C10__7S8273C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZThn32_N8S8273C10D1Ev,_ZThn16_N8S8273C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S8273C10D0Ev,_ZThn16_N8S8273C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C10__7S8273C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-52),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S8273C10[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S8273C10D1Ev,_ZThn16_N8S8273C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S8273C10D0Ev,_ZThn16_N8S8273C10D0Ev),
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__A1__7S8273C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C5__A1__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C12D1Ev();
extern void _ZN8S8273C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C12__7S8273C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C12[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C12D0Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C118S8273C12__A1__7S8273C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C118S8273C12__A3__7S8273C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C118S8273C12__A3__7S8273C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C118S8273C12__A1__7S8273C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C12__7S8273C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S8273C12[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C13__7S8273C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-112,-56),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C13__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C13__7S8273C1[] = {
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S8273C13[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C16D1Ev();
extern void _ZN8S8273C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C16__7S8273C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-144,-76),
  ABISELECT(-120,-60),
  ABISELECT(40,24),
  ABISELECT(-120,-60),
  ABISELECT(-168,-88),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C16D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C16D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C178S8273C16__7S8273C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(40,24),
  ABISELECT(-120,-60),
  ABISELECT(-168,-88),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C178S8273C16__A4__7S8273C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-168,-88),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C178S8273C16__A4__7S8273C1[] = {
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C58S8273C178S8273C16__A2__7S8273C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-184,-96),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__7S8273C58S8273C178S8273C16__A2__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S8273C5[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__A1__8S8273C178S8273C16__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C5__8S8273C178S8273C16__7S8273C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-184,-96),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C17[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C8__8S8273C16__7S8273C1[] = {
  0,
  ABISELECT(-48,-28),
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN7S8273C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C58S8273C17__8S8273C16__7S8273C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-184,-96),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN7S8273C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S8273C16__7S8273C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8273C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C16D1Ev,_ZTv0_n12_N8S8273C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8273C16D0Ev,_ZTv0_n12_N8S8273C16D0Ev),
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C18D1Ev();
extern void _ZN8S8273C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C18__7S8273C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-88),
  ABISELECT(-216,-116),
  ABISELECT(80,40),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C18D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C18D0Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S8273C18D1Ev,_ZThn40_N8S8273C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S8273C18D0Ev,_ZThn40_N8S8273C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8273C11__8S8273C18__7S8273C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-248,-128),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev),
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C18__7S8273C1[] = {
  0,
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C68S8273C11__A1__8S8273C18__7S8273C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S8273C18[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
extern void _ZN8S8273C11D1Ev();
extern void _ZN8S8273C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8273C11__A2__7S8273C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-248,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8273C11D0Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C88S8273C11__A5__7S8273C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-248,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__7S8273C88S8273C11__A5__7S8273C1[] = {
  0,
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S8273C8[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
extern void _ZN7S8273C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8273C6__8S8273C11__A2__7S8273C1[] = {
  0,
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S8273C11[0]),
  (VTBL_ENTRY)&_ZN7S8273C62v1Ev,
};
static  VTT_ENTRY vtt_S8273C1[] = {
  {&(_ZTV7S8273C1[16]),  16,152},
  {&(_tg__ZTV7S8273C4__7S8273C1[9]),  9,13},
  {&(_tg__ZTV7S8273C57S8273C4__7S8273C1[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C57S8273C4__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C57S8273C4__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C4__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C4__7S8273C1[5]),  5,6},
  {&(_tg__ZTV8S8273C10__7S8273C4__7S8273C1[8]),  8,11},
  {&(_tg__ZTV7S8273C5__A1__7S8273C4__7S8273C1[7]),  7,9},
  {&(_tg__ZTV7S8273C88S8273C10__A1__7S8273C4__7S8273C1[5]),  5,6},
  {&(_tg__ZTV8S8273C118S8273C10__7S8273C4__7S8273C1[5]),  5,8},
  {&(_tg__ZTV7S8273C68S8273C118S8273C10__A4__7S8273C4__7S8273C1[2]),  2,3},
  {&(_tg__ZTV8S8273C12__7S8273C4__7S8273C1[6]),  6,9},
  {&(_tg__ZTV7S8273C68S8273C118S8273C12__A5__7S8273C4__7S8273C1[2]),  2,3},
  {&(_tg__ZTV8S8273C13__7S8273C4__7S8273C1[7]),  7,8},
  {&(_tg__ZTV8S8273C15__7S8273C1[12]),  12,14},
  {&(_tg__ZTV7S8273C8__8S8273C15__7S8273C1[5]),  5,6},
  {&(_tg__ZTV8S8273C16__8S8273C15__7S8273C1[11]),  11,14},
  {&(_tg__ZTV7S8273C8__8S8273C15__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C58S8273C178S8273C16__8S8273C15__7S8273C1[5]),  5,7},
  {&(_tg__ZTV8S8273C15__7S8273C1[12]),  12,14},
  {&(_tg__ZTV8S8273C18__8S8273C15__7S8273C1[8]),  8,11},
  {&(_tg__ZTV8S8273C11__8S8273C15__7S8273C1[6]),  6,9},
  {&(_tg__ZTV7S8273C68S8273C11__A2__8S8273C15__7S8273C1[2]),  2,3},
  {&(_ZTV7S8273C1[27]),  27,152},
  {&(_ZTV7S8273C1[50]),  50,152},
  {&(_ZTV7S8273C1[50]),  50,152},
  {&(_ZTV7S8273C1[59]),  59,152},
  {&(_ZTV7S8273C1[86]),  86,152},
  {&(_ZTV7S8273C1[67]),  67,152},
  {&(_ZTV7S8273C1[73]),  73,152},
  {&(_ZTV7S8273C1[78]),  78,152},
  {&(_ZTV7S8273C1[94]),  94,152},
  {&(_ZTV7S8273C1[99]),  99,152},
  {&(_ZTV7S8273C1[107]),  107,152},
  {&(_ZTV7S8273C1[43]),  43,152},
  {&(_ZTV7S8273C1[119]),  119,152},
  {&(_ZTV7S8273C1[127]),  127,152},
  {&(_ZTV7S8273C1[43]),  43,152},
  {&(_ZTV7S8273C1[137]),  137,152},
  {&(_ZTV7S8273C1[146]),  146,152},
  {&(_ZTV7S8273C1[151]),  151,152},
  {&(_tg__ZTV7S8273C8__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C1[5]),  5,6},
  {&(_tg__ZTV8S8273C10__7S8273C1[6]),  6,9},
  {&(_tg__ZTV7S8273C88S8273C10__A1__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C10__A1__7S8273C1[3]),  3,4},
  {&(_tg__ZTV8S8273C118S8273C10__7S8273C1[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C118S8273C10__A2__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C118S8273C10__A2__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C118S8273C10__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C5__8S8273C10__7S8273C1[7]),  7,9},
  {&(_tg__ZTV7S8273C8__8S8273C10__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C10__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__A__8S8273C10__7S8273C1[5]),  5,6},
  {&(_tg__ZTV8S8273C11__8S8273C10__7S8273C1[5]),  5,8},
  {&(_tg__ZTV7S8273C5__A1__7S8273C1[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C5__A1__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C5__A1__7S8273C1[5]),  5,6},
  {&(_tg__ZTV8S8273C12__7S8273C1[5]),  5,8},
  {&(_tg__ZTV8S8273C118S8273C12__A1__7S8273C1[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C118S8273C12__A3__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C118S8273C12__A3__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C118S8273C12__A1__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C12__7S8273C1[3]),  3,4},
  {&(_tg__ZTV8S8273C13__7S8273C1[7]),  7,8},
  {&(_tg__ZTV7S8273C8__8S8273C13__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C13__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C5__8S8273C13__7S8273C1[7]),  7,9},
  {&(_tg__ZTV8S8273C16__7S8273C1[9]),  9,12},
  {&(_tg__ZTV8S8273C178S8273C16__7S8273C1[7]),  7,8},
  {&(_tg__ZTV7S8273C88S8273C178S8273C16__A4__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C178S8273C16__A4__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C58S8273C178S8273C16__A2__7S8273C1[5]),  5,7},
  {&(_tg__ZTV7S8273C8__7S8273C58S8273C178S8273C16__A2__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__7S8273C58S8273C178S8273C16__A2__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__A1__8S8273C178S8273C16__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C5__8S8273C178S8273C16__7S8273C1[5]),  5,7},
  {&(_tg__ZTV7S8273C8__A1__8S8273C178S8273C16__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C16__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C8__8S8273C16__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C58S8273C17__8S8273C16__7S8273C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__8S8273C16__7S8273C1[3]),  3,5},
  {&(_tg__ZTV8S8273C18__7S8273C1[7]),  7,10},
  {&(_tg__ZTV8S8273C11__8S8273C18__7S8273C1[6]),  6,9},
  {&(_tg__ZTV7S8273C6__8S8273C18__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C68S8273C11__A1__8S8273C18__7S8273C1[2]),  2,3},
  {&(_tg__ZTV8S8273C11__A2__7S8273C1[5]),  5,8},
  {&(_tg__ZTV7S8273C88S8273C11__A5__7S8273C1[5]),  5,6},
  {&(_tg__ZTV7S8273C6__7S8273C88S8273C11__A5__7S8273C1[3]),  3,4},
  {&(_tg__ZTV7S8273C6__8S8273C11__A2__7S8273C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S8273C1[];
extern  VTBL_ENTRY _ZTV7S8273C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8273C1[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C18D0Ev,_ZTv0_n24_N8S8273C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C18D0Ev,_ZThn40_N8S8273C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C18D1Ev,_ZTv0_n24_N8S8273C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8273C18D1Ev,_ZThn40_N8S8273C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C15D0Ev,_ZTv0_n24_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S8273C15D0Ev,_ZThn144_N8S8273C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8273C15D1Ev,_ZTv0_n24_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S8273C15D1Ev,_ZThn144_N8S8273C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S8273C15D0Ev,_ZTv0_n32_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S8273C15D0Ev,_ZThn104_N8S8273C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S8273C15D1Ev,_ZTv0_n32_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S8273C15D1Ev,_ZThn104_N8S8273C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S8273C15D0Ev,_ZTv0_n44_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8273C15D0Ev,_ZThn76_N8S8273C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S8273C15D1Ev,_ZTv0_n44_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8273C15D1Ev,_ZThn76_N8S8273C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8273C15D0Ev,_ZTv0_n12_N8S8273C15D0Ev), // 
  (VTBL_ENTRY)_ZN8S8273C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8273C15D1Ev,_ZTv0_n12_N8S8273C15D1Ev), // 
  (VTBL_ENTRY)_ZN8S8273C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8273C4D0Ev,_ZTv0_n24_N7S8273C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S8273C4D0Ev,_ZThn68_N7S8273C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8273C4D1Ev,_ZTv0_n24_N7S8273C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S8273C4D1Ev,_ZThn68_N7S8273C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S8273C4D0Ev,_ZTv0_n32_N7S8273C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S8273C4D0Ev,_ZThn32_N7S8273C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S8273C4D1Ev,_ZTv0_n32_N7S8273C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S8273C4D1Ev,_ZThn32_N7S8273C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8273C1D0Ev,_ZTv0_n44_N7S8273C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S8273C1D0Ev,_ZThn88_N7S8273C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8273C1D1Ev,_ZTv0_n44_N7S8273C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S8273C1D1Ev,_ZThn88_N7S8273C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8273C1D0Ev,_ZTv0_n24_N7S8273C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S8273C1D0Ev,_ZThn156_N7S8273C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S8273C1D0Ev,_ZThn72_N7S8273C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8273C1D1Ev,_ZTv0_n24_N7S8273C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S8273C1D1Ev,_ZThn156_N7S8273C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S8273C1D1Ev,_ZThn72_N7S8273C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S8273C1D0Ev,_ZTv0_n32_N7S8273C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S8273C1D0Ev,_ZThn116_N7S8273C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S8273C1D0Ev,_ZThn36_N7S8273C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S8273C1D1Ev,_ZTv0_n32_N7S8273C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S8273C1D1Ev,_ZThn116_N7S8273C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S8273C1D1Ev,_ZThn36_N7S8273C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8273C1D0Ev,_ZTv0_n12_N7S8273C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8273C1D0Ev,_ZThn12_N7S8273C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8273C1D1Ev,_ZTv0_n12_N7S8273C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8273C1D1Ev,_ZThn12_N7S8273C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8273C1 = {  "S8273C1", // class name
  bases_S8273C1, 43,
  &(vtc_S8273C1[0]), // expected_vtbl_contents
  &(vtt_S8273C1[0]), // expected_vtt_contents
  ABISELECT(320,168), // object size
  NSPAIRA(_ZTI7S8273C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8273C1),152, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8273C1),91, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10222C2_nt  {
  virtual  ~S10222C2_nt(); // _ZN11S10222C2_ntD1Ev
  virtual void  v8(); // _ZN11S10222C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10222C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10222C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10222C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10222C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10222C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10222C2_nt3v14Ev
  S10222C2_nt(); // tgen
};
//SIG(-1 S10222C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S10222C2_nt ::~S10222C2_nt(){ note_dtor("S10222C2_nt", this);}
void  S10222C2_nt ::v8(){vfunc_called(this, "_ZN11S10222C2_nt2v8Ev");}
void  S10222C2_nt ::v9(){vfunc_called(this, "_ZN11S10222C2_nt2v9Ev");}
void  S10222C2_nt ::v10(){vfunc_called(this, "_ZN11S10222C2_nt3v10Ev");}
void  S10222C2_nt ::v11(){vfunc_called(this, "_ZN11S10222C2_nt3v11Ev");}
void  S10222C2_nt ::v12(){vfunc_called(this, "_ZN11S10222C2_nt3v12Ev");}
void  S10222C2_nt ::v13(){vfunc_called(this, "_ZN11S10222C2_nt3v13Ev");}
void  S10222C2_nt ::v14(){vfunc_called(this, "_ZN11S10222C2_nt3v14Ev");}
S10222C2_nt ::S10222C2_nt(){ note_ctor("S10222C2_nt", this);} // tgen

//skip512 S10222C2_nt

#else // __cplusplus

extern void _ZN11S10222C2_ntC1Ev();
extern void _ZN11S10222C2_ntD1Ev();
Name_Map name_map_S10222C2_nt[] = {
  NSPAIR(_ZN11S10222C2_ntC1Ev),
  NSPAIR(_ZN11S10222C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10222C2_nt[];
extern void _ZN11S10222C2_ntD1Ev();
extern void _ZN11S10222C2_ntD0Ev();
extern void _ZN11S10222C2_nt2v8Ev();
extern void _ZN11S10222C2_nt2v9Ev();
extern void _ZN11S10222C2_nt3v10Ev();
extern void _ZN11S10222C2_nt3v11Ev();
extern void _ZN11S10222C2_nt3v12Ev();
extern void _ZN11S10222C2_nt3v13Ev();
extern void _ZN11S10222C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S10222C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10222C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10222C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S10222C2_nt[];
VTBL_ENTRY *P__ZTI11S10222C2_nt = _ZTI11S10222C2_nt; 
extern  VTBL_ENTRY _ZTV11S10222C2_nt[];
Class_Descriptor cd_S10222C2_nt = {  "S10222C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10222C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10222C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10222C2_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  S10222C8_nt  {
  char s10222c8f0;
  void  mf10222c8(); // _ZN11S10222C8_nt9mf10222c8Ev
};
//SIG(-1 S10222C8_nt) C1{ m Fc}


void  S10222C8_nt ::mf10222c8(){}

//skip512 S10222C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10222C12_nt  {
  char s10222c12f0;
  int s10222c12f1;
  void *s10222c12f2;
  int s10222c12f3;
  void *s10222c12f4;
  void  mf10222c12(); // _ZN12S10222C12_nt10mf10222c12Ev
};
//SIG(-1 S10222C12_nt) C1{ m Fc Fi Fp Fi Fp}


void  S10222C12_nt ::mf10222c12(){}

//skip512 S10222C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10222C1  : S10222C2_nt , S19894C34 {
  char s10222c1f0;
  int s10222c1f1[3];
  void *s10222c1f2[2];
  int s10222c1f3;
  ::S3620C13_nt s10222c1f4;
  ::S9740C25 s10222c1f5;
  int s10222c1f6[6];
  ::S10222C8_nt s10222c1f7;
  ::S3620C13_nt s10222c1f8;
  ::S9739C30 s10222c1f9;
  int s10222c1f10;
  ::S10222C12_nt s10222c1f11;
  int s10222c1f12[2];
  ::S3620C13_nt s10222c1f13;
  ::S3619C4_nt s10222c1f14;
  char s10222c1f15[2];
  virtual  ~S10222C1(); // _ZN8S10222C1D1Ev
  virtual void  v1(); // _ZN8S10222C12v1Ev
  virtual void  v2(); // _ZN8S10222C12v2Ev
  virtual void  v3(); // _ZN8S10222C12v3Ev
  virtual void  v4(); // _ZN8S10222C12v4Ev
  virtual void  v5(); // _ZN8S10222C12v5Ev
  virtual void  v6(); // _ZN8S10222C12v6Ev
  virtual void  v7(); // _ZN8S10222C12v7Ev
  S10222C1(); // tgen
};
//SIG(1 S10222C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14} BC3{ m} vd v1 v2 v3 v4 v5 v6 v7 Fc Fi[3] Fp[2] Fi FC4{ m FL[4]} FC5{ m Fp Fi FC3 FC6{ m}} Fi[6] FC7{ m Fc} FC4 FC8{ m Fp Fi FC3 FC6} Fi FC9{ m Fc Fi Fp Fi Fp} Fi[2] FC4 FC10{ m Fp Fi FC11{ m} FC11} Fc[2]}


 S10222C1 ::~S10222C1(){ note_dtor("S10222C1", this);}
void  S10222C1 ::v1(){vfunc_called(this, "_ZN8S10222C12v1Ev");}
void  S10222C1 ::v2(){vfunc_called(this, "_ZN8S10222C12v2Ev");}
void  S10222C1 ::v3(){vfunc_called(this, "_ZN8S10222C12v3Ev");}
void  S10222C1 ::v4(){vfunc_called(this, "_ZN8S10222C12v4Ev");}
void  S10222C1 ::v5(){vfunc_called(this, "_ZN8S10222C12v5Ev");}
void  S10222C1 ::v6(){vfunc_called(this, "_ZN8S10222C12v6Ev");}
void  S10222C1 ::v7(){vfunc_called(this, "_ZN8S10222C12v7Ev");}
S10222C1 ::S10222C1(){ note_ctor("S10222C1", this);} // tgen

static void Test_S10222C1()
{
  extern Class_Descriptor cd_S10222C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,58)];
    init_test(&cd_S10222C1, buf);
    S10222C1 *dp, &lv = *(dp=new (buf) S10222C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,228), "sizeof(S10222C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10222C1)");
    check_base_class_offset(lv, (S10222C2_nt*), 0, "S10222C1");
    check_base_class_offset(lv, (S19894C34*), 0, "S10222C1");
    check_field_offset(lv, s10222c1f0, ABISELECT(8,4), "S10222C1.s10222c1f0");
    check_field_offset(lv, s10222c1f1, ABISELECT(12,8), "S10222C1.s10222c1f1");
    check_field_offset(lv, s10222c1f2, ABISELECT(24,20), "S10222C1.s10222c1f2");
    check_field_offset(lv, s10222c1f3, ABISELECT(40,28), "S10222C1.s10222c1f3");
    check_field_offset(lv, s10222c1f4, ABISELECT(48,32), "S10222C1.s10222c1f4");
    check_field_offset(lv, s10222c1f5, ABISELECT(80,64), "S10222C1.s10222c1f5");
    check_field_offset(lv, s10222c1f6, ABISELECT(96,76), "S10222C1.s10222c1f6");
    check_field_offset(lv, s10222c1f7, ABISELECT(120,100), "S10222C1.s10222c1f7");
    check_field_offset(lv, s10222c1f8, ABISELECT(128,104), "S10222C1.s10222c1f8");
    check_field_offset(lv, s10222c1f9, ABISELECT(160,136), "S10222C1.s10222c1f9");
    check_field_offset(lv, s10222c1f10, ABISELECT(176,148), "S10222C1.s10222c1f10");
    check_field_offset(lv, s10222c1f11, ABISELECT(184,152), "S10222C1.s10222c1f11");
    check_field_offset(lv, s10222c1f12, ABISELECT(216,172), "S10222C1.s10222c1f12");
    check_field_offset(lv, s10222c1f13, ABISELECT(224,180), "S10222C1.s10222c1f13");
    check_field_offset(lv, s10222c1f14, ABISELECT(256,212), "S10222C1.s10222c1f14");
    check_field_offset(lv, s10222c1f15, ABISELECT(272,224), "S10222C1.s10222c1f15");
    test_class_info(&lv, &cd_S10222C1);
    dp->~S10222C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10222C1(Test_S10222C1, "S10222C1", ABISELECT(280,228));

#else // __cplusplus

extern void _ZN8S10222C1C1Ev();
extern void _ZN8S10222C1D1Ev();
Name_Map name_map_S10222C1[] = {
  NSPAIR(_ZN8S10222C1C1Ev),
  NSPAIR(_ZN8S10222C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10222C2_nt;
extern VTBL_ENTRY _ZTI11S10222C2_nt[];
extern  VTBL_ENTRY _ZTV11S10222C2_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S10222C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10222C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10222C1[];
extern void _ZN8S10222C1D1Ev();
extern void _ZN8S10222C1D0Ev();
extern void _ZN11S10222C2_nt2v8Ev();
extern void _ZN11S10222C2_nt2v9Ev();
extern void _ZN11S10222C2_nt3v10Ev();
extern void _ZN11S10222C2_nt3v11Ev();
extern void _ZN11S10222C2_nt3v12Ev();
extern void _ZN11S10222C2_nt3v13Ev();
extern void _ZN11S10222C2_nt3v14Ev();
extern void _ZN8S10222C12v1Ev();
extern void _ZN8S10222C12v2Ev();
extern void _ZN8S10222C12v3Ev();
extern void _ZN8S10222C12v4Ev();
extern void _ZN8S10222C12v5Ev();
extern void _ZN8S10222C12v6Ev();
extern void _ZN8S10222C12v7Ev();
static  VTBL_ENTRY vtc_S10222C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10222C1[0]),
  (VTBL_ENTRY)&_ZN8S10222C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10222C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10222C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10222C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10222C1[];
extern  VTBL_ENTRY _ZTV8S10222C1[];
Class_Descriptor cd_S10222C1 = {  "S10222C1", // class name
  bases_S10222C1, 2,
  &(vtc_S10222C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,228), // object size
  NSPAIRA(_ZTI8S10222C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S10222C1),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  S1225C3_nt  : S19894C34 {
  virtual  ~S1225C3_nt(); // _ZN10S1225C3_ntD1Ev
  virtual void  v4(); // _ZN10S1225C3_nt2v4Ev
  S1225C3_nt(); // tgen
};
//SIG(-1 S1225C3_nt) C1{ BC2{ m} vd v1}


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

//skip512 S1225C3_nt

#else // __cplusplus

extern void _ZN10S1225C3_ntC1Ev();
extern void _ZN10S1225C3_ntD1Ev();
Name_Map name_map_S1225C3_nt[] = {
  NSPAIR(_ZN10S1225C3_ntC1Ev),
  NSPAIR(_ZN10S1225C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S1225C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1225C3_nt[];
extern void _ZN10S1225C3_ntD1Ev();
extern void _ZN10S1225C3_ntD0Ev();
extern void _ZN10S1225C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S1225C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1225C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1225C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1225C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1225C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S1225C3_nt[];
VTBL_ENTRY *P__ZTI10S1225C3_nt = _ZTI10S1225C3_nt; 
extern  VTBL_ENTRY _ZTV10S1225C3_nt[];
Class_Descriptor cd_S1225C3_nt = {  "S1225C3_nt", // class name
  bases_S1225C3_nt, 1,
  &(vtc_S1225C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1225C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1225C3_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  S1225C6_nt  : S1225C3_nt {
  virtual  ~S1225C6_nt(); // _ZN10S1225C6_ntD1Ev
  virtual void  v29(); // _ZN10S1225C6_nt3v29Ev
  virtual void  v30(); // _ZN10S1225C6_nt3v30Ev
  virtual void  v31(); // _ZN10S1225C6_nt3v31Ev
  virtual void  v32(); // _ZN10S1225C6_nt3v32Ev
  virtual void  v33(); // _ZN10S1225C6_nt3v33Ev
  virtual void  v34(); // _ZN10S1225C6_nt3v34Ev
  virtual void  v35(); // _ZN10S1225C6_nt3v35Ev
  virtual void  v36(); // _ZN10S1225C6_nt3v36Ev
  S1225C6_nt(); // tgen
};
//SIG(-1 S1225C6_nt) C1{ BC2{ BC3{ m} vd v9} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1225C6_nt ::~S1225C6_nt(){ note_dtor("S1225C6_nt", this);}
void  S1225C6_nt ::v29(){vfunc_called(this, "_ZN10S1225C6_nt3v29Ev");}
void  S1225C6_nt ::v30(){vfunc_called(this, "_ZN10S1225C6_nt3v30Ev");}
void  S1225C6_nt ::v31(){vfunc_called(this, "_ZN10S1225C6_nt3v31Ev");}
void  S1225C6_nt ::v32(){vfunc_called(this, "_ZN10S1225C6_nt3v32Ev");}
void  S1225C6_nt ::v33(){vfunc_called(this, "_ZN10S1225C6_nt3v33Ev");}
void  S1225C6_nt ::v34(){vfunc_called(this, "_ZN10S1225C6_nt3v34Ev");}
void  S1225C6_nt ::v35(){vfunc_called(this, "_ZN10S1225C6_nt3v35Ev");}
void  S1225C6_nt ::v36(){vfunc_called(this, "_ZN10S1225C6_nt3v36Ev");}
S1225C6_nt ::S1225C6_nt(){ note_ctor("S1225C6_nt", this);} // tgen

//skip512 S1225C6_nt

#else // __cplusplus

extern void _ZN10S1225C6_ntC1Ev();
extern void _ZN10S1225C6_ntD1Ev();
Name_Map name_map_S1225C6_nt[] = {
  NSPAIR(_ZN10S1225C6_ntC1Ev),
  NSPAIR(_ZN10S1225C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1225C3_nt;
extern VTBL_ENTRY _ZTI10S1225C3_nt[];
extern  VTBL_ENTRY _ZTV10S1225C3_nt[];
static Base_Class bases_S1225C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1225C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1225C6_nt[];
extern void _ZN10S1225C6_ntD1Ev();
extern void _ZN10S1225C6_ntD0Ev();
extern void _ZN10S1225C3_nt2v4Ev();
extern void _ZN10S1225C6_nt3v29Ev();
extern void _ZN10S1225C6_nt3v30Ev();
extern void _ZN10S1225C6_nt3v31Ev();
extern void _ZN10S1225C6_nt3v32Ev();
extern void _ZN10S1225C6_nt3v33Ev();
extern void _ZN10S1225C6_nt3v34Ev();
extern void _ZN10S1225C6_nt3v35Ev();
extern void _ZN10S1225C6_nt3v36Ev();
static  VTBL_ENTRY vtc_S1225C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1225C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1225C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1225C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v36Ev,
};
extern VTBL_ENTRY _ZTI10S1225C6_nt[];
VTBL_ENTRY *P__ZTI10S1225C6_nt = _ZTI10S1225C6_nt; 
extern  VTBL_ENTRY _ZTV10S1225C6_nt[];
Class_Descriptor cd_S1225C6_nt = {  "S1225C6_nt", // class name
  bases_S1225C6_nt, 2,
  &(vtc_S1225C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1225C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1225C6_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  S1225C8_nt  {
  short s1225c8f0;
  int s1225c8f1;
  void *s1225c8f2;
  int s1225c8f3;
};
//SIG(1 S1225C8_nt) C1{ Fs Fi Fp Fi}



//skip512 S1225C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S1225C7_nt  {
  short s1225c7f0[13];
  ::S1225C8_nt s1225c7f1;
};
//SIG(1 S1225C7_nt) U1{ Fs[13] FC2{ Fs Fi Fp Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S1225C5_nt  : S1225C6_nt {
  char s1225c5f0[2];
  ::S1225C7_nt s1225c5f1;
  virtual  ~S1225C5_nt(); // _ZN10S1225C5_ntD1Ev
  virtual void  v20(); // _ZN10S1225C5_nt3v20Ev
  virtual void  v21(); // _ZN10S1225C5_nt3v21Ev
  virtual void  v22(); // _ZN10S1225C5_nt3v22Ev
  virtual void  v23(); // _ZN10S1225C5_nt3v23Ev
  virtual void  v24(); // _ZN10S1225C5_nt3v24Ev
  virtual void  v25(); // _ZN10S1225C5_nt3v25Ev
  virtual void  v26(); // _ZN10S1225C5_nt3v26Ev
  virtual void  v27(); // _ZN10S1225C5_nt3v27Ev
  virtual void  v28(); // _ZN10S1225C5_nt3v28Ev
  S1225C5_nt(); // tgen
};
//SIG(-1 S1225C5_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}}}


 S1225C5_nt ::~S1225C5_nt(){ note_dtor("S1225C5_nt", this);}
void  S1225C5_nt ::v20(){vfunc_called(this, "_ZN10S1225C5_nt3v20Ev");}
void  S1225C5_nt ::v21(){vfunc_called(this, "_ZN10S1225C5_nt3v21Ev");}
void  S1225C5_nt ::v22(){vfunc_called(this, "_ZN10S1225C5_nt3v22Ev");}
void  S1225C5_nt ::v23(){vfunc_called(this, "_ZN10S1225C5_nt3v23Ev");}
void  S1225C5_nt ::v24(){vfunc_called(this, "_ZN10S1225C5_nt3v24Ev");}
void  S1225C5_nt ::v25(){vfunc_called(this, "_ZN10S1225C5_nt3v25Ev");}
void  S1225C5_nt ::v26(){vfunc_called(this, "_ZN10S1225C5_nt3v26Ev");}
void  S1225C5_nt ::v27(){vfunc_called(this, "_ZN10S1225C5_nt3v27Ev");}
void  S1225C5_nt ::v28(){vfunc_called(this, "_ZN10S1225C5_nt3v28Ev");}
S1225C5_nt ::S1225C5_nt(){ note_ctor("S1225C5_nt", this);} // tgen

//skip512 S1225C5_nt

#else // __cplusplus

extern void _ZN10S1225C5_ntC1Ev();
extern void _ZN10S1225C5_ntD1Ev();
Name_Map name_map_S1225C5_nt[] = {
  NSPAIR(_ZN10S1225C5_ntC1Ev),
  NSPAIR(_ZN10S1225C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1225C3_nt;
extern VTBL_ENTRY _ZTI10S1225C3_nt[];
extern  VTBL_ENTRY _ZTV10S1225C3_nt[];
extern Class_Descriptor cd_S1225C6_nt;
extern VTBL_ENTRY _ZTI10S1225C6_nt[];
extern  VTBL_ENTRY _ZTV10S1225C6_nt[];
static Base_Class bases_S1225C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1225C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1225C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1225C5_nt[];
extern void _ZN10S1225C5_ntD1Ev();
extern void _ZN10S1225C5_ntD0Ev();
extern void _ZN10S1225C3_nt2v4Ev();
extern void _ZN10S1225C6_nt3v29Ev();
extern void _ZN10S1225C6_nt3v30Ev();
extern void _ZN10S1225C6_nt3v31Ev();
extern void _ZN10S1225C6_nt3v32Ev();
extern void _ZN10S1225C6_nt3v33Ev();
extern void _ZN10S1225C6_nt3v34Ev();
extern void _ZN10S1225C6_nt3v35Ev();
extern void _ZN10S1225C6_nt3v36Ev();
extern void _ZN10S1225C5_nt3v20Ev();
extern void _ZN10S1225C5_nt3v21Ev();
extern void _ZN10S1225C5_nt3v22Ev();
extern void _ZN10S1225C5_nt3v23Ev();
extern void _ZN10S1225C5_nt3v24Ev();
extern void _ZN10S1225C5_nt3v25Ev();
extern void _ZN10S1225C5_nt3v26Ev();
extern void _ZN10S1225C5_nt3v27Ev();
extern void _ZN10S1225C5_nt3v28Ev();
static  VTBL_ENTRY vtc_S1225C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1225C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S1225C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1225C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1225C6_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1225C5_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S1225C5_nt[];
VTBL_ENTRY *P__ZTI10S1225C5_nt = _ZTI10S1225C5_nt; 
extern  VTBL_ENTRY _ZTV10S1225C5_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1225C2_nt  : S1225C3_nt {
  ::S1225C5_nt s1225c2f0;
  void *s1225c2f1;
  int s1225c2f2;
  virtual  ~S1225C2_nt(); // _ZN10S1225C2_ntD1Ev
  virtual void  v5(); // _ZN10S1225C2_nt2v5Ev
  virtual void  v6(); // _ZN10S1225C2_nt2v6Ev
  virtual void  v7(); // _ZN10S1225C2_nt2v7Ev
  virtual void  v8(); // _ZN10S1225C2_nt2v8Ev
  virtual void  v9(); // _ZN10S1225C2_nt2v9Ev
  virtual void  v10(); // _ZN10S1225C2_nt3v10Ev
  virtual void  v11(); // _ZN10S1225C2_nt3v11Ev
  virtual void  v12(); // _ZN10S1225C2_nt3v12Ev
  virtual void  v13(); // _ZN10S1225C2_nt3v13Ev
  virtual void  v14(); // _ZN10S1225C2_nt3v14Ev
  virtual void  v15(); // _ZN10S1225C2_nt3v15Ev
  virtual void  v16(); // _ZN10S1225C2_nt3v16Ev
  virtual void  v17(); // _ZN10S1225C2_nt3v17Ev
  virtual void  v18(); // _ZN10S1225C2_nt3v18Ev
  virtual void  v19(); // _ZN10S1225C2_nt3v19Ev
  S1225C2_nt(); // tgen
};
//SIG(-1 S1225C2_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}


 S1225C2_nt ::~S1225C2_nt(){ note_dtor("S1225C2_nt", this);}
void  S1225C2_nt ::v5(){vfunc_called(this, "_ZN10S1225C2_nt2v5Ev");}
void  S1225C2_nt ::v6(){vfunc_called(this, "_ZN10S1225C2_nt2v6Ev");}
void  S1225C2_nt ::v7(){vfunc_called(this, "_ZN10S1225C2_nt2v7Ev");}
void  S1225C2_nt ::v8(){vfunc_called(this, "_ZN10S1225C2_nt2v8Ev");}
void  S1225C2_nt ::v9(){vfunc_called(this, "_ZN10S1225C2_nt2v9Ev");}
void  S1225C2_nt ::v10(){vfunc_called(this, "_ZN10S1225C2_nt3v10Ev");}
void  S1225C2_nt ::v11(){vfunc_called(this, "_ZN10S1225C2_nt3v11Ev");}
void  S1225C2_nt ::v12(){vfunc_called(this, "_ZN10S1225C2_nt3v12Ev");}
void  S1225C2_nt ::v13(){vfunc_called(this, "_ZN10S1225C2_nt3v13Ev");}
void  S1225C2_nt ::v14(){vfunc_called(this, "_ZN10S1225C2_nt3v14Ev");}
void  S1225C2_nt ::v15(){vfunc_called(this, "_ZN10S1225C2_nt3v15Ev");}
void  S1225C2_nt ::v16(){vfunc_called(this, "_ZN10S1225C2_nt3v16Ev");}
void  S1225C2_nt ::v17(){vfunc_called(this, "_ZN10S1225C2_nt3v17Ev");}
void  S1225C2_nt ::v18(){vfunc_called(this, "_ZN10S1225C2_nt3v18Ev");}
void  S1225C2_nt ::v19(){vfunc_called(this, "_ZN10S1225C2_nt3v19Ev");}
S1225C2_nt ::S1225C2_nt(){ note_ctor("S1225C2_nt", this);} // tgen

//skip512 S1225C2_nt

#else // __cplusplus

extern void _ZN10S1225C2_ntC1Ev();
extern void _ZN10S1225C2_ntD1Ev();
Name_Map name_map_S1225C2_nt[] = {
  NSPAIR(_ZN10S1225C2_ntC1Ev),
  NSPAIR(_ZN10S1225C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1225C3_nt;
extern VTBL_ENTRY _ZTI10S1225C3_nt[];
extern  VTBL_ENTRY _ZTV10S1225C3_nt[];
static Base_Class bases_S1225C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1225C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1225C2_nt[];
extern void _ZN10S1225C2_ntD1Ev();
extern void _ZN10S1225C2_ntD0Ev();
extern void _ZN10S1225C3_nt2v4Ev();
extern void _ZN10S1225C2_nt2v5Ev();
extern void _ZN10S1225C2_nt2v6Ev();
extern void _ZN10S1225C2_nt2v7Ev();
extern void _ZN10S1225C2_nt2v8Ev();
extern void _ZN10S1225C2_nt2v9Ev();
extern void _ZN10S1225C2_nt3v10Ev();
extern void _ZN10S1225C2_nt3v11Ev();
extern void _ZN10S1225C2_nt3v12Ev();
extern void _ZN10S1225C2_nt3v13Ev();
extern void _ZN10S1225C2_nt3v14Ev();
extern void _ZN10S1225C2_nt3v15Ev();
extern void _ZN10S1225C2_nt3v16Ev();
extern void _ZN10S1225C2_nt3v17Ev();
extern void _ZN10S1225C2_nt3v18Ev();
extern void _ZN10S1225C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S1225C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1225C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1225C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1225C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S1225C2_nt[];
VTBL_ENTRY *P__ZTI10S1225C2_nt = _ZTI10S1225C2_nt; 
extern  VTBL_ENTRY _ZTV10S1225C2_nt[];
Class_Descriptor cd_S1225C2_nt = {  "S1225C2_nt", // class name
  bases_S1225C2_nt, 2,
  &(vtc_S1225C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI10S1225C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1225C2_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  S1225C1  : S1225C2_nt {
  void *s1225c1f0;
  ::S1225C5_nt s1225c1f1;
  int s1225c1f2;
  virtual  ~S1225C1(); // _ZN7S1225C1D1Ev
  virtual void  v1(); // _ZN7S1225C12v1Ev
  virtual void  v2(); // _ZN7S1225C12v2Ev
  virtual void  v3(); // _ZN7S1225C12v3Ev
  S1225C1(); // tgen
};
//SIG(1 S1225C1) 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 Fp FC5 Fi}


 S1225C1 ::~S1225C1(){ note_dtor("S1225C1", this);}
void  S1225C1 ::v1(){vfunc_called(this, "_ZN7S1225C12v1Ev");}
void  S1225C1 ::v2(){vfunc_called(this, "_ZN7S1225C12v2Ev");}
void  S1225C1 ::v3(){vfunc_called(this, "_ZN7S1225C12v3Ev");}
S1225C1 ::S1225C1(){ note_ctor("S1225C1", this);} // tgen

static void Test_S1225C1()
{
  extern Class_Descriptor cd_S1225C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S1225C1, buf);
    S1225C1 *dp, &lv = *(dp=new (buf) S1225C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S1225C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1225C1)");
    check_base_class_offset(lv, (S19894C34*)(S1225C3_nt*)(S1225C2_nt*), 0, "S1225C1");
    check_base_class_offset(lv, (S1225C3_nt*)(S1225C2_nt*), 0, "S1225C1");
    check_base_class_offset(lv, (S1225C2_nt*), 0, "S1225C1");
    check_field_offset(lv, s1225c1f0, ABISELECT(72,48), "S1225C1.s1225c1f0");
    check_field_offset(lv, s1225c1f1, ABISELECT(80,52), "S1225C1.s1225c1f1");
    check_field_offset(lv, s1225c1f2, ABISELECT(128,88), "S1225C1.s1225c1f2");
    test_class_info(&lv, &cd_S1225C1);
    dp->~S1225C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1225C1(Test_S1225C1, "S1225C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN7S1225C1C1Ev();
extern void _ZN7S1225C1D1Ev();
Name_Map name_map_S1225C1[] = {
  NSPAIR(_ZN7S1225C1C1Ev),
  NSPAIR(_ZN7S1225C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S1225C3_nt;
extern VTBL_ENTRY _ZTI10S1225C3_nt[];
extern  VTBL_ENTRY _ZTV10S1225C3_nt[];
extern Class_Descriptor cd_S1225C2_nt;
extern VTBL_ENTRY _ZTI10S1225C2_nt[];
extern  VTBL_ENTRY _ZTV10S1225C2_nt[];
static Base_Class bases_S1225C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1225C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1225C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1225C1[];
extern void _ZN7S1225C1D1Ev();
extern void _ZN7S1225C1D0Ev();
extern void _ZN10S1225C3_nt2v4Ev();
extern void _ZN10S1225C2_nt2v5Ev();
extern void _ZN10S1225C2_nt2v6Ev();
extern void _ZN10S1225C2_nt2v7Ev();
extern void _ZN10S1225C2_nt2v8Ev();
extern void _ZN10S1225C2_nt2v9Ev();
extern void _ZN10S1225C2_nt3v10Ev();
extern void _ZN10S1225C2_nt3v11Ev();
extern void _ZN10S1225C2_nt3v12Ev();
extern void _ZN10S1225C2_nt3v13Ev();
extern void _ZN10S1225C2_nt3v14Ev();
extern void _ZN10S1225C2_nt3v15Ev();
extern void _ZN10S1225C2_nt3v16Ev();
extern void _ZN10S1225C2_nt3v17Ev();
extern void _ZN10S1225C2_nt3v18Ev();
extern void _ZN10S1225C2_nt3v19Ev();
extern void _ZN7S1225C12v1Ev();
extern void _ZN7S1225C12v2Ev();
extern void _ZN7S1225C12v3Ev();
static  VTBL_ENTRY vtc_S1225C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1225C1[0]),
  (VTBL_ENTRY)&_ZN7S1225C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1225C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1225C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1225C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S1225C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1225C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1225C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1225C1[];
extern  VTBL_ENTRY _ZTV7S1225C1[];
Class_Descriptor cd_S1225C1 = {  "S1225C1", // class name
  bases_S1225C1, 3,
  &(vtc_S1225C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI7S1225C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1225C1),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  S17773C2  {
  void *s17773c2f0[4];
  int s17773c2f1[2];
  void *s17773c2f2;
  int s17773c2f3[7];
  __tsi64 s17773c2f4;
  int s17773c2f5[18];
  void *s17773c2f6;
  int s17773c2f7[5];
  void *s17773c2f8[13];
  int s17773c2f9;
  void *s17773c2f10;
  int s17773c2f11[3];
  char s17773c2f12[48];
  int s17773c2f13[2];
  char s17773c2f14[3];
  short s17773c2f15[2];
  int s17773c2f16;
  char s17773c2f17;
  int s17773c2f18;
  void *s17773c2f19;
  int s17773c2f20[5];
  void *s17773c2f21;
  int s17773c2f22;
  void *s17773c2f23[4];
  int s17773c2f24[18];
  void *s17773c2f25;
  int s17773c2f26[2];
  void *s17773c2f27[11];
};
//SIG(-1 S17773C2) C1{ Fp[4] Fi[2] Fp Fi[7] FL Fi[18] Fp Fi[5] Fp[13] Fi Fp Fi[3] Fc[48] Fi[2] Fc[3] Fs[2] Fi Fc Fi Fp Fi[5] Fp Fi Fp[4] Fi[18] Fp Fi[2] Fp[11]}



static void Test_S17773C2()
{
  {
    init_simple_test("S17773C2");
    S17773C2 lv;
    check2(sizeof(lv), ABISELECT(656,484), "sizeof(S17773C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17773C2)");
    check_field_offset(lv, s17773c2f0, 0, "S17773C2.s17773c2f0");
    check_field_offset(lv, s17773c2f1, ABISELECT(32,16), "S17773C2.s17773c2f1");
    check_field_offset(lv, s17773c2f2, ABISELECT(40,24), "S17773C2.s17773c2f2");
    check_field_offset(lv, s17773c2f3, ABISELECT(48,28), "S17773C2.s17773c2f3");
    check_field_offset(lv, s17773c2f4, ABISELECT(80,56), "S17773C2.s17773c2f4");
    check_field_offset(lv, s17773c2f5, ABISELECT(88,64), "S17773C2.s17773c2f5");
    check_field_offset(lv, s17773c2f6, ABISELECT(160,136), "S17773C2.s17773c2f6");
    check_field_offset(lv, s17773c2f7, ABISELECT(168,140), "S17773C2.s17773c2f7");
    check_field_offset(lv, s17773c2f8, ABISELECT(192,160), "S17773C2.s17773c2f8");
    check_field_offset(lv, s17773c2f9, ABISELECT(296,212), "S17773C2.s17773c2f9");
    check_field_offset(lv, s17773c2f10, ABISELECT(304,216), "S17773C2.s17773c2f10");
    check_field_offset(lv, s17773c2f11, ABISELECT(312,220), "S17773C2.s17773c2f11");
    check_field_offset(lv, s17773c2f12, ABISELECT(324,232), "S17773C2.s17773c2f12");
    check_field_offset(lv, s17773c2f13, ABISELECT(372,280), "S17773C2.s17773c2f13");
    check_field_offset(lv, s17773c2f14, ABISELECT(380,288), "S17773C2.s17773c2f14");
    check_field_offset(lv, s17773c2f15, ABISELECT(384,292), "S17773C2.s17773c2f15");
    check_field_offset(lv, s17773c2f16, ABISELECT(388,296), "S17773C2.s17773c2f16");
    check_field_offset(lv, s17773c2f17, ABISELECT(392,300), "S17773C2.s17773c2f17");
    check_field_offset(lv, s17773c2f18, ABISELECT(396,304), "S17773C2.s17773c2f18");
    check_field_offset(lv, s17773c2f19, ABISELECT(400,308), "S17773C2.s17773c2f19");
    check_field_offset(lv, s17773c2f20, ABISELECT(408,312), "S17773C2.s17773c2f20");
    check_field_offset(lv, s17773c2f21, ABISELECT(432,332), "S17773C2.s17773c2f21");
    check_field_offset(lv, s17773c2f22, ABISELECT(440,336), "S17773C2.s17773c2f22");
    check_field_offset(lv, s17773c2f23, ABISELECT(448,340), "S17773C2.s17773c2f23");
    check_field_offset(lv, s17773c2f24, ABISELECT(480,356), "S17773C2.s17773c2f24");
    check_field_offset(lv, s17773c2f25, ABISELECT(552,428), "S17773C2.s17773c2f25");
    check_field_offset(lv, s17773c2f26, ABISELECT(560,432), "S17773C2.s17773c2f26");
    check_field_offset(lv, s17773c2f27, ABISELECT(568,440), "S17773C2.s17773c2f27");
  }
}
static Arrange_To_Call_Me vS17773C2(Test_S17773C2, "S17773C2", ABISELECT(656,484));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17773C1  {
  void *s17773c1f0;
  int s17773c1f1[2];
  char s17773c1f2[2];
  ::S17773C2 s17773c1f3;
  ::S7097C4 s17773c1f4;
  int s17773c1f5;
  void *s17773c1f6;
  void  mf17773c1(); // _ZN8S17773C19mf17773c1Ev
};
//SIG(1 S17773C1) C1{ m Fp Fi[2] Fc[2] FC2{ Fp[4] Fi[2] Fp Fi[7] FL Fi[18] Fp Fi[5] Fp[13] Fi Fp Fi[3] Fc[48] Fi[2] Fc[3] Fs[2] Fi Fc Fi Fp Fi[5] Fp Fi Fp[4] Fi[18] Fp Fi[2] Fp[11]} FC3{ FC4{ Fp[5] Fi FU5{ Fi[8] Fc[80]} Fi Fl Fp Fi Fp Fi Fi} FL[24]} Fi Fp}


void  S17773C1 ::mf17773c1(){}

static void Test_S17773C1()
{
  {
    init_simple_test("S17773C1");
    S17773C1 lv;
    check2(sizeof(lv), ABISELECT(1056,832), "sizeof(S17773C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17773C1)");
    check_field_offset(lv, s17773c1f0, 0, "S17773C1.s17773c1f0");
    check_field_offset(lv, s17773c1f1, ABISELECT(8,4), "S17773C1.s17773c1f1");
    check_field_offset(lv, s17773c1f2, ABISELECT(16,12), "S17773C1.s17773c1f2");
    check_field_offset(lv, s17773c1f3, ABISELECT(24,16), "S17773C1.s17773c1f3");
    check_field_offset(lv, s17773c1f4, ABISELECT(680,500), "S17773C1.s17773c1f4");
    check_field_offset(lv, s17773c1f5, ABISELECT(1040,824), "S17773C1.s17773c1f5");
    check_field_offset(lv, s17773c1f6, ABISELECT(1048,828), "S17773C1.s17773c1f6");
  }
}
static Arrange_To_Call_Me vS17773C1(Test_S17773C1, "S17773C1", ABISELECT(1056,832));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20832C3  {
  void *s20832c3f0;
  virtual void  v3(); // _ZN8S20832C32v3Ev
  virtual void  v4(); // _ZN8S20832C32v4Ev
  ~S20832C3(); // tgen
  S20832C3(); // tgen
};
//SIG(-1 S20832C3) C1{ v1 v2 Fp}


void  S20832C3 ::v3(){vfunc_called(this, "_ZN8S20832C32v3Ev");}
void  S20832C3 ::v4(){vfunc_called(this, "_ZN8S20832C32v4Ev");}
S20832C3 ::~S20832C3(){ note_dtor("S20832C3", this);} // tgen
S20832C3 ::S20832C3(){ note_ctor("S20832C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20832C3C1Ev();
extern void _ZN8S20832C3D1Ev();
Name_Map name_map_S20832C3[] = {
  NSPAIR(_ZN8S20832C3C1Ev),
  NSPAIR(_ZN8S20832C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20832C3[];
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY vtc_S20832C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C3[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
Class_Descriptor cd_S20832C3 = {  "S20832C3", // class name
  0,0,//no base classes
  &(vtc_S20832C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20832C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20832C3),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  S20832C6  : virtual S20832C3 {
  virtual void  v5(); // _ZN8S20832C62v5Ev
  virtual void  v6(); // _ZN8S20832C62v6Ev
  virtual void  v7(); // _ZN8S20832C62v7Ev
  virtual void  v8(); // _ZN8S20832C62v8Ev
  virtual void  v9(); // _ZN8S20832C62v9Ev
  virtual void  v10(); // _ZN8S20832C63v10Ev
  ~S20832C6(); // tgen
  S20832C6(); // tgen
};
//SIG(-1 S20832C6) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S20832C6 ::v5(){vfunc_called(this, "_ZN8S20832C62v5Ev");}
void  S20832C6 ::v6(){vfunc_called(this, "_ZN8S20832C62v6Ev");}
void  S20832C6 ::v7(){vfunc_called(this, "_ZN8S20832C62v7Ev");}
void  S20832C6 ::v8(){vfunc_called(this, "_ZN8S20832C62v8Ev");}
void  S20832C6 ::v9(){vfunc_called(this, "_ZN8S20832C62v9Ev");}
void  S20832C6 ::v10(){vfunc_called(this, "_ZN8S20832C63v10Ev");}
S20832C6 ::~S20832C6(){ note_dtor("S20832C6", this);} // tgen
S20832C6 ::S20832C6(){ note_ctor("S20832C6", this);} // tgen

static void Test_S20832C6()
{
  extern Class_Descriptor cd_S20832C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20832C6, buf);
    S20832C6 *dp, &lv = *(dp=new (buf) S20832C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20832C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C6)");
    check_base_class_offset(lv, (S20832C3*), ABISELECT(8,4), "S20832C6");
    test_class_info(&lv, &cd_S20832C6);
    dp->~S20832C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C6(Test_S20832C6, "S20832C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20832C6C1Ev();
extern void _ZN8S20832C6D1Ev();
Name_Map name_map_S20832C6[] = {
  NSPAIR(_ZN8S20832C6C1Ev),
  NSPAIR(_ZN8S20832C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
static Base_Class bases_S20832C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20832C6[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY vtc_S20832C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20832C6[];
static  VTT_ENTRY vtt_S20832C6[] = {
  {&(_ZTV8S20832C6[3]),  3,15},
  {&(_ZTV8S20832C6[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
Class_Descriptor cd_S20832C6 = {  "S20832C6", // class name
  bases_S20832C6, 1,
  &(vtc_S20832C6[0]), // expected_vtbl_contents
  &(vtt_S20832C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20832C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20832C6),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C6),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  S20832C7  : virtual S20832C6 {
  void *s20832c7f0;
  ::S20832C3 s20832c7f1;
  ::S20832C3 s20832c7f2;
  virtual void  v11(); // _ZN8S20832C73v11Ev
  virtual void  v12(); // _ZN8S20832C73v12Ev
  ~S20832C7(); // tgen
  S20832C7(); // tgen
};
//SIG(-1 S20832C7) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v1 v2 Fp FC3 FC3}


void  S20832C7 ::v11(){vfunc_called(this, "_ZN8S20832C73v11Ev");}
void  S20832C7 ::v12(){vfunc_called(this, "_ZN8S20832C73v12Ev");}
S20832C7 ::~S20832C7(){ note_dtor("S20832C7", this);} // tgen
S20832C7 ::S20832C7(){ note_ctor("S20832C7", this);} // tgen

static void Test_S20832C7()
{
  extern Class_Descriptor cd_S20832C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S20832C7, buf);
    S20832C7 *dp, &lv = *(dp=new (buf) S20832C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20832C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C7)");
    check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(48,24), "S20832C7");
    check_base_class_offset(lv, (S20832C6*), 0, "S20832C7");
    check_field_offset(lv, s20832c7f0, ABISELECT(8,4), "S20832C7.s20832c7f0");
    check_field_offset(lv, s20832c7f1, ABISELECT(16,8), "S20832C7.s20832c7f1");
    check_field_offset(lv, s20832c7f2, ABISELECT(32,16), "S20832C7.s20832c7f2");
    test_class_info(&lv, &cd_S20832C7);
    dp->~S20832C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C7(Test_S20832C7, "S20832C7", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20832C7C1Ev();
extern void _ZN8S20832C7D1Ev();
Name_Map name_map_S20832C7[] = {
  NSPAIR(_ZN8S20832C7C1Ev),
  NSPAIR(_ZN8S20832C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
static Base_Class bases_S20832C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(48,24), //bcp->offset
    18, //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_S20832C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20832C7[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY vtc_S20832C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20832C7[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C7[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__8S20832C7[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
static  VTT_ENTRY vtt_S20832C7[] = {
  {&(_ZTV8S20832C7[10]),  10,24},
  {&(_ZTV8S20832C7[10]),  10,24},
  {&(_ZTV8S20832C7[22]),  22,24},
  {&(_tg__ZTV8S20832C6__8S20832C7[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__8S20832C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
Class_Descriptor cd_S20832C7 = {  "S20832C7", // class name
  bases_S20832C7, 2,
  &(vtc_S20832C7[0]), // expected_vtbl_contents
  &(vtt_S20832C7[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20832C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20832C7),24, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C7),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  S20832C5  : virtual S20832C6 , S20832C7 {
  virtual void  v13(); // _ZN8S20832C53v13Ev
  virtual void  v14(); // _ZN8S20832C53v14Ev
  ~S20832C5(); // tgen
  S20832C5(); // tgen
};
//SIG(-1 S20832C5) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} BC4{ VBC2 v11 v12 Fp FC3 FC3} v1 v2}


void  S20832C5 ::v13(){vfunc_called(this, "_ZN8S20832C53v13Ev");}
void  S20832C5 ::v14(){vfunc_called(this, "_ZN8S20832C53v14Ev");}
S20832C5 ::~S20832C5(){ note_dtor("S20832C5", this);} // tgen
S20832C5 ::S20832C5(){ note_ctor("S20832C5", this);} // tgen

static void Test_S20832C5()
{
  extern Class_Descriptor cd_S20832C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S20832C5, buf);
    S20832C5 *dp, &lv = *(dp=new (buf) S20832C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20832C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C5)");
    check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(48,24), "S20832C5");
    check_base_class_offset(lv, (S20832C6*), 0, "S20832C5");
    check_base_class_offset(lv, (S20832C6*)(S20832C7*), 0, "S20832C5");
    check_base_class_offset(lv, (S20832C7*), 0, "S20832C5");
    test_class_info(&lv, &cd_S20832C5);
    dp->~S20832C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C5(Test_S20832C5, "S20832C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20832C5C1Ev();
extern void _ZN8S20832C5D1Ev();
Name_Map name_map_S20832C5[] = {
  NSPAIR(_ZN8S20832C5C1Ev),
  NSPAIR(_ZN8S20832C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C7;
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
static Base_Class bases_S20832C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(48,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20832C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20832C7,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20832C5[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY vtc_S20832C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20832C5[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C7__8S20832C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C7__8S20832C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C5[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__8S20832C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
static  VTT_ENTRY vtt_S20832C5[] = {
  {&(_ZTV8S20832C5[10]),  10,26},
  {&(_tg__ZTV8S20832C7__8S20832C5[10]),  10,18},
  {&(_tg__ZTV8S20832C7__8S20832C5[10]),  10,18},
  {&(_tg__ZTV8S20832C3__8S20832C7__8S20832C5[4]),  4,6},
  {&(_ZTV8S20832C5[10]),  10,26},
  {&(_ZTV8S20832C5[24]),  24,26},
  {&(_tg__ZTV8S20832C6__8S20832C5[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__8S20832C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20832C5[];
extern  VTBL_ENTRY _ZTV8S20832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C5[];
Class_Descriptor cd_S20832C5 = {  "S20832C5", // class name
  bases_S20832C5, 3,
  &(vtc_S20832C5[0]), // expected_vtbl_contents
  &(vtt_S20832C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20832C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20832C5),26, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C5),8, //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  S20832C4  : virtual S20832C5 , S20832C6 {
  void *s20832c4f0;
  virtual void  v15(); // _ZN8S20832C43v15Ev
  virtual void  v16(); // _ZN8S20832C43v16Ev
  virtual void  v17(); // _ZN8S20832C43v17Ev
  virtual void  v18(); // _ZN8S20832C43v18Ev
  virtual void  v19(); // _ZN8S20832C43v19Ev
  virtual void  v20(); // _ZN8S20832C43v20Ev
  virtual void  v21(); // _ZN8S20832C43v21Ev
  virtual void  v22(); // _ZN8S20832C43v22Ev
  ~S20832C4(); // tgen
  S20832C4(); // tgen
};
//SIG(-1 S20832C4) C1{ VBC2{ VBC3{ VBC4{ v9 v10 Fp} v11 v12 v13 v14 v15 v16} BC5{ VBC3 v17 v18 Fp FC4 FC4} v19 v20} BC3 v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S20832C4 ::v15(){vfunc_called(this, "_ZN8S20832C43v15Ev");}
void  S20832C4 ::v16(){vfunc_called(this, "_ZN8S20832C43v16Ev");}
void  S20832C4 ::v17(){vfunc_called(this, "_ZN8S20832C43v17Ev");}
void  S20832C4 ::v18(){vfunc_called(this, "_ZN8S20832C43v18Ev");}
void  S20832C4 ::v19(){vfunc_called(this, "_ZN8S20832C43v19Ev");}
void  S20832C4 ::v20(){vfunc_called(this, "_ZN8S20832C43v20Ev");}
void  S20832C4 ::v21(){vfunc_called(this, "_ZN8S20832C43v21Ev");}
void  S20832C4 ::v22(){vfunc_called(this, "_ZN8S20832C43v22Ev");}
S20832C4 ::~S20832C4(){ note_dtor("S20832C4", this);} // tgen
S20832C4 ::S20832C4(){ note_ctor("S20832C4", this);} // tgen

static void Test_S20832C4()
{
  extern Class_Descriptor cd_S20832C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S20832C4, buf);
    S20832C4 *dp, &lv = *(dp=new (buf) S20832C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20832C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C4)");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(64,32), "S20832C4");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(64,32), "S20832C4");
    check_base_class_offset(lv, (S20832C6*)(S20832C5*), ABISELECT(16,8), "S20832C4");
    check_base_class_offset(lv, (S20832C6*)(S20832C7*)(S20832C5*), ABISELECT(16,8), "S20832C4");
    check_base_class_offset(lv, (S20832C7*)(S20832C5*), ABISELECT(16,8), "S20832C4");
    check_base_class_offset(lv, (S20832C5*), ABISELECT(16,8), "S20832C4");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C6*), 0, "S20832C4");
    check_field_offset(lv, s20832c4f0, ABISELECT(8,4), "S20832C4.s20832c4f0");
    test_class_info(&lv, &cd_S20832C4);
    dp->~S20832C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C4(Test_S20832C4, "S20832C4", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20832C4C1Ev();
extern void _ZN8S20832C4D1Ev();
Name_Map name_map_S20832C4[] = {
  NSPAIR(_ZN8S20832C4C1Ev),
  NSPAIR(_ZN8S20832C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C7;
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
extern Class_Descriptor cd_S20832C5;
extern VTBL_ENTRY _ZTI8S20832C5[];
extern  VTBL_ENTRY _ZTV8S20832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C5[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
static Base_Class bases_S20832C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(64,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20832C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20832C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20832C5,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20832C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20832C4[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C43v15Ev();
extern void _ZN8S20832C43v16Ev();
extern void _ZN8S20832C43v17Ev();
extern void _ZN8S20832C43v18Ev();
extern void _ZN8S20832C43v19Ev();
extern void _ZN8S20832C43v20Ev();
extern void _ZN8S20832C43v21Ev();
extern void _ZN8S20832C43v22Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY vtc_S20832C4[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v21Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20832C4[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__A__8S20832C4[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__A__8S20832C4[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C5__8S20832C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C78S20832C5__8S20832C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C78S20832C5__8S20832C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C5__8S20832C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C4[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__8S20832C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
static  VTT_ENTRY vtt_S20832C4[] = {
  {&(_ZTV8S20832C4[5]),  5,49},
  {&(_tg__ZTV8S20832C6__A__8S20832C4[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__A__8S20832C4[4]),  4,6},
  {&(_ZTV8S20832C4[33]),  33,49},
  {&(_ZTV8S20832C4[33]),  33,49},
  {&(_ZTV8S20832C4[47]),  47,49},
  {&(_tg__ZTV8S20832C5__8S20832C4[10]),  10,20},
  {&(_tg__ZTV8S20832C78S20832C5__8S20832C4[10]),  10,18},
  {&(_tg__ZTV8S20832C78S20832C5__8S20832C4[10]),  10,18},
  {&(_tg__ZTV8S20832C3__8S20832C78S20832C5__8S20832C4[4]),  4,6},
  {&(_tg__ZTV8S20832C5__8S20832C4[10]),  10,20},
  {&(_tg__ZTV8S20832C3__8S20832C5__8S20832C4[4]),  4,6},
  {&(_tg__ZTV8S20832C6__8S20832C4[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__8S20832C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20832C4[];
extern  VTBL_ENTRY _ZTV8S20832C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C4[];
Class_Descriptor cd_S20832C4 = {  "S20832C4", // class name
  bases_S20832C4, 5,
  &(vtc_S20832C4[0]), // expected_vtbl_contents
  &(vtt_S20832C4[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20832C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20832C4),49, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C4),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20832C2  : virtual S20832C3 , virtual S20832C4 {
  __tsi64 s20832c2f0;
  ::S20832C7 s20832c2f1;
  __tsi64 s20832c2f2;
  virtual void  v23(); // _ZN8S20832C23v23Ev
  virtual void  v24(); // _ZN8S20832C23v24Ev
  virtual void  v25(); // _ZN8S20832C23v25Ev
  virtual void  v26(); // _ZN8S20832C23v26Ev
  virtual void  v27(); // _ZN8S20832C23v27Ev
  ~S20832C2(); // tgen
  S20832C2(); // tgen
};
//SIG(-1 S20832C2) C1{ VBC2{ v6 v7 Fp} VBC3{ VBC4{ VBC5{ VBC2 v8 v9 v10 v11 v12 v13} BC6{ VBC5 v14 v15 Fp FC2 FC2} v16 v17} BC5 v18 v19 v20 v21 v22 v23 v24 v25 Fp} v1 v2 v3 v4 v5 FL FC6 FL}


void  S20832C2 ::v23(){vfunc_called(this, "_ZN8S20832C23v23Ev");}
void  S20832C2 ::v24(){vfunc_called(this, "_ZN8S20832C23v24Ev");}
void  S20832C2 ::v25(){vfunc_called(this, "_ZN8S20832C23v25Ev");}
void  S20832C2 ::v26(){vfunc_called(this, "_ZN8S20832C23v26Ev");}
void  S20832C2 ::v27(){vfunc_called(this, "_ZN8S20832C23v27Ev");}
S20832C2 ::~S20832C2(){ note_dtor("S20832C2", this);} // tgen
S20832C2 ::S20832C2(){ note_ctor("S20832C2", this);} // tgen

static void Test_S20832C2()
{
  extern Class_Descriptor cd_S20832C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S20832C2, buf);
    S20832C2 *dp, &lv = *(dp=new (buf) S20832C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S20832C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C2)");
    check_base_class_offset(lv, (S20832C3*), ABISELECT(88,52), "S20832C2");
    /*is_ambiguous_... S20832C2::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(88,52), "S20832C2");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C3*)(S20832C6*)(S20832C4*), ABISELECT(88,52), "S20832C2");
    check_base_class_offset(lv, (S20832C6*)(S20832C5*), 0, "S20832C2");
    check_base_class_offset(lv, (S20832C6*)(S20832C7*)(S20832C5*), 0, "S20832C2");
    check_base_class_offset(lv, (S20832C7*)(S20832C5*), ABISELECT(120,68), "S20832C2");
    check_base_class_offset(lv, (S20832C5*)(S20832C4*), ABISELECT(120,68), "S20832C2");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C6*)(S20832C4*), ABISELECT(104,60), "S20832C2");
    check_base_class_offset(lv, (S20832C4*), ABISELECT(104,60), "S20832C2");
    check_field_offset(lv, s20832c2f0, ABISELECT(8,4), "S20832C2.s20832c2f0");
    check_field_offset(lv, s20832c2f1, ABISELECT(16,12), "S20832C2.s20832c2f1");
    check_field_offset(lv, s20832c2f2, ABISELECT(80,44), "S20832C2.s20832c2f2");
    test_class_info(&lv, &cd_S20832C2);
    dp->~S20832C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C2(Test_S20832C2, "S20832C2", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN8S20832C2C1Ev();
extern void _ZN8S20832C2D1Ev();
Name_Map name_map_S20832C2[] = {
  NSPAIR(_ZN8S20832C2C1Ev),
  NSPAIR(_ZN8S20832C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C7;
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
extern Class_Descriptor cd_S20832C5;
extern VTBL_ENTRY _ZTI8S20832C5[];
extern  VTBL_ENTRY _ZTV8S20832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C5[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C4;
extern VTBL_ENTRY _ZTI8S20832C4[];
extern  VTBL_ENTRY _ZTV8S20832C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C4[];
static Base_Class bases_S20832C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(88,52), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20832C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20832C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20832C5,    ABISELECT(120,68), //bcp->offset
    62, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20832C6,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20832C4,    ABISELECT(104,60), //bcp->offset
    29, //bcp->virtual_function_table_offset
    19, //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 _ZTI8S20832C2[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C23v23Ev();
extern void _ZN8S20832C23v24Ev();
extern void _ZN8S20832C23v25Ev();
extern void _ZN8S20832C23v26Ev();
extern void _ZN8S20832C23v27Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C43v15Ev();
extern void _ZN8S20832C43v16Ev();
extern void _ZN8S20832C43v17Ev();
extern void _ZN8S20832C43v18Ev();
extern void _ZN8S20832C43v19Ev();
extern void _ZN8S20832C43v20Ev();
extern void _ZN8S20832C43v21Ev();
extern void _ZN8S20832C43v22Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY vtc_S20832C2[] = {
  0,
  ABISELECT(120,68),
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v27Ev,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v21Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S20832C2[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C43v15Ev();
extern void _ZN8S20832C43v16Ev();
extern void _ZN8S20832C43v17Ev();
extern void _ZN8S20832C43v18Ev();
extern void _ZN8S20832C43v19Ev();
extern void _ZN8S20832C43v20Ev();
extern void _ZN8S20832C43v21Ev();
extern void _ZN8S20832C43v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C4__8S20832C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v21Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v22Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C68S20832C4__A1__8S20832C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C68S20832C4__A1__8S20832C2[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C5__8S20832C4__8S20832C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C4__8S20832C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C4__8S20832C2[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C5__8S20832C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C78S20832C5__8S20832C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C78S20832C5__8S20832C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C78S20832C5__8S20832C2[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C5__8S20832C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C5__8S20832C2[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C2[] = {
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__8S20832C2[] = {
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
static  VTT_ENTRY vtt_S20832C2[] = {
  {&(_ZTV8S20832C2[12]),  12,86},
  {&(_ZTV8S20832C2[27]),  27,86},
  {&(_ZTV8S20832C2[48]),  48,86},
  {&(_ZTV8S20832C2[76]),  76,86},
  {&(_ZTV8S20832C2[12]),  12,86},
  {&(_tg__ZTV8S20832C4__8S20832C2[5]),  5,19},
  {&(_tg__ZTV8S20832C68S20832C4__A1__8S20832C2[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C68S20832C4__A1__8S20832C2[4]),  4,6},
  {&(_tg__ZTV8S20832C5__8S20832C4__8S20832C2[14]),  14,24},
  {&(_tg__ZTV8S20832C6__8S20832C4__8S20832C2[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C4__8S20832C2[4]),  4,6},
  {&(_tg__ZTV8S20832C5__8S20832C2[10]),  10,20},
  {&(_tg__ZTV8S20832C78S20832C5__8S20832C2[10]),  10,18},
  {&(_tg__ZTV8S20832C6__8S20832C78S20832C5__8S20832C2[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C78S20832C5__8S20832C2[4]),  4,6},
  {&(_tg__ZTV8S20832C6__8S20832C5__8S20832C2[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C5__8S20832C2[4]),  4,6},
  {&(_tg__ZTV8S20832C6__8S20832C2[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__8S20832C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20832C2[];
extern  VTBL_ENTRY _ZTV8S20832C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C2[];
Class_Descriptor cd_S20832C2 = {  "S20832C2", // class name
  bases_S20832C2, 6,
  &(vtc_S20832C2[0]), // expected_vtbl_contents
  &(vtt_S20832C2[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI8S20832C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20832C2),86, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C2),19, //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  S20832C8  : S20832C7 {
  int s20832c8f0;
  __tsi64 s20832c8f1:27;
  virtual void  v28(); // _ZN8S20832C83v28Ev
  virtual void  v29(); // _ZN8S20832C83v29Ev
  virtual void  v30(); // _ZN8S20832C83v30Ev
  virtual void  v31(); // _ZN8S20832C83v31Ev
  virtual void  v32(); // _ZN8S20832C83v32Ev
  virtual void  v33(); // _ZN8S20832C83v33Ev
  virtual void  v34(); // _ZN8S20832C83v34Ev
  ~S20832C8(); // tgen
  S20832C8(); // tgen
};
//SIG(-1 S20832C8) C1{ BC2{ VBC3{ VBC4{ v8 v9 Fp} v10 v11 v12 v13 v14 v15} v16 v17 Fp FC4 FC4} v1 v2 v3 v4 v5 v6 v7 Fi FL:27}


void  S20832C8 ::v28(){vfunc_called(this, "_ZN8S20832C83v28Ev");}
void  S20832C8 ::v29(){vfunc_called(this, "_ZN8S20832C83v29Ev");}
void  S20832C8 ::v30(){vfunc_called(this, "_ZN8S20832C83v30Ev");}
void  S20832C8 ::v31(){vfunc_called(this, "_ZN8S20832C83v31Ev");}
void  S20832C8 ::v32(){vfunc_called(this, "_ZN8S20832C83v32Ev");}
void  S20832C8 ::v33(){vfunc_called(this, "_ZN8S20832C83v33Ev");}
void  S20832C8 ::v34(){vfunc_called(this, "_ZN8S20832C83v34Ev");}
S20832C8 ::~S20832C8(){ note_dtor("S20832C8", this);} // tgen
S20832C8 ::S20832C8(){ note_ctor("S20832C8", this);} // tgen

static void Test_S20832C8()
{
  extern Class_Descriptor cd_S20832C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S20832C8, buf);
    S20832C8 *dp, &lv = *(dp=new (buf) S20832C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S20832C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C8)");
    check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(56,32), "S20832C8");
    check_base_class_offset(lv, (S20832C6*)(S20832C7*), 0, "S20832C8");
    check_base_class_offset(lv, (S20832C7*), 0, "S20832C8");
    check_field_offset(lv, s20832c8f0, ABISELECT(48,24), "S20832C8.s20832c8f0");
    set_bf_and_test(lv, s20832c8f1, ABISELECT(52,28), 0, 27, 1, "S20832C8");
    set_bf_and_test(lv, s20832c8f1, ABISELECT(52,28), 0, 27, hide_sll(1LL<<26), "S20832C8");
    test_class_info(&lv, &cd_S20832C8);
    dp->~S20832C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C8(Test_S20832C8, "S20832C8", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S20832C8C1Ev();
extern void _ZN8S20832C8D1Ev();
Name_Map name_map_S20832C8[] = {
  NSPAIR(_ZN8S20832C8C1Ev),
  NSPAIR(_ZN8S20832C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C7;
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
static Base_Class bases_S20832C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(56,32), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20832C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20832C7,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20832C8[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C83v28Ev();
extern void _ZN8S20832C83v29Ev();
extern void _ZN8S20832C83v30Ev();
extern void _ZN8S20832C83v31Ev();
extern void _ZN8S20832C83v32Ev();
extern void _ZN8S20832C83v33Ev();
extern void _ZN8S20832C83v34Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY vtc_S20832C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C8[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v29Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v30Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v31Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v32Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v33Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v34Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20832C8[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20832C8[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C7__8S20832C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C7__8S20832C8[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C8[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__8S20832C8[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
static  VTT_ENTRY vtt_S20832C8[] = {
  {&(_ZTV8S20832C8[10]),  10,31},
  {&(_tg__ZTV8S20832C7__8S20832C8[10]),  10,18},
  {&(_tg__ZTV8S20832C7__8S20832C8[10]),  10,18},
  {&(_tg__ZTV8S20832C3__8S20832C7__8S20832C8[4]),  4,6},
  {&(_ZTV8S20832C8[10]),  10,31},
  {&(_ZTV8S20832C8[29]),  29,31},
  {&(_tg__ZTV8S20832C6__8S20832C8[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__8S20832C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20832C8[];
extern  VTBL_ENTRY _ZTV8S20832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C8[];
Class_Descriptor cd_S20832C8 = {  "S20832C8", // class name
  bases_S20832C8, 3,
  &(vtc_S20832C8[0]), // expected_vtbl_contents
  &(vtt_S20832C8[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S20832C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20832C8),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C8),8, //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  S20832C1  : virtual S20832C2 , virtual S20832C8 {
  int s20832c1f0;
  void *s20832c1f1;
  virtual void  v1(); // _ZN8S20832C12v1Ev
  virtual void  v2(); // _ZN8S20832C12v2Ev
  ~S20832C1(); // tgen
  S20832C1(); // tgen
};
//SIG(1 S20832C1) C1{ VBC2{ VBC3{ v3 v4 Fp} VBC4{ VBC5{ VBC6{ VBC3 v5 v6 v7 v8 v9 v10} BC7{ VBC6 v11 v12 Fp FC3 FC3} v13 v14} BC6 v15 v16 v17 v18 v19 v20 v21 v22 Fp} v23 v24 v25 v26 v27 FL FC7 FL} VBC8{ BC7 v28 v29 v30 v31 v32 v33 v34 Fi FL:27} v1 v2 Fi Fp}


void  S20832C1 ::v1(){vfunc_called(this, "_ZN8S20832C12v1Ev");}
void  S20832C1 ::v2(){vfunc_called(this, "_ZN8S20832C12v2Ev");}
S20832C1 ::~S20832C1(){ note_dtor("S20832C1", this);} // tgen
S20832C1 ::S20832C1(){ note_ctor("S20832C1", this);} // tgen

static void Test_S20832C1()
{
  extern Class_Descriptor cd_S20832C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,35)];
    init_test(&cd_S20832C1, buf);
    S20832C1 *dp, &lv = *(dp=new (buf) S20832C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,136), "sizeof(S20832C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20832C1)");
    check_base_class_offset(lv, (S20832C3*)(S20832C2*), ABISELECT(112,64), "S20832C1");
    /*is_ambiguous_... S20832C1::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C3*)(S20832C6*), ABISELECT(112,64), "S20832C1");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C3*)(S20832C6*)(S20832C4*), ABISELECT(112,64), "S20832C1");
    check_base_class_offset(lv, (S20832C6*)(S20832C5*), 0, "S20832C1");
    check_base_class_offset(lv, (S20832C6*)(S20832C7*)(S20832C5*), 0, "S20832C1");
    check_base_class_offset(lv, (S20832C6*)(S20832C7*)(S20832C8*), 0, "S20832C1");
    check_base_class_offset(lv, (S20832C7*)(S20832C5*), ABISELECT(144,80), "S20832C1");
    check_base_class_offset(lv, (S20832C5*)(S20832C4*), ABISELECT(144,80), "S20832C1");
    /*is_ambiguous_... S20832C4::S20832C6 */ AMB_check_base_class_offset(lv, (S20832C6*)(S20832C4*), ABISELECT(128,72), "S20832C1");
    check_base_class_offset(lv, (S20832C4*)(S20832C2*), ABISELECT(128,72), "S20832C1");
    check_base_class_offset(lv, (S20832C2*), ABISELECT(24,12), "S20832C1");
    check_base_class_offset(lv, (S20832C7*)(S20832C8*), ABISELECT(192,104), "S20832C1");
    check_base_class_offset(lv, (S20832C8*), ABISELECT(192,104), "S20832C1");
    check_field_offset(lv, s20832c1f0, ABISELECT(8,4), "S20832C1.s20832c1f0");
    check_field_offset(lv, s20832c1f1, ABISELECT(16,8), "S20832C1.s20832c1f1");
    test_class_info(&lv, &cd_S20832C1);
    dp->~S20832C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20832C1(Test_S20832C1, "S20832C1", ABISELECT(248,136));

#else // __cplusplus

extern void _ZN8S20832C1C1Ev();
extern void _ZN8S20832C1D1Ev();
Name_Map name_map_S20832C1[] = {
  NSPAIR(_ZN8S20832C1C1Ev),
  NSPAIR(_ZN8S20832C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20832C3;
extern VTBL_ENTRY _ZTI8S20832C3[];
extern  VTBL_ENTRY _ZTV8S20832C3[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C7;
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
extern Class_Descriptor cd_S20832C5;
extern VTBL_ENTRY _ZTI8S20832C5[];
extern  VTBL_ENTRY _ZTV8S20832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C5[];
extern Class_Descriptor cd_S20832C6;
extern VTBL_ENTRY _ZTI8S20832C6[];
extern  VTBL_ENTRY _ZTV8S20832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C6[];
extern Class_Descriptor cd_S20832C4;
extern VTBL_ENTRY _ZTI8S20832C4[];
extern  VTBL_ENTRY _ZTV8S20832C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C4[];
extern Class_Descriptor cd_S20832C2;
extern VTBL_ENTRY _ZTI8S20832C2[];
extern  VTBL_ENTRY _ZTV8S20832C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C2[];
extern Class_Descriptor cd_S20832C7;
extern VTBL_ENTRY _ZTI8S20832C7[];
extern  VTBL_ENTRY _ZTV8S20832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C7[];
extern Class_Descriptor cd_S20832C8;
extern VTBL_ENTRY _ZTI8S20832C8[];
extern  VTBL_ENTRY _ZTV8S20832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C8[];
static Base_Class bases_S20832C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20832C3,    ABISELECT(112,64), //bcp->offset
    50, //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_S20832C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20832C7,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20832C5,    ABISELECT(144,80), //bcp->offset
    89, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20832C6,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20832C4,    ABISELECT(128,72), //bcp->offset
    56, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20832C2,    ABISELECT(24,12), //bcp->offset
    22, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20832C7,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20832C8,    ABISELECT(192,104), //bcp->offset
    113, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20832C1[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C12v1Ev();
extern void _ZN8S20832C12v2Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C23v23Ev();
extern void _ZN8S20832C23v24Ev();
extern void _ZN8S20832C23v25Ev();
extern void _ZN8S20832C23v26Ev();
extern void _ZN8S20832C23v27Ev();
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C43v15Ev();
extern void _ZN8S20832C43v16Ev();
extern void _ZN8S20832C43v17Ev();
extern void _ZN8S20832C43v18Ev();
extern void _ZN8S20832C43v19Ev();
extern void _ZN8S20832C43v20Ev();
extern void _ZN8S20832C43v21Ev();
extern void _ZN8S20832C43v22Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C83v28Ev();
extern void _ZN8S20832C83v29Ev();
extern void _ZN8S20832C83v30Ev();
extern void _ZN8S20832C83v31Ev();
extern void _ZN8S20832C83v32Ev();
extern void _ZN8S20832C83v33Ev();
extern void _ZN8S20832C83v34Ev();
static  VTBL_ENTRY vtc_S20832C1[] = {
  ABISELECT(192,104),
  0,
  ABISELECT(144,80),
  ABISELECT(128,72),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C1[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20832C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(88,52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20832C1[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v27Ev,
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20832C1[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20832C1[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v21Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-16),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S20832C1[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-80,-40),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S20832C1[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v29Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v30Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v31Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v32Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v33Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v34Ev,
};
extern VTBL_ENTRY _ZTV8S20832C1[];
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C23v23Ev();
extern void _ZN8S20832C23v24Ev();
extern void _ZN8S20832C23v25Ev();
extern void _ZN8S20832C23v26Ev();
extern void _ZN8S20832C23v27Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C2__8S20832C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20832C23v27Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C2__8S20832C1[] = {
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C43v15Ev();
extern void _ZN8S20832C43v16Ev();
extern void _ZN8S20832C43v17Ev();
extern void _ZN8S20832C43v18Ev();
extern void _ZN8S20832C43v19Ev();
extern void _ZN8S20832C43v20Ev();
extern void _ZN8S20832C43v21Ev();
extern void _ZN8S20832C43v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C4__8S20832C2__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v21Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v22Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C5__8S20832C2__8S20832C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-16),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C2__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20832C2[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C43v15Ev();
extern void _ZN8S20832C43v16Ev();
extern void _ZN8S20832C43v17Ev();
extern void _ZN8S20832C43v18Ev();
extern void _ZN8S20832C43v19Ev();
extern void _ZN8S20832C43v20Ev();
extern void _ZN8S20832C43v21Ev();
extern void _ZN8S20832C43v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C4__8S20832C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v21Ev,
  (VTBL_ENTRY)&_ZN8S20832C43v22Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C68S20832C4__A1__8S20832C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C68S20832C4__A1__8S20832C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C5__8S20832C4__8S20832C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C4__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C4__8S20832C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20832C4[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C53v13Ev();
extern void _ZN8S20832C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C5__8S20832C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20832C53v14Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C78S20832C5__8S20832C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C78S20832C5__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C78S20832C5__8S20832C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C5__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C5__8S20832C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20832C5[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C1[] = {
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C6__8S20832C1[] = {
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20832C6[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
extern void _ZN8S20832C83v28Ev();
extern void _ZN8S20832C83v29Ev();
extern void _ZN8S20832C83v30Ev();
extern void _ZN8S20832C83v31Ev();
extern void _ZN8S20832C83v32Ev();
extern void _ZN8S20832C83v33Ev();
extern void _ZN8S20832C83v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C8__8S20832C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C8[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v29Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v30Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v31Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v32Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v33Ev,
  (VTBL_ENTRY)&_ZN8S20832C83v34Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
extern void _ZN8S20832C73v11Ev();
extern void _ZN8S20832C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C78S20832C8__A1__8S20832C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20832C73v12Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C78S20832C8__A1__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C78S20832C8__A1__8S20832C1[] = {
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20832C7[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
extern void _ZN8S20832C62v5Ev();
extern void _ZN8S20832C62v6Ev();
extern void _ZN8S20832C62v7Ev();
extern void _ZN8S20832C62v8Ev();
extern void _ZN8S20832C62v9Ev();
extern void _ZN8S20832C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C6__8S20832C8__8S20832C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S20832C8[0]),
  (VTBL_ENTRY)&_ZN8S20832C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20832C62v9Ev,
  (VTBL_ENTRY)&_ZN8S20832C63v10Ev,
};
extern void _ZN8S20832C32v3Ev();
extern void _ZN8S20832C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20832C3__8S20832C8__8S20832C1[] = {
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20832C8[0]),
  (VTBL_ENTRY)&_ZN8S20832C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20832C32v4Ev,
};
static  VTT_ENTRY vtt_S20832C1[] = {
  {&(_ZTV8S20832C1[14]),  14,147},
  {&(_ZTV8S20832C1[39]),  39,147},
  {&(_ZTV8S20832C1[54]),  54,147},
  {&(_ZTV8S20832C1[75]),  75,147},
  {&(_ZTV8S20832C1[103]),  103,147},
  {&(_ZTV8S20832C1[14]),  14,147},
  {&(_ZTV8S20832C1[132]),  132,147},
  {&(_tg__ZTV8S20832C2__8S20832C1[12]),  12,23},
  {&(_tg__ZTV8S20832C3__8S20832C2__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C4__8S20832C2__8S20832C1[19]),  19,33},
  {&(_tg__ZTV8S20832C5__8S20832C2__8S20832C1[14]),  14,24},
  {&(_tg__ZTV8S20832C6__8S20832C2__8S20832C1[9]),  9,15},
  {&(_tg__ZTV8S20832C4__8S20832C1[5]),  5,19},
  {&(_tg__ZTV8S20832C68S20832C4__A1__8S20832C1[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C68S20832C4__A1__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C5__8S20832C4__8S20832C1[14]),  14,24},
  {&(_tg__ZTV8S20832C6__8S20832C4__8S20832C1[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C4__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C5__8S20832C1[10]),  10,20},
  {&(_tg__ZTV8S20832C78S20832C5__8S20832C1[10]),  10,18},
  {&(_tg__ZTV8S20832C6__8S20832C78S20832C5__8S20832C1[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C78S20832C5__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C6__8S20832C5__8S20832C1[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C5__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C6__8S20832C1[3]),  3,9},
  {&(_tg__ZTV8S20832C3__8S20832C6__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C8__8S20832C1[10]),  10,25},
  {&(_tg__ZTV8S20832C78S20832C8__A1__8S20832C1[10]),  10,18},
  {&(_tg__ZTV8S20832C6__8S20832C78S20832C8__A1__8S20832C1[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C78S20832C8__A1__8S20832C1[4]),  4,6},
  {&(_tg__ZTV8S20832C6__8S20832C8__8S20832C1[9]),  9,15},
  {&(_tg__ZTV8S20832C3__8S20832C8__8S20832C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20832C1[];
extern  VTBL_ENTRY _ZTV8S20832C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20832C1[];
Class_Descriptor cd_S20832C1 = {  "S20832C1", // class name
  bases_S20832C1, 9,
  &(vtc_S20832C1[0]), // expected_vtbl_contents
  &(vtt_S20832C1[0]), // expected_vtt_contents
  ABISELECT(248,136), // object size
  NSPAIRA(_ZTI8S20832C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20832C1),147, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20832C1),32, //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  S9526C2  {
  virtual  ~S9526C2(); // _ZN7S9526C2D1Ev
  virtual void  v3(); // _ZN7S9526C22v3Ev
  virtual void  v4(); // _ZN7S9526C22v4Ev
  virtual void  v5(); // _ZN7S9526C22v5Ev
  virtual void  v6(); // _ZN7S9526C22v6Ev
  S9526C2(); // tgen
};
//SIG(-1 S9526C2) C1{ vd v1 v2 v3 v4}


 S9526C2 ::~S9526C2(){ note_dtor("S9526C2", this);}
void  S9526C2 ::v3(){vfunc_called(this, "_ZN7S9526C22v3Ev");}
void  S9526C2 ::v4(){vfunc_called(this, "_ZN7S9526C22v4Ev");}
void  S9526C2 ::v5(){vfunc_called(this, "_ZN7S9526C22v5Ev");}
void  S9526C2 ::v6(){vfunc_called(this, "_ZN7S9526C22v6Ev");}
S9526C2 ::S9526C2(){ note_ctor("S9526C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9526C2C1Ev();
extern void _ZN7S9526C2D1Ev();
Name_Map name_map_S9526C2[] = {
  NSPAIR(_ZN7S9526C2C1Ev),
  NSPAIR(_ZN7S9526C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9526C2[];
extern void _ZN7S9526C2D1Ev();
extern void _ZN7S9526C2D0Ev();
extern void _ZN7S9526C22v3Ev();
extern void _ZN7S9526C22v4Ev();
extern void _ZN7S9526C22v5Ev();
extern void _ZN7S9526C22v6Ev();
static  VTBL_ENTRY vtc_S9526C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9526C2[0]),
  (VTBL_ENTRY)&_ZN7S9526C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9526C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9526C2[];
extern  VTBL_ENTRY _ZTV7S9526C2[];
Class_Descriptor cd_S9526C2 = {  "S9526C2", // class name
  0,0,//no base classes
  &(vtc_S9526C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9526C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9526C2),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  S9526C3  {
  void *s9526c3f0;
  int s9526c3f1[4];
  __tsi64 s9526c3f2[2];
  void  mf9526c3(); // _ZN7S9526C38mf9526c3Ev
};
//SIG(-1 S9526C3) C1{ m Fp Fi[4] FL[2]}


void  S9526C3 ::mf9526c3(){}

static void Test_S9526C3()
{
  {
    init_simple_test("S9526C3");
    S9526C3 lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S9526C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9526C3)");
    check_field_offset(lv, s9526c3f0, 0, "S9526C3.s9526c3f0");
    check_field_offset(lv, s9526c3f1, ABISELECT(8,4), "S9526C3.s9526c3f1");
    check_field_offset(lv, s9526c3f2, ABISELECT(24,20), "S9526C3.s9526c3f2");
  }
}
static Arrange_To_Call_Me vS9526C3(Test_S9526C3, "S9526C3", ABISELECT(40,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9526C10_nt  {
  __tsi64 s9526c10f0[2];
  void  mf9526c10(); // _ZN11S9526C10_nt9mf9526c10Ev
};
//SIG(-1 S9526C10_nt) C1{ m FL[2]}


void  S9526C10_nt ::mf9526c10(){}

//skip512 S9526C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9526C9_nt  {
  ::S9526C10_nt s9526c9f0;
  void  mf9526c9(); // _ZN10S9526C9_nt8mf9526c9Ev
};
//SIG(-1 S9526C9_nt) C1{ m FC2{ m FL[2]}}


void  S9526C9_nt ::mf9526c9(){}

//skip512 S9526C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9526C11_nt  {
  void *s9526c11f0;
  int s9526c11f1;
  ::S19894C34 s9526c11f2;
  void  mf9526c11(); // _ZN11S9526C11_nt9mf9526c11Ev
};
//SIG(-1 S9526C11_nt) C1{ m Fp Fi FC2{ m}}


void  S9526C11_nt ::mf9526c11(){}

//skip512 S9526C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9526C6  {
  void *s9526c6f0;
  int s9526c6f1[10];
  ::S3619C18_nt s9526c6f2;
  void *s9526c6f3;
  int s9526c6f4[4];
  ::S9526C9_nt s9526c6f5;
  int s9526c6f6;
  ::S9526C9_nt s9526c6f7;
  ::S9526C9_nt s9526c6f8;
  int s9526c6f9[3];
  ::S9526C11_nt s9526c6f10;
  char s9526c6f11;
  void *s9526c6f12[2];
  char s9526c6f13;
  void  mf9526c6(); // _ZN7S9526C68mf9526c6Ev
};
//SIG(-1 S9526C6) C1{ m Fp Fi[10] FC2{ m Fp Fi FC3{ m}} Fp Fi[4] FC4{ m FC5{ m FL[2]}} Fi FC4 FC4 Fi[3] FC6{ m Fp Fi FC7{ m}} Fc Fp[2] Fc}


void  S9526C6 ::mf9526c6(){}

static void Test_S9526C6()
{
  {
    init_simple_test("S9526C6");
    S9526C6 lv;
    check2(sizeof(lv), ABISELECT(208,168), "sizeof(S9526C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9526C6)");
    check_field_offset(lv, s9526c6f0, 0, "S9526C6.s9526c6f0");
    check_field_offset(lv, s9526c6f1, ABISELECT(8,4), "S9526C6.s9526c6f1");
    check_field_offset(lv, s9526c6f2, ABISELECT(48,44), "S9526C6.s9526c6f2");
    check_field_offset(lv, s9526c6f3, ABISELECT(64,56), "S9526C6.s9526c6f3");
    check_field_offset(lv, s9526c6f4, ABISELECT(72,60), "S9526C6.s9526c6f4");
    check_field_offset(lv, s9526c6f5, ABISELECT(88,76), "S9526C6.s9526c6f5");
    check_field_offset(lv, s9526c6f6, ABISELECT(104,92), "S9526C6.s9526c6f6");
    check_field_offset(lv, s9526c6f7, ABISELECT(112,96), "S9526C6.s9526c6f7");
    check_field_offset(lv, s9526c6f8, ABISELECT(128,112), "S9526C6.s9526c6f8");
    check_field_offset(lv, s9526c6f9, ABISELECT(144,128), "S9526C6.s9526c6f9");
    check_field_offset(lv, s9526c6f10, ABISELECT(160,140), "S9526C6.s9526c6f10");
    check_field_offset(lv, s9526c6f11, ABISELECT(176,152), "S9526C6.s9526c6f11");
    check_field_offset(lv, s9526c6f12, ABISELECT(184,156), "S9526C6.s9526c6f12");
    check_field_offset(lv, s9526c6f13, ABISELECT(200,164), "S9526C6.s9526c6f13");
  }
}
static Arrange_To_Call_Me vS9526C6(Test_S9526C6, "S9526C6", ABISELECT(208,168));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9526C1  : S9526C2 {
  ::S9526C3 s9526c1f0[12];
  void *s9526c1f1[12];
  __tsi64 s9526c1f2[12];
  ::S3620C26_nt s9526c1f3;
  ::S9526C6 s9526c1f4;
  int s9526c1f5[2];
  char s9526c1f6;
  virtual  ~S9526C1(); // _ZN7S9526C1D1Ev
  virtual void  v1(); // _ZN7S9526C12v1Ev
  virtual void  v2(); // _ZN7S9526C12v2Ev
  S9526C1(); // tgen
};
//SIG(1 S9526C1) C1{ BC2{ vd v3 v4 v5 v6} vd v1 v2 FC3{ m Fp Fi[4] FL[2]}[12] Fp[12] FL[12] FC4{ m Fp Fi[2] FC5{ m}} FC6{ m Fp Fi[10] FC7{ m Fp Fi FC8{ m}} Fp Fi[4] FC9{ m FC10{ m FL[2]}} Fi FC9 FC9 Fi[3] FC11{ m Fp Fi FC12{ m}} Fc Fp[2] Fc} Fi[2] Fc}


 S9526C1 ::~S9526C1(){ note_dtor("S9526C1", this);}
void  S9526C1 ::v1(){vfunc_called(this, "_ZN7S9526C12v1Ev");}
void  S9526C1 ::v2(){vfunc_called(this, "_ZN7S9526C12v2Ev");}
S9526C1 ::S9526C1(){ note_ctor("S9526C1", this);} // tgen

static void Test_S9526C1()
{
  extern Class_Descriptor cd_S9526C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(117,195)];
    init_test(&cd_S9526C1, buf);
    S9526C1 *dp, &lv = *(dp=new (buf) S9526C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,776), "sizeof(S9526C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9526C1)");
    check_base_class_offset(lv, (S9526C2*), 0, "S9526C1");
    check_field_offset(lv, s9526c1f0, ABISELECT(8,4), "S9526C1.s9526c1f0");
    check_field_offset(lv, s9526c1f1, ABISELECT(488,436), "S9526C1.s9526c1f1");
    check_field_offset(lv, s9526c1f2, ABISELECT(584,484), "S9526C1.s9526c1f2");
    check_field_offset(lv, s9526c1f3, ABISELECT(680,580), "S9526C1.s9526c1f3");
    check_field_offset(lv, s9526c1f4, ABISELECT(704,596), "S9526C1.s9526c1f4");
    check_field_offset(lv, s9526c1f5, ABISELECT(912,764), "S9526C1.s9526c1f5");
    check_field_offset(lv, s9526c1f6, ABISELECT(920,772), "S9526C1.s9526c1f6");
    test_class_info(&lv, &cd_S9526C1);
    dp->~S9526C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9526C1(Test_S9526C1, "S9526C1", ABISELECT(928,776));

#else // __cplusplus

extern void _ZN7S9526C1C1Ev();
extern void _ZN7S9526C1D1Ev();
Name_Map name_map_S9526C1[] = {
  NSPAIR(_ZN7S9526C1C1Ev),
  NSPAIR(_ZN7S9526C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9526C2;
extern VTBL_ENTRY _ZTI7S9526C2[];
extern  VTBL_ENTRY _ZTV7S9526C2[];
static Base_Class bases_S9526C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9526C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9526C1[];
extern void _ZN7S9526C1D1Ev();
extern void _ZN7S9526C1D0Ev();
extern void _ZN7S9526C22v3Ev();
extern void _ZN7S9526C22v4Ev();
extern void _ZN7S9526C22v5Ev();
extern void _ZN7S9526C22v6Ev();
extern void _ZN7S9526C12v1Ev();
extern void _ZN7S9526C12v2Ev();
static  VTBL_ENTRY vtc_S9526C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9526C1[0]),
  (VTBL_ENTRY)&_ZN7S9526C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9526C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9526C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9526C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9526C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9526C1[];
extern  VTBL_ENTRY _ZTV7S9526C1[];
Class_Descriptor cd_S9526C1 = {  "S9526C1", // class name
  bases_S9526C1, 1,
  &(vtc_S9526C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(928,776), // object size
  NSPAIRA(_ZTI7S9526C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9526C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C5  : S21216C26_nt , virtual S19894C34 {
  int s19486c5f0;
  virtual  ~S19486C5(); // _ZN8S19486C5D2Ev
  S19486C5(); // tgen
};
//SIG(-1 S19486C5) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S19486C5()
{
  extern Class_Descriptor cd_S19486C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19486C5, buf);
    S19486C5 *dp, &lv = *(dp=new (buf) S19486C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19486C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C5)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S19486C5");
    check_base_class_offset(lv, (S19894C34*), 0, "S19486C5");
    check_field_offset(lv, s19486c5f0, ABISELECT(8,4), "S19486C5.s19486c5f0");
    test_class_info(&lv, &cd_S19486C5);
    dp->~S19486C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C5(Test_S19486C5, "S19486C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19486C5C1Ev();
extern void _ZN8S19486C5D2Ev();
Name_Map name_map_S19486C5[] = {
  NSPAIR(_ZN8S19486C5C1Ev),
  NSPAIR(_ZN8S19486C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19486C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19486C5[];
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY vtc_S19486C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S19486C5[];
static  VTT_ENTRY vtt_S19486C5[] = {
  {&(_ZTV8S19486C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
Class_Descriptor cd_S19486C5 = {  "S19486C5", // class name
  bases_S19486C5, 2,
  &(vtc_S19486C5[0]), // expected_vtbl_contents
  &(vtt_S19486C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19486C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19486C5),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19486C5),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C3  : virtual S19894C34 , S19486C5 , S21216C26_nt {
  long s19486c3f0;
  ~S19486C3(); // tgen
  S19486C3(); // tgen
};
//SIG(-1 S19486C3) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S19486C3()
{
  extern Class_Descriptor cd_S19486C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19486C3, buf);
    S19486C3 *dp, &lv = *(dp=new (buf) S19486C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19486C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C3)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19486C3");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*), 0, "S19486C3");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), 0, "S19486C3");
    check_base_class_offset(lv, (S19486C5*), 0, "S19486C3");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S19486C3");
    check_field_offset(lv, s19486c3f0, ABISELECT(24,12), "S19486C3.s19486c3f0");
    test_class_info(&lv, &cd_S19486C3);
    dp->~S19486C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C3(Test_S19486C3, "S19486C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19486C3C1Ev();
extern void _ZN8S19486C3D1Ev();
Name_Map name_map_S19486C3[] = {
  NSPAIR(_ZN8S19486C3C1Ev),
  NSPAIR(_ZN8S19486C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19486C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19486C5,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI8S19486C3[];
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
extern void ABISELECT(_ZThn16_N8S19486C3D1Ev,_ZThn8_N8S19486C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19486C3D0Ev,_ZThn8_N8S19486C3D0Ev)();
static  VTBL_ENTRY vtc_S19486C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19486C3D1Ev,_ZThn8_N8S19486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19486C3D0Ev,_ZThn8_N8S19486C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19486C3[];
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__8S19486C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C3[] = {
  {&(_ZTV8S19486C3[3]),  3,9},
  {&(_tg__ZTV8S19486C5__8S19486C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
Class_Descriptor cd_S19486C3 = {  "S19486C3", // class name
  bases_S19486C3, 4,
  &(vtc_S19486C3[0]), // expected_vtbl_contents
  &(vtt_S19486C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19486C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19486C3),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19486C3),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  S19486C2  : S19486C3 , virtual S21216C26_nt , S19894C34 , virtual S19486C5 {
  virtual  ~S19486C2(); // _ZN8S19486C2D2Ev
  S19486C2(); // tgen
};
//SIG(-1 S19486C2) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} VBC3 vd Fi} BC5 Fl} VBC5 BC3 VBC4 vd}


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

static void Test_S19486C2()
{
  extern Class_Descriptor cd_S19486C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19486C2, buf);
    S19486C2 *dp, &lv = *(dp=new (buf) S19486C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19486C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C2)");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*), ABISELECT(32,16), "S19486C2");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*), ABISELECT(32,16), "S19486C2");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), ABISELECT(32,16), "S19486C2");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*), 0, "S19486C2");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*), 0, "S19486C2");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*), ABISELECT(16,8), "S19486C2");
    check_base_class_offset(lv, (S19486C3*), 0, "S19486C2");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(32,16), "S19486C2");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19486C2");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(40,20), "S19486C2");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*), ABISELECT(40,20), "S19486C2");
    test_class_info(&lv, &cd_S19486C2);
    dp->~S19486C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C2(Test_S19486C2, "S19486C2", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19486C2C1Ev();
extern void _ZN8S19486C2D2Ev();
Name_Map name_map_S19486C2[] = {
  NSPAIR(_ZN8S19486C2C1Ev),
  NSPAIR(_ZN8S19486C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
static Base_Class bases_S19486C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19486C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19486C2[];
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19486C2D1Ev,_ZThn8_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19486C2D0Ev,_ZThn8_N8S19486C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19486C2D1Ev,_ZThn16_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19486C2D0Ev,_ZThn16_N8S19486C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19486C2D1Ev,_ZThn20_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19486C2D0Ev,_ZThn20_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C2[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19486C2D1Ev,_ZThn8_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19486C2D0Ev,_ZThn8_N8S19486C2D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19486C2[];
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C3__8S19486C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C3__8S19486C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C2[] = {
  {&(_ZTV8S19486C2[5]),  5,22},
  {&(_tg__ZTV8S19486C3__8S19486C2[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C3__8S19486C2[3]),  3,5},
  {&(_ZTV8S19486C2[14]),  14,22},
  {&(_ZTV8S19486C2[20]),  20,22},
  {&(_tg__ZTV8S19486C5__A1__8S19486C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19486C2D0Ev,_ZThn20_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19486C2D1Ev,_ZThn20_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C2D0Ev,_ZThn16_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C2D1Ev,_ZThn16_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C2 = {  "S19486C2", // class name
  bases_S19486C2, 9,
  &(vtc_S19486C2[0]), // expected_vtbl_contents
  &(vtt_S19486C2[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19486C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19486C2),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19486C2),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C7  : virtual S19894C34 , virtual S19486C5 , virtual S19486C2 , S21216C26_nt {
  __tsi64 s19486c7f0;
  ~S19486C7(); // tgen
  S19486C7(); // tgen
};
//SIG(-1 S19486C7) C1{ VBC2{ m} VBC3{ BC4{ vd m} VBC2 vd Fi} VBC5{ BC6{ VBC2 BC3 BC4 Fl} VBC4 BC2 VBC3 vd} BC4 FL}


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

static void Test_S19486C7()
{
  extern Class_Descriptor cd_S19486C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S19486C7, buf);
    S19486C7 *dp, &lv = *(dp=new (buf) S19486C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S19486C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C7)");
    /*is_ambiguous_... S19486C7::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19486C7");
    /*is_ambiguous_... S19486C7::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), 0, "S19486C7");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*), 0, "S19486C7");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*), 0, "S19486C7");
    /*is_ambiguous_... S19486C7::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(16,12), "S19486C7");
    /*is_ambiguous_... S19486C7::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*), ABISELECT(16,12), "S19486C7");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*), ABISELECT(16,12), "S19486C7");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*), ABISELECT(32,20), "S19486C7");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*), ABISELECT(32,20), "S19486C7");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*), ABISELECT(48,28), "S19486C7");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*), ABISELECT(32,20), "S19486C7");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*), ABISELECT(64,36), "S19486C7");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*), ABISELECT(32,20), "S19486C7");
    check_base_class_offset(lv, (S19486C2*), ABISELECT(32,20), "S19486C7");
    /*is_ambiguous_... S19486C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19486C7");
    check_field_offset(lv, s19486c7f0, ABISELECT(8,4), "S19486C7.s19486c7f0");
    test_class_info(&lv, &cd_S19486C7);
    dp->~S19486C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C7(Test_S19486C7, "S19486C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S19486C7C1Ev();
extern void _ZN8S19486C7D1Ev();
Name_Map name_map_S19486C7[] = {
  NSPAIR(_ZN8S19486C7C1Ev),
  NSPAIR(_ZN8S19486C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19486C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,28), //bcp->offset
    22, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19486C2,    ABISELECT(32,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19486C7[];
extern void _ZN8S19486C7D1Ev();
extern void _ZN8S19486C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19486C7D1Ev,_ZTv0_n16_N8S19486C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19486C7D1Ev,_ZThn12_N8S19486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C7D0Ev,_ZTv0_n16_N8S19486C7D0Ev)();
extern void ABISELECT(_ZThn16_N8S19486C7D0Ev,_ZThn12_N8S19486C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C7D1Ev,_ZTv0_n24_N8S19486C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19486C7D1Ev,_ZThn20_N8S19486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C7D0Ev,_ZTv0_n24_N8S19486C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19486C7D0Ev,_ZThn20_N8S19486C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19486C7D1Ev,_ZTvn8_n24_N8S19486C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19486C7D0Ev,_ZTvn8_n24_N8S19486C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C7D1Ev,_ZTv0_n12_N8S19486C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S19486C7D1Ev,_ZThn36_N8S19486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C7D0Ev,_ZTv0_n12_N8S19486C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S19486C7D0Ev,_ZThn36_N8S19486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C7[] = {
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&_ZN8S19486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C7D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C7D1Ev,_ZTv0_n16_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C7D0Ev,_ZTv0_n16_N8S19486C7D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C7D1Ev,_ZTv0_n24_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C7D0Ev,_ZTv0_n24_N8S19486C7D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C7D1Ev,_ZTvn8_n24_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C7D0Ev,_ZTvn8_n24_N8S19486C7D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C7D1Ev,_ZTv0_n12_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C7D0Ev,_ZTv0_n12_N8S19486C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19486C7[];
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__8S19486C7[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C2__8S19486C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C2__8S19486C7[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C2__A1__8S19486C7[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19486C2D1Ev,_ZThn16_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19486C2D0Ev,_ZThn16_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C2__8S19486C7[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C2__8S19486C7[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
static  VTT_ENTRY vtt_S19486C7[] = {
  {&(_ZTV8S19486C7[6]),  6,31},
  {&(_ZTV8S19486C7[12]),  12,31},
  {&(_ZTV8S19486C7[20]),  20,31},
  {&(_ZTV8S19486C7[24]),  24,31},
  {&(_ZTV8S19486C7[29]),  29,31},
  {&(_tg__ZTV8S19486C5__8S19486C7[3]),  3,5},
  {&(_tg__ZTV8S19486C2__8S19486C7[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C2__8S19486C7[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C2__A1__8S19486C7[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C2__8S19486C7[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C2__8S19486C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19486C7[];
extern  VTBL_ENTRY _ZTV8S19486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C7[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C2D0Ev,_ZThn16_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C2D1Ev,_ZThn16_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C7D0Ev,_ZTv0_n12_N8S19486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19486C7D0Ev,_ZThn36_N8S19486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C7D1Ev,_ZTv0_n12_N8S19486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19486C7D1Ev,_ZThn36_N8S19486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C7D0Ev,_ZTv0_n24_N8S19486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C7D0Ev,_ZThn20_N8S19486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C7D1Ev,_ZTv0_n24_N8S19486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C7D1Ev,_ZThn20_N8S19486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C7D0Ev,_ZTv0_n16_N8S19486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19486C7D0Ev,_ZThn12_N8S19486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C7D1Ev,_ZTv0_n16_N8S19486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19486C7D1Ev,_ZThn12_N8S19486C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C7 = {  "S19486C7", // class name
  bases_S19486C7, 11,
  &(vtc_S19486C7[0]), // expected_vtbl_contents
  &(vtt_S19486C7[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S19486C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19486C7),31, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19486C7),11, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C9_nt  {
  long double s19486c9f0[10];
  void  mf19486c9(); // _ZN11S19486C9_nt9mf19486c9Ev
};
//SIG(-1 S19486C9_nt) C1{ m FD[10]}


void  S19486C9_nt ::mf19486c9(){}

//skip512 S19486C9_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19486C9_nt[];
VTBL_ENTRY *P__ZTI11S19486C9_nt = _ZTI11S19486C9_nt; 
Class_Descriptor cd_S19486C9_nt = {  "S19486C9_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(160,120), // object size
  NSPAIRA(_ZTI11S19486C9_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  S19486C11  : virtual S19894C34 , virtual S21216C26_nt , virtual S19486C5 , S19486C2 , S19486C3 {
  ::S19486C2 s19486c11f0;
  ~S19486C11(); // tgen
  S19486C11(); // tgen
};
//SIG(-1 S19486C11) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC3 VBC2 vd Fi} BC5{ BC6{ VBC2 BC4 BC3 Fl} VBC3 BC2 VBC4 vd} BC6 FC5}


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

static void Test_S19486C11()
{
  extern Class_Descriptor cd_S19486C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S19486C11, buf);
    S19486C11 *dp, &lv = *(dp=new (buf) S19486C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S19486C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C11)");
    /*is_ambiguous_... S19486C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), ABISELECT(120,60), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), ABISELECT(120,60), "S19486C11");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*), ABISELECT(120,60), "S19486C11");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*), ABISELECT(120,60), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*), ABISELECT(120,60), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*), ABISELECT(120,60), "S19486C11");
    /*is_ambiguous_... S19486C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(120,60), "S19486C11");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*), ABISELECT(120,60), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(128,64), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*), ABISELECT(128,64), "S19486C11");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*), ABISELECT(128,64), "S19486C11");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*), 0, "S19486C11");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*), 0, "S19486C11");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*), ABISELECT(16,8), "S19486C11");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*), 0, "S19486C11");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*), 0, "S19486C11");
    check_base_class_offset(lv, (S19486C2*), 0, "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*), ABISELECT(32,16), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*), ABISELECT(32,16), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*), ABISELECT(48,24), "S19486C11");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C3*), ABISELECT(32,16), "S19486C11");
    check_field_offset(lv, s19486c11f0, ABISELECT(64,32), "S19486C11.s19486c11f0");
    test_class_info(&lv, &cd_S19486C11);
    dp->~S19486C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C11(Test_S19486C11, "S19486C11", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN9S19486C11C1Ev();
extern void _ZN9S19486C11D1Ev();
Name_Map name_map_S19486C11[] = {
  NSPAIR(_ZN9S19486C11C1Ev),
  NSPAIR(_ZN9S19486C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
static Base_Class bases_S19486C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(120,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(128,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19486C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19486C11[];
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
extern void ABISELECT(_ZThn16_N9S19486C11D1Ev,_ZThn8_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19486C11D0Ev,_ZThn8_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19486C11D1Ev,_ZThn24_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19486C11D0Ev,_ZThn24_N9S19486C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C11[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19486C11D1Ev,_ZThn8_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19486C11D0Ev,_ZThn8_N9S19486C11D0Ev),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19486C11D1Ev,_ZThn24_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19486C11D0Ev,_ZThn24_N9S19486C11D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19486C11[];
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C2__9S19486C11[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C2__9S19486C11[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C2__A1__9S19486C11[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C2__9S19486C11[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C2__9S19486C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C3__A2__9S19486C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C11[] = {
  {&(_ZTV9S19486C11[5]),  5,31},
  {&(_tg__ZTV8S19486C2__9S19486C11[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C2__9S19486C11[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C2__A1__9S19486C11[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C2__9S19486C11[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C2__9S19486C11[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C11[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C3__A2__9S19486C11[3]),  3,5},
  {&(_ZTV9S19486C11[23]),  23,31},
  {&(_ZTV9S19486C11[29]),  29,31},
  {&(_ZTV9S19486C11[14]),  14,31},
  {&(_tg__ZTV8S19486C5__9S19486C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C11 = {  "S19486C11", // class name
  bases_S19486C11, 14,
  &(vtc_S19486C11[0]), // expected_vtbl_contents
  &(vtt_S19486C11[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI9S19486C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19486C11),31, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19486C11),12, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C10  : S21216C26_nt , virtual S19486C11 {
  ~S19486C10(); // tgen
  S19486C10(); // tgen
};
//SIG(-1 S19486C10) C1{ BC2{ vd m} VBC3{ VBC4{ m} VBC2 VBC5{ BC2 VBC4 vd Fi} BC6{ BC7{ VBC4 BC5 BC2 Fl} VBC2 BC4 VBC5 vd} BC7 FC6}}


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

static void Test_S19486C10()
{
  extern Class_Descriptor cd_S19486C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[20];
    init_test(&cd_S19486C10, buf);
    S19486C10 *dp, &lv = *(dp=new (buf) S19486C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,76), "sizeof(S19486C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C10)");
    /*is_ambiguous_... S19486C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19486C10");
    /*is_ambiguous_... S19486C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*), 0, "S19486C10");
    /*is_ambiguous_... S19486C10::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), 0, "S19486C10");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C10");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*), 0, "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*), 0, "S19486C10");
    /*is_ambiguous_... S19486C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*), ABISELECT(128,64), "S19486C10");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*), ABISELECT(128,64), "S19486C10");
    /*is_ambiguous_... S19486C10::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(136,68), "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*), ABISELECT(136,68), "S19486C10");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*), ABISELECT(136,68), "S19486C10");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C10");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C10");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(24,12), "S19486C10");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C10");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C10");
    check_base_class_offset(lv, (S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(40,20), "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(40,20), "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*), ABISELECT(56,28), "S19486C10");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*), ABISELECT(40,20), "S19486C10");
    check_base_class_offset(lv, (S19486C11*), ABISELECT(8,4), "S19486C10");
    test_class_info(&lv, &cd_S19486C10);
    dp->~S19486C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C10(Test_S19486C10, "S19486C10", ABISELECT(152,76));

#else // __cplusplus

extern void _ZN9S19486C10C1Ev();
extern void _ZN9S19486C10D1Ev();
Name_Map name_map_S19486C10[] = {
  NSPAIR(_ZN9S19486C10C1Ev),
  NSPAIR(_ZN9S19486C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
static Base_Class bases_S19486C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(136,68), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19486C11,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19486C10[];
extern void _ZN9S19486C10D1Ev();
extern void _ZN9S19486C10D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S19486C10D1Ev,_ZThn4_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S19486C10D0Ev,_ZThn4_N9S19486C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S19486C10D1Ev,_ZTvn8_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S19486C10D0Ev,_ZTvn8_n24_N9S19486C10D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N9S19486C10D1Ev,_ZTvn16_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N9S19486C10D0Ev,_ZTvn16_n24_N9S19486C10D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19486C10D1Ev,_ZTvn24_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19486C10D0Ev,_ZTvn24_n24_N9S19486C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C10D1Ev,_ZThn64_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C10D0Ev,_ZThn64_N9S19486C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19486C10D1Ev,_ZThn68_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19486C10D0Ev,_ZThn68_N9S19486C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C10[] = {
  ABISELECT(136,68),
  ABISELECT(128,64),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&_ZN9S19486C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C10D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19486C10D1Ev,_ZTvn8_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19486C10D0Ev,_ZTvn8_n24_N9S19486C10D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19486C10D1Ev,_ZTvn16_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19486C10D0Ev,_ZTvn16_n24_N9S19486C10D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19486C10D1Ev,_ZTvn24_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19486C10D0Ev,_ZTvn24_n24_N9S19486C10D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19486C10[];
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C11__9S19486C10[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C11__9S19486C10[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C11__9S19486C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__9S19486C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__9S19486C10[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C11__9S19486C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C10[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C11__A2__9S19486C10[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C11__9S19486C10[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C11__9S19486C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C11__9S19486C10[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C10[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C10[] = {
  {&(_ZTV9S19486C10[6]),  6,40},
  {&(_ZTV9S19486C10[14]),  14,40},
  {&(_ZTV9S19486C10[32]),  32,40},
  {&(_ZTV9S19486C10[38]),  38,40},
  {&(_ZTV9S19486C10[18]),  18,40},
  {&(_ZTV9S19486C10[23]),  23,40},
  {&(_ZTV9S19486C10[27]),  27,40},
  {&(_tg__ZTV9S19486C11__9S19486C10[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C11__9S19486C10[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C11__9S19486C10[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__9S19486C10[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__9S19486C10[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C11__9S19486C10[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C10[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C11__A2__9S19486C10[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C11__9S19486C10[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C11__9S19486C10[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C11__9S19486C10[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19486C10[];
extern  VTBL_ENTRY _ZTV9S19486C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C10[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19486C10D0Ev,_ZThn68_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19486C10D1Ev,_ZThn68_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C10D0Ev,_ZThn64_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C10D1Ev,_ZThn64_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19486C10D0Ev,_ZThn4_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19486C10D1Ev,_ZThn4_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C10 = {  "S19486C10", // class name
  bases_S19486C10, 16,
  &(vtc_S19486C10[0]), // expected_vtbl_contents
  &(vtt_S19486C10[0]), // expected_vtt_contents
  ABISELECT(152,76), // object size
  NSPAIRA(_ZTI9S19486C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19486C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19486C10),19, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C12  : S19486C11 {
  virtual  ~S19486C12(); // _ZN9S19486C12D2Ev
  S19486C12(); // tgen
};
//SIG(-1 S19486C12) C1{ BC2{ VBC3{ m} VBC4{ vd m} VBC5{ BC4 VBC3 vd Fi} BC6{ BC7{ VBC3 BC5 BC4 Fl} VBC4 BC3 VBC5 vd} BC7 FC6} vd}


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

static void Test_S19486C12()
{
  extern Class_Descriptor cd_S19486C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S19486C12, buf);
    S19486C12 *dp, &lv = *(dp=new (buf) S19486C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S19486C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C12)");
    /*is_ambiguous_... S19486C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    /*is_ambiguous_... S19486C12::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), ABISELECT(120,60), "S19486C12");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    /*is_ambiguous_... S19486C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*), ABISELECT(120,60), "S19486C12");
    /*is_ambiguous_... S19486C12::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(128,64), "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*), ABISELECT(128,64), "S19486C12");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*), ABISELECT(128,64), "S19486C12");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C12");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C12");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(16,8), "S19486C12");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C12");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*), 0, "S19486C12");
    check_base_class_offset(lv, (S19486C2*)(S19486C11*), 0, "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(32,16), "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(32,16), "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*), ABISELECT(48,24), "S19486C12");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*), ABISELECT(32,16), "S19486C12");
    check_base_class_offset(lv, (S19486C11*), 0, "S19486C12");
    test_class_info(&lv, &cd_S19486C12);
    dp->~S19486C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C12(Test_S19486C12, "S19486C12", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN9S19486C12C1Ev();
extern void _ZN9S19486C12D2Ev();
Name_Map name_map_S19486C12[] = {
  NSPAIR(_ZN9S19486C12C1Ev),
  NSPAIR(_ZN9S19486C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
static Base_Class bases_S19486C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(120,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(128,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19486C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C26_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19486C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19486C12[];
extern void _ZN9S19486C12D1Ev();
extern void _ZN9S19486C12D0Ev();
extern void ABISELECT(_ZThn16_N9S19486C12D1Ev,_ZThn8_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19486C12D0Ev,_ZThn8_N9S19486C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19486C12D1Ev,_ZThn16_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C12D0Ev,_ZThn16_N9S19486C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19486C12D1Ev,_ZThn24_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19486C12D0Ev,_ZThn24_N9S19486C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn120_N9S19486C12D1Ev,_ZThn60_N9S19486C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev)();
extern void ABISELECT(_ZThn120_N9S19486C12D0Ev,_ZThn60_N9S19486C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C12D1Ev,_ZThn64_N9S19486C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C12D0Ev,_ZThn64_N9S19486C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C12[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&_ZN9S19486C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C12D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19486C12D1Ev,_ZThn8_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19486C12D0Ev,_ZThn8_N9S19486C12D0Ev),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C12D1Ev,_ZThn16_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C12D0Ev,_ZThn16_N9S19486C12D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19486C12D1Ev,_ZThn24_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19486C12D0Ev,_ZThn24_N9S19486C12D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19486C12[];
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C11__9S19486C12[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C11__9S19486C12[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C11__9S19486C12[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__9S19486C12[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__9S19486C12[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C11__9S19486C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C12[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C11__A2__9S19486C12[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C11__9S19486C12[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C11__9S19486C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C11__9S19486C12[] = {
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C12[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C12[] = {
  {&(_ZTV9S19486C12[5]),  5,31},
  {&(_tg__ZTV9S19486C11__9S19486C12[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C11__9S19486C12[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C11__9S19486C12[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__9S19486C12[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__9S19486C12[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C11__9S19486C12[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C12[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C11__A2__9S19486C12[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C11__9S19486C12[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C11__9S19486C12[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C11__9S19486C12[3]),  3,5},
  {&(_ZTV9S19486C12[23]),  23,31},
  {&(_ZTV9S19486C12[29]),  29,31},
  {&(_ZTV9S19486C12[14]),  14,31},
  {&(_tg__ZTV8S19486C5__9S19486C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19486C12[];
extern  VTBL_ENTRY _ZTV9S19486C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C12[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C12D0Ev,_ZThn64_N9S19486C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C12D1Ev,_ZThn64_N9S19486C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C12D0Ev,_ZThn60_N9S19486C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C12D1Ev,_ZThn60_N9S19486C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C12 = {  "S19486C12", // class name
  bases_S19486C12, 15,
  &(vtc_S19486C12[0]), // expected_vtbl_contents
  &(vtt_S19486C12[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI9S19486C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19486C12),31, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19486C12),16, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C14_nt  : S19894C34 {
  int s19486c14f0;
};
//SIG(-1 S19486C14_nt) C1{ BC2{ m} Fi}



//skip512 S19486C14_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19486C13  : virtual S19486C14_nt , virtual S19894C34 , virtual S19486C5 , S21216C26_nt , S19486C11 {
  virtual void  v1(); // _ZN9S19486C132v1Ev
  ~S19486C13(); // tgen
  S19486C13(); // tgen
};
//SIG(-1 S19486C13) C1{ VBC2{ BC3{ m} Fi} VBC3 VBC4{ BC5{ vd m} VBC3 vd Fi} BC5 BC6{ VBC3 VBC5 VBC4 BC7{ BC8{ VBC3 BC4 BC5 Fl} VBC5 BC3 VBC4 vd} BC8 FC7} v1}


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

static void Test_S19486C13()
{
  extern Class_Descriptor cd_S19486C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S19486C13, buf);
    S19486C13 *dp, &lv = *(dp=new (buf) S19486C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19486C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19486C13)");
    check_base_class_offset(lv, (S19894C34*)(S19486C14_nt*), ABISELECT(128,64), "S19486C13");
    check_base_class_offset(lv, (S19486C14_nt*), ABISELECT(128,64), "S19486C13");
    /*is_ambiguous_... S19486C13::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19486C13");
    /*is_ambiguous_... S19486C13::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), 0, "S19486C13");
    /*is_ambiguous_... S19486C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*), 0, "S19486C13");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C13");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*), 0, "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*), 0, "S19486C13");
    /*is_ambiguous_... S19486C13::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(136,68), "S19486C13");
    /*is_ambiguous_... S19486C13::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*), ABISELECT(136,68), "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*), ABISELECT(136,68), "S19486C13");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*), ABISELECT(136,68), "S19486C13");
    /*is_ambiguous_... S19486C13::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19486C13");
    /*is_ambiguous_... S19486C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*), ABISELECT(152,76), "S19486C13");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*), ABISELECT(152,76), "S19486C13");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C13");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C13");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(24,12), "S19486C13");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C13");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C13");
    check_base_class_offset(lv, (S19486C2*)(S19486C11*), ABISELECT(8,4), "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(40,20), "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(40,20), "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*), ABISELECT(56,28), "S19486C13");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*), ABISELECT(40,20), "S19486C13");
    check_base_class_offset(lv, (S19486C11*), ABISELECT(8,4), "S19486C13");
    test_class_info(&lv, &cd_S19486C13);
    dp->~S19486C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C13(Test_S19486C13, "S19486C13", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S19486C13C1Ev();
extern void _ZN9S19486C13D1Ev();
Name_Map name_map_S19486C13[] = {
  NSPAIR(_ZN9S19486C13C1Ev),
  NSPAIR(_ZN9S19486C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C14_nt;
extern VTBL_ENTRY _ZTI12S19486C14_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
static Base_Class bases_S19486C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19486C14_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(136,68), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C26_nt,    ABISELECT(152,76), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19486C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19486C11,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19486C13[];
extern void _ZN9S19486C13D1Ev();
extern void _ZN9S19486C13D0Ev();
extern void _ZN9S19486C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19486C13D1Ev,_ZThn4_N9S19486C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19486C13D0Ev,_ZThn4_N9S19486C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S19486C13D1Ev,_ZThn12_N9S19486C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S19486C13D0Ev,_ZThn12_N9S19486C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S19486C13D1Ev,_ZThn20_N9S19486C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S19486C13D0Ev,_ZThn20_N9S19486C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19486C13D1Ev,_ZThn28_N9S19486C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19486C13D0Ev,_ZThn28_N9S19486C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19486C13D1Ev,_ZTv0_n16_N9S19486C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S19486C13D1Ev,_ZThn68_N9S19486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C13D0Ev,_ZTv0_n16_N9S19486C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S19486C13D0Ev,_ZThn68_N9S19486C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C13D1Ev,_ZTv0_n12_N9S19486C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S19486C13D1Ev,_ZThn76_N9S19486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C13D0Ev,_ZTv0_n12_N9S19486C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S19486C13D0Ev,_ZThn76_N9S19486C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C13[] = {
  ABISELECT(152,76),
  ABISELECT(136,68),
  0,
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&_ZN9S19486C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19486C132v1Ev,
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19486C13D1Ev,_ZThn4_N9S19486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19486C13D0Ev,_ZThn4_N9S19486C13D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19486C13D1Ev,_ZThn12_N9S19486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19486C13D0Ev,_ZThn12_N9S19486C13D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19486C13D1Ev,_ZThn20_N9S19486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19486C13D0Ev,_ZThn20_N9S19486C13D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19486C13D1Ev,_ZThn28_N9S19486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19486C13D0Ev,_ZThn28_N9S19486C13D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C13D1Ev,_ZTv0_n16_N9S19486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C13D0Ev,_ZTv0_n16_N9S19486C13D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C13D1Ev,_ZTv0_n12_N9S19486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C13D0Ev,_ZTv0_n12_N9S19486C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19486C13[];
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C11__9S19486C13[] = {
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C11__9S19486C13[] = {
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C11__9S19486C13[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__9S19486C13[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19486C2D1Ev,_ZThn72_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19486C2D0Ev,_ZThn72_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__9S19486C13[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C11__9S19486C13[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C13[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C11__A2__9S19486C13[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S19486C11D1Ev,_ZThn72_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S19486C11D0Ev,_ZThn72_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C11__9S19486C13[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C11__9S19486C13[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C11__9S19486C13[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C13[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C13[] = {
  {&(_ZTV9S19486C13[6]),  6,40},
  {&(_tg__ZTV9S19486C11__9S19486C13[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C11__9S19486C13[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C11__9S19486C13[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__9S19486C13[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__9S19486C13[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C11__9S19486C13[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C13[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C11__A2__9S19486C13[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C11__9S19486C13[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C11__9S19486C13[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C11__9S19486C13[3]),  3,5},
  {&(_ZTV9S19486C13[33]),  33,40},
  {&(_ZTV9S19486C13[14]),  14,40},
  {&(_ZTV9S19486C13[38]),  38,40},
  {&(_ZTV9S19486C13[23]),  23,40},
  {&(_tg__ZTV8S19486C5__9S19486C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19486C13[];
extern  VTBL_ENTRY _ZTV9S19486C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C13[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19486C11D0Ev,_ZThn72_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19486C11D1Ev,_ZThn72_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19486C2D0Ev,_ZThn72_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19486C2D1Ev,_ZThn72_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C13D0Ev,_ZTv0_n12_N9S19486C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19486C13D0Ev,_ZThn76_N9S19486C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C13D1Ev,_ZTv0_n12_N9S19486C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19486C13D1Ev,_ZThn76_N9S19486C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C13D0Ev,_ZTv0_n16_N9S19486C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19486C13D0Ev,_ZThn68_N9S19486C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C13D1Ev,_ZTv0_n16_N9S19486C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19486C13D1Ev,_ZThn68_N9S19486C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C13 = {  "S19486C13", // class name
  bases_S19486C13, 18,
  &(vtc_S19486C13[0]), // expected_vtbl_contents
  &(vtt_S19486C13[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S19486C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19486C13),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19486C13),17, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C8  : virtual S19486C9_nt , S19486C10 , S19486C12 {
  ::S19486C13 s19486c8f0;
  ~S19486C8(); // tgen
  S19486C8(); // tgen
};
//SIG(-1 S19486C8) C1{ VBC2{ m FD[10]} BC3{ BC4{ vd m} VBC5{ VBC6{ m} VBC4 VBC7{ BC4 VBC6 vd Fi} BC8{ BC9{ VBC6 BC7 BC4 Fl} VBC4 BC6 VBC7 vd} BC9 FC8}} BC10{ BC5 vd} FC11{ VBC12{ BC6 Fi} VBC6 VBC7 BC4 BC5 v1}}


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

static void Test_S19486C8()
{
  extern Class_Descriptor cd_S19486C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,85)];
    init_test(&cd_S19486C8, buf);
    S19486C8 *dp, &lv = *(dp=new (buf) S19486C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,336), "sizeof(S19486C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19486C8)");
    check_base_class_offset(lv, (S19486C9_nt*), ABISELECT(288,144), "S19486C8");
    /*is_ambiguous_... S19486C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C10*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*), 0, "S19486C8");
    /*is_ambiguous_... S19486C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*)(S19486C12*), 0, "S19486C8");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*), 0, "S19486C8");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*), 0, "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*)(S19486C12*), 0, "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*)(S19486C12*), 0, "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*), ABISELECT(568,324), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*), ABISELECT(568,324), "S19486C8");
    /*is_ambiguous_... S19486C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*)(S19486C12*), ABISELECT(568,324), "S19486C8");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(568,324), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(576,328), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*), ABISELECT(576,328), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*), ABISELECT(576,328), "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*)(S19486C12*), ABISELECT(576,328), "S19486C8");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(576,328), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(448,264), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(448,264), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(464,272), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(448,264), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*), ABISELECT(448,264), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C2*)(S19486C11*), ABISELECT(448,264), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(480,280), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(480,280), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*), ABISELECT(496,288), "S19486C8");
    /*is_ambiguous_... S19486C8::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*), ABISELECT(480,280), "S19486C8");
    check_base_class_offset(lv, (S19486C11*)(S19486C10*), ABISELECT(448,264), "S19486C8");
    check_base_class_offset(lv, (S19486C10*), 0, "S19486C8");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(8,4), "S19486C8");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(8,4), "S19486C8");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(24,12), "S19486C8");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(8,4), "S19486C8");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(8,4), "S19486C8");
    check_base_class_offset(lv, (S19486C2*)(S19486C11*)(S19486C12*), ABISELECT(8,4), "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*)(S19486C12*), ABISELECT(40,20), "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*)(S19486C12*), ABISELECT(40,20), "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*)(S19486C12*), ABISELECT(56,28), "S19486C8");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*)(S19486C12*), ABISELECT(40,20), "S19486C8");
    check_base_class_offset(lv, (S19486C11*)(S19486C12*), ABISELECT(8,4), "S19486C8");
    check_base_class_offset(lv, (S19486C12*), ABISELECT(8,4), "S19486C8");
    check_field_offset(lv, s19486c8f0, ABISELECT(128,64), "S19486C8.s19486c8f0");
    test_class_info(&lv, &cd_S19486C8);
    dp->~S19486C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C8(Test_S19486C8, "S19486C8", ABISELECT(592,336));

#else // __cplusplus

extern void _ZN8S19486C8C1Ev();
extern void _ZN8S19486C8D1Ev();
Name_Map name_map_S19486C8[] = {
  NSPAIR(_ZN8S19486C8C1Ev),
  NSPAIR(_ZN8S19486C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19486C9_nt;
extern VTBL_ENTRY _ZTI11S19486C9_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
extern Class_Descriptor cd_S19486C10;
extern VTBL_ENTRY _ZTI9S19486C10[];
extern  VTBL_ENTRY _ZTV9S19486C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
extern Class_Descriptor cd_S19486C12;
extern VTBL_ENTRY _ZTI9S19486C12[];
extern  VTBL_ENTRY _ZTV9S19486C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C12[];
static Base_Class bases_S19486C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19486C9_nt,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(568,324), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(576,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(576,328), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(448,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(448,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(464,272), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(448,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(448,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
    11, //immediately_derived
  0, 0},
  {&cd_S19486C2,    ABISELECT(448,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(496,288), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(480,280), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19486C11,    ABISELECT(448,264), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19486C10,    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},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19486C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19486C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19486C12,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19486C8[];
extern void _ZN8S19486C8D1Ev();
extern void _ZN8S19486C8D0Ev();
extern void ABISELECT(_ZThn8_N8S19486C8D1Ev,_ZThn4_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19486C8D0Ev,_ZThn4_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn24_N8S19486C8D1Ev,_ZThn12_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19486C8D0Ev,_ZThn12_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19486C8D1Ev,_ZThn20_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19486C8D0Ev,_ZThn20_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19486C8D1Ev,_ZThn28_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19486C8D0Ev,_ZThn28_N8S19486C8D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19486C8D1Ev,_ZTv0_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn448_N8S19486C8D1Ev,_ZThn264_N8S19486C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C8D0Ev,_ZTv0_n24_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn448_N8S19486C8D0Ev,_ZThn264_N8S19486C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19486C8D1Ev,_ZTvn8_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19486C8D0Ev,_ZTvn8_n24_N8S19486C8D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19486C8D1Ev,_ZTvn16_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19486C8D0Ev,_ZTvn16_n24_N8S19486C8D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19486C8D1Ev,_ZTvn24_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19486C8D0Ev,_ZTvn24_n24_N8S19486C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C8D1Ev,_ZTv0_n12_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn568_N8S19486C8D1Ev,_ZThn324_N8S19486C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C8D0Ev,_ZTv0_n12_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn568_N8S19486C8D0Ev,_ZThn324_N8S19486C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C8D1Ev,_ZTv0_n16_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn576_N8S19486C8D1Ev,_ZThn328_N8S19486C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C8D0Ev,_ZTv0_n16_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn576_N8S19486C8D0Ev,_ZThn328_N8S19486C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19486C8[] = {
  ABISELECT(288,144),
  ABISELECT(576,328),
  ABISELECT(568,324),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&_ZN8S19486C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C8D0Ev,
  ABISELECT(568,324),
  ABISELECT(560,320),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19486C8D1Ev,_ZThn4_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19486C8D0Ev,_ZThn4_N8S19486C8D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19486C8D1Ev,_ZThn12_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19486C8D0Ev,_ZThn12_N8S19486C8D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19486C8D1Ev,_ZThn20_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19486C8D0Ev,_ZThn20_N8S19486C8D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19486C8D1Ev,_ZThn28_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19486C8D0Ev,_ZThn28_N8S19486C8D0Ev),
  ABISELECT(-448,-264),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C8D1Ev,_ZTv0_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C8D0Ev,_ZTv0_n24_N8S19486C8D0Ev),
  ABISELECT(-464,-272),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C8D1Ev,_ZTvn8_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C8D0Ev,_ZTvn8_n24_N8S19486C8D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19486C8D1Ev,_ZTvn16_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19486C8D0Ev,_ZTvn16_n24_N8S19486C8D0Ev),
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19486C8D1Ev,_ZTvn24_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19486C8D0Ev,_ZTvn24_n24_N8S19486C8D0Ev),
  ABISELECT(-568,-324),
  ABISELECT(-568,-324),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C8D1Ev,_ZTv0_n12_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C8D0Ev,_ZTv0_n12_N8S19486C8D0Ev),
  ABISELECT(-576,-328),
  ABISELECT(-576,-328),
  ABISELECT(-576,-328),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C8D1Ev,_ZTv0_n16_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C8D0Ev,_ZTv0_n16_N8S19486C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19486C8[];
extern void _ZN9S19486C10D1Ev();
extern void _ZN9S19486C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C10__8S19486C8[] = {
  ABISELECT(576,328),
  ABISELECT(568,324),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&_ZN9S19486C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn448_N9S19486C10D1Ev,_ZThn264_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn448_N9S19486C10D0Ev,_ZThn264_N9S19486C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19486C11__9S19486C10__8S19486C8[] = {
  ABISELECT(-448,-264),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn568_N9S19486C10D1Ev,_ZThn324_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn568_N9S19486C10D0Ev,_ZThn324_N9S19486C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__9S19486C10__8S19486C8[] = {
  ABISELECT(-568,-324),
  ABISELECT(-568,-324),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn576_N9S19486C10D1Ev,_ZThn328_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn576_N9S19486C10D0Ev,_ZThn328_N9S19486C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C10__8S19486C8[] = {
  ABISELECT(-576,-328),
  ABISELECT(-576,-328),
  ABISELECT(-576,-328),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S19486C10D1Ev,_ZTvn8_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S19486C10D0Ev,_ZTvn8_n24_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C38S19486C29S19486C11__A4__9S19486C10__8S19486C8[] = {
  ABISELECT(-464,-272),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19486C10D1Ev,_ZTvn8_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19486C10D0Ev,_ZTvn8_n24_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTvn32_n48_N9S19486C10D1Ev,_ZTvn16_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N9S19486C10D0Ev,_ZTvn16_n24_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C10__8S19486C8[] = {
  ABISELECT(-480,-280),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19486C10D1Ev,_ZTvn16_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19486C10D0Ev,_ZTvn16_n24_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19486C10D1Ev,_ZTvn24_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19486C10D0Ev,_ZTvn24_n24_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C39S19486C11__A6__9S19486C10__8S19486C8[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19486C10D1Ev,_ZTvn24_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19486C10D0Ev,_ZTvn24_n24_N9S19486C10D0Ev),
};
extern void _ZN9S19486C12D1Ev();
extern void _ZN9S19486C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C12__8S19486C8[] = {
  ABISELECT(568,324),
  ABISELECT(560,320),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&_ZN9S19486C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C12D0Ev,
};
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(568,324),
  ABISELECT(560,320),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(568,324),
  ABISELECT(560,320),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C119S19486C12__A2__8S19486C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C119S19486C12__A3__8S19486C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn560_N8S19486C2D1Ev,_ZThn320_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn560_N8S19486C2D0Ev,_ZThn320_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(-560,-320),
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn568_N8S19486C2D1Ev,_ZThn324_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn568_N8S19486C2D0Ev,_ZThn324_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(-568,-324),
  ABISELECT(-576,-328),
  ABISELECT(-568,-324),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C119S19486C12__A3__8S19486C8[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C119S19486C12__A4__8S19486C8[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn560_N9S19486C11D1Ev,_ZThn320_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn560_N9S19486C11D0Ev,_ZThn320_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(-560,-320),
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn568_N9S19486C11D1Ev,_ZThn324_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn568_N9S19486C11D0Ev,_ZThn324_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(-568,-324),
  ABISELECT(-576,-328),
  ABISELECT(-568,-324),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C119S19486C12__A1__8S19486C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn560_N9S19486C12D1Ev,_ZThn320_N9S19486C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev)();
extern void ABISELECT(_ZThn560_N9S19486C12D0Ev,_ZThn320_N9S19486C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C12__8S19486C8[] = {
  ABISELECT(-560,-320),
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn568_N9S19486C12D1Ev,_ZThn324_N9S19486C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev)();
extern void ABISELECT(_ZThn568_N9S19486C12D0Ev,_ZThn324_N9S19486C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C12__8S19486C8[] = {
  ABISELECT(-568,-324),
  ABISELECT(-576,-328),
  ABISELECT(-568,-324),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C12D1Ev,_ZThn16_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C12D0Ev,_ZThn16_N9S19486C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C12__8S19486C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C12D1Ev,_ZThn16_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C12D0Ev,_ZThn16_N9S19486C12D0Ev),
};
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C11__8S19486C8[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-448,-264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C11__8S19486C8[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-448,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C11__8S19486C8[] = {
  ABISELECT(-448,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__8S19486C8[] = {
  ABISELECT(-448,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__8S19486C8[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C11__8S19486C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-576,-328),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__8S19486C8[] = {
  ABISELECT(-480,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C11__A2__8S19486C8[] = {
  ABISELECT(-480,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C11__8S19486C8[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C11__8S19486C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-576,-328),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C11__8S19486C8[] = {
  ABISELECT(-480,-280),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__8S19486C8[] = {
  ABISELECT(-576,-328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
static  VTT_ENTRY vtt_S19486C8[] = {
  {&(_ZTV8S19486C8[7]),  7,61},
  {&(_tg__ZTV9S19486C10__8S19486C8[6]),  6,8},
  {&(_tg__ZTV9S19486C11__9S19486C10__8S19486C8[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt__A1__9S19486C10__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C10__8S19486C8[4]),  4,6},
  {&(_tg__ZTV12S21216C26_nt8S19486C38S19486C29S19486C11__A4__9S19486C10__8S19486C8[2]),  2,4},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C10__8S19486C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt8S19486C39S19486C11__A6__9S19486C10__8S19486C8[2]),  2,4},
  {&(_tg__ZTV9S19486C12__8S19486C8[5]),  5,7},
  {&(_tg__ZTV9S19486C119S19486C12__A1__8S19486C8[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C119S19486C12__A1__8S19486C8[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C119S19486C12__A2__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C119S19486C12__A3__8S19486C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C119S19486C12__A1__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C119S19486C12__A1__8S19486C8[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C119S19486C12__A3__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C119S19486C12__A4__8S19486C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C119S19486C12__A1__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C119S19486C12__A1__8S19486C8[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C119S19486C12__A1__8S19486C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C12__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C12__8S19486C8[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C12__8S19486C8[3]),  3,5},
  {&(_ZTV8S19486C8[35]),  35,61},
  {&(_ZTV8S19486C8[53]),  53,61},
  {&(_ZTV8S19486C8[59]),  59,61},
  {&(_ZTV8S19486C8[39]),  39,61},
  {&(_ZTV8S19486C8[44]),  44,61},
  {&(_ZTV8S19486C8[48]),  48,61},
  {&(_ZTV8S19486C8[14]),  14,61},
  {&(_ZTV8S19486C8[23]),  23,61},
  {&(_tg__ZTV9S19486C11__8S19486C8[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C11__8S19486C8[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C11__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A1__8S19486C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C11__8S19486C8[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A1__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C11__A2__8S19486C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C11__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C11__8S19486C8[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C11__8S19486C8[3]),  3,5},
  {&(_tg__ZTV8S19486C5__8S19486C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19486C8[];
extern  VTBL_ENTRY _ZTV8S19486C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C8[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N9S19486C12D0Ev,_ZThn324_N9S19486C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N9S19486C12D1Ev,_ZThn324_N9S19486C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N9S19486C12D0Ev,_ZThn320_N9S19486C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N9S19486C12D1Ev,_ZThn320_N9S19486C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D0Ev,_ZThn64_N9S19486C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn568_N9S19486C11D0Ev,_ZThn324_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19486C11D1Ev,_ZThn64_N9S19486C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn568_N9S19486C11D1Ev,_ZThn324_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D0Ev,_ZThn60_N9S19486C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N9S19486C11D0Ev,_ZThn320_N9S19486C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19486C11D1Ev,_ZThn60_N9S19486C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N9S19486C11D1Ev,_ZThn320_N9S19486C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D0Ev,_ZThn64_N8S19486C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S19486C2D0Ev,_ZThn324_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19486C2D1Ev,_ZThn64_N8S19486C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S19486C2D1Ev,_ZThn324_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D0Ev,_ZThn60_N8S19486C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S19486C2D0Ev,_ZThn320_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19486C2D1Ev,_ZThn60_N8S19486C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S19486C2D1Ev,_ZThn320_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S19486C10D0Ev,_ZThn328_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S19486C10D1Ev,_ZThn328_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N9S19486C10D0Ev,_ZThn324_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N9S19486C10D1Ev,_ZThn324_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19486C10D0Ev,_ZThn264_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19486C10D1Ev,_ZThn264_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C8D0Ev,_ZTv0_n16_N8S19486C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19486C8D0Ev,_ZThn328_N8S19486C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C8D1Ev,_ZTv0_n16_N8S19486C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19486C8D1Ev,_ZThn328_N8S19486C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C8D0Ev,_ZTv0_n12_N8S19486C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S19486C8D0Ev,_ZThn324_N8S19486C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C8D1Ev,_ZTv0_n12_N8S19486C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S19486C8D1Ev,_ZThn324_N8S19486C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C8D0Ev,_ZTv0_n24_N8S19486C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19486C8D0Ev,_ZThn264_N8S19486C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C8D1Ev,_ZTv0_n24_N8S19486C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19486C8D1Ev,_ZThn264_N8S19486C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C8 = {  "S19486C8", // class name
  bases_S19486C8, 30,
  &(vtc_S19486C8[0]), // expected_vtbl_contents
  &(vtt_S19486C8[0]), // expected_vtt_contents
  ABISELECT(592,336), // object size
  NSPAIRA(_ZTI8S19486C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19486C8),61, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19486C8),43, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19486C1  : virtual S19486C2 , S19486C7 , virtual S19486C8 {
  virtual  ~S19486C1(); // _ZN8S19486C1D2Ev
  S19486C1(); // tgen
};
//SIG(1 S19486C1) C1{ VBC2{ BC3{ VBC4{ m} BC5{ BC6{ vd m} VBC4 vd Fi} BC6 Fl} VBC6 BC4 VBC5 vd} BC7{ VBC4 VBC5 VBC2 BC6 FL} VBC8{ VBC9{ m FD[10]} BC10{ BC6 VBC11{ VBC4 VBC6 VBC5 BC2 BC3 FC2}} BC12{ BC11 vd} FC13{ VBC14{ BC4 Fi} VBC4 VBC5 BC6 BC11 v1}} vd}


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

static void Test_S19486C1()
{
  extern Class_Descriptor cd_S19486C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(42,92)];
    init_test(&cd_S19486C1, buf);
    S19486C1 *dp, &lv = *(dp=new (buf) S19486C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(656,364), "sizeof(S19486C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19486C1)");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*), 0, "S19486C1");
    /*is_ambiguous_... S19486C7::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C7*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*), 0, "S19486C1");
    /*is_ambiguous_... S19486C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C11*)(S19486C12*)(S19486C8*), 0, "S19486C1");
    check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), 0, "S19486C1");
    check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), 0, "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C3*)(S19486C11*)(S19486C12*)(S19486C8*), 0, "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C5*)(S19486C3*)(S19486C11*)(S19486C12*)(S19486C8*), 0, "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*), ABISELECT(16,12), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*), ABISELECT(16,12), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*), ABISELECT(32,20), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C2*), ABISELECT(16,12), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*), ABISELECT(48,28), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*), ABISELECT(48,28), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*), ABISELECT(48,28), "S19486C1");
    /*is_ambiguous_... S19486C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(48,28), "S19486C1");
    /*is_ambiguous_... S19486C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(48,28), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*), ABISELECT(16,12), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C7::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C7*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C2::S19486C5 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(56,32), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C2 */ AMB_check_base_class_offset(lv, (S19486C2*), ABISELECT(16,12), "S19486C1");
    check_base_class_offset(lv, (S19486C2*)(S19486C7*), ABISELECT(16,12), "S19486C1");
    /*is_ambiguous_... S19486C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C7*), 0, "S19486C1");
    check_base_class_offset(lv, (S19486C7*), 0, "S19486C1");
    check_base_class_offset(lv, (S19486C9_nt*)(S19486C8*), ABISELECT(368,184), "S19486C1");
    /*is_ambiguous_... S19486C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C10*)(S19486C8*), ABISELECT(72,40), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(528,304), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(528,304), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(544,312), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*), ABISELECT(528,304), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*), ABISELECT(528,304), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C2*)(S19486C11*), ABISELECT(528,304), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(560,320), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*), ABISELECT(560,320), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*), ABISELECT(576,328), "S19486C1");
    /*is_ambiguous_... S19486C1::S19486C11 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*), ABISELECT(560,320), "S19486C1");
    check_base_class_offset(lv, (S19486C11*)(S19486C10*)(S19486C8*), ABISELECT(528,304), "S19486C1");
    check_base_class_offset(lv, (S19486C10*)(S19486C8*), ABISELECT(72,40), "S19486C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    /*is_ambiguous_... S19486C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(96,52), "S19486C1");
    check_base_class_offset(lv, (S19486C3*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    /*is_ambiguous_... S19486C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    check_base_class_offset(lv, (S19486C2*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C5*)(S19486C3*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(112,60), "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C5*)(S19486C3*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(112,60), "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19486C3*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(128,68), "S19486C1");
    /*is_ambiguous_... S19486C11::S19486C3 */ AMB_check_base_class_offset(lv, (S19486C3*)(S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(112,60), "S19486C1");
    check_base_class_offset(lv, (S19486C11*)(S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    check_base_class_offset(lv, (S19486C12*)(S19486C8*), ABISELECT(80,44), "S19486C1");
    check_base_class_offset(lv, (S19486C8*), ABISELECT(72,40), "S19486C1");
    test_class_info(&lv, &cd_S19486C1);
    dp->~S19486C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19486C1(Test_S19486C1, "S19486C1", ABISELECT(656,364));

#else // __cplusplus

extern void _ZN8S19486C1C1Ev();
extern void _ZN8S19486C1D2Ev();
Name_Map name_map_S19486C1[] = {
  NSPAIR(_ZN8S19486C1C1Ev),
  NSPAIR(_ZN8S19486C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C7;
extern VTBL_ENTRY _ZTI8S19486C7[];
extern  VTBL_ENTRY _ZTV8S19486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C7[];
extern Class_Descriptor cd_S19486C9_nt;
extern VTBL_ENTRY _ZTI11S19486C9_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
extern Class_Descriptor cd_S19486C10;
extern VTBL_ENTRY _ZTI9S19486C10[];
extern  VTBL_ENTRY _ZTV9S19486C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19486C2;
extern VTBL_ENTRY _ZTI8S19486C2[];
extern  VTBL_ENTRY _ZTV8S19486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C5;
extern VTBL_ENTRY _ZTI8S19486C5[];
extern  VTBL_ENTRY _ZTV8S19486C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19486C3;
extern VTBL_ENTRY _ZTI8S19486C3[];
extern  VTBL_ENTRY _ZTV8S19486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C3[];
extern Class_Descriptor cd_S19486C11;
extern VTBL_ENTRY _ZTI9S19486C11[];
extern  VTBL_ENTRY _ZTV9S19486C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C11[];
extern Class_Descriptor cd_S19486C12;
extern VTBL_ENTRY _ZTI9S19486C12[];
extern  VTBL_ENTRY _ZTV9S19486C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19486C12[];
extern Class_Descriptor cd_S19486C8;
extern VTBL_ENTRY _ZTI8S19486C8[];
extern  VTBL_ENTRY _ZTV8S19486C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C8[];
static Base_Class bases_S19486C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21216C26_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
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,20), //bcp->offset
    19, //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
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_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
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(56,32), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19486C2,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S19486C7,    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
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19486C9_nt,    ABISELECT(368,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(544,312), //bcp->offset
    72, //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
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19486C2,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(560,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(560,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(576,328), //bcp->offset
    81, //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
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(560,320), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19486C11,    ABISELECT(528,304), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19486C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(96,52), //bcp->offset
    51, //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
    23, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19486C2,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19486C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(128,68), //bcp->offset
    60, //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
    35, //immediately_derived
  0, 0},
  {&cd_S19486C3,    ABISELECT(112,60), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19486C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19486C12,    ABISELECT(80,44), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19486C8,    ABISELECT(72,40), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19486C1[];
extern void _ZN8S19486C1D1Ev();
extern void _ZN8S19486C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S19486C1D1Ev,_ZTv0_n24_N8S19486C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19486C1D1Ev,_ZThn12_N8S19486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C1D0Ev,_ZTv0_n24_N8S19486C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19486C1D0Ev,_ZThn12_N8S19486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19486C1D1Ev,_ZTvn8_n24_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19486C1D0Ev,_ZTvn8_n24_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C1D1Ev,_ZTv0_n12_N8S19486C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19486C1D1Ev,_ZThn28_N8S19486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C1D0Ev,_ZTv0_n12_N8S19486C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19486C1D0Ev,_ZThn28_N8S19486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C1D1Ev,_ZTv0_n16_N8S19486C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19486C1D1Ev,_ZThn32_N8S19486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C1D0Ev,_ZTv0_n16_N8S19486C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19486C1D0Ev,_ZThn32_N8S19486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19486C1D1Ev,_ZTv0_n32_N8S19486C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19486C1D1Ev,_ZThn40_N8S19486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19486C1D0Ev,_ZTv0_n32_N8S19486C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19486C1D0Ev,_ZThn40_N8S19486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n64_N8S19486C1D1Ev,_ZTvn4_n32_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn8_n64_N8S19486C1D0Ev,_ZTvn4_n32_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S19486C1D1Ev,_ZTvn12_n32_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S19486C1D0Ev,_ZTvn12_n32_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTvn40_n64_N8S19486C1D1Ev,_ZTvn20_n32_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn40_n64_N8S19486C1D0Ev,_ZTvn20_n32_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19486C1D1Ev,_ZTvn28_n32_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19486C1D0Ev,_ZTvn28_n32_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19486C1D1Ev,_ZTv0_n24_N8S19486C1D1Ev)();
extern void ABISELECT(_ZThn528_N8S19486C1D1Ev,_ZThn304_N8S19486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C1D0Ev,_ZTv0_n24_N8S19486C1D0Ev)();
extern void ABISELECT(_ZThn528_N8S19486C1D0Ev,_ZThn304_N8S19486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19486C1D1Ev,_ZTvn8_n24_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19486C1D0Ev,_ZTvn8_n24_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19486C1D1Ev,_ZTvn16_n24_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19486C1D0Ev,_ZTvn16_n24_N8S19486C1D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19486C1D1Ev,_ZTvn24_n24_N8S19486C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19486C1D0Ev,_ZTvn24_n24_N8S19486C1D0Ev)();
static  VTBL_ENTRY vtc_S19486C1[] = {
  ABISELECT(528,304),
  ABISELECT(368,184),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(56,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&_ZN8S19486C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C1D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C1D1Ev,_ZTv0_n24_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C1D0Ev,_ZTv0_n24_N8S19486C1D0Ev),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C1D1Ev,_ZTvn8_n24_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C1D0Ev,_ZTvn8_n24_N8S19486C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C1D1Ev,_ZTv0_n12_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C1D0Ev,_ZTv0_n12_N8S19486C1D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C1D1Ev,_ZTv0_n16_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C1D0Ev,_ZTv0_n16_N8S19486C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(296,144),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-72,-40),
  ABISELECT(456,264),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19486C1D1Ev,_ZTv0_n32_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19486C1D0Ev,_ZTv0_n32_N8S19486C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n64_N8S19486C1D1Ev,_ZTvn4_n32_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n64_N8S19486C1D0Ev,_ZTvn4_n32_N8S19486C1D0Ev),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S19486C1D1Ev,_ZTvn12_n32_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S19486C1D0Ev,_ZTvn12_n32_N8S19486C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n64_N8S19486C1D1Ev,_ZTvn20_n32_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n64_N8S19486C1D0Ev,_ZTvn20_n32_N8S19486C1D0Ev),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19486C1D1Ev,_ZTvn28_n32_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19486C1D0Ev,_ZTvn28_n32_N8S19486C1D0Ev),
  ABISELECT(-528,-304),
  ABISELECT(-472,-272),
  ABISELECT(-480,-276),
  ABISELECT(-528,-304),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C1D1Ev,_ZTv0_n24_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C1D0Ev,_ZTv0_n24_N8S19486C1D0Ev),
  ABISELECT(-544,-312),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C1D1Ev,_ZTvn8_n24_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C1D0Ev,_ZTvn8_n24_N8S19486C1D0Ev),
  ABISELECT(-560,-320),
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19486C1D1Ev,_ZTvn16_n24_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19486C1D0Ev,_ZTvn16_n24_N8S19486C1D0Ev),
  ABISELECT(-576,-328),
  (VTBL_ENTRY)&(_ZTI8S19486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19486C1D1Ev,_ZTvn24_n24_N8S19486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19486C1D0Ev,_ZTvn24_n24_N8S19486C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19486C1[];
extern void _ZN8S19486C7D1Ev();
extern void _ZN8S19486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C7__8S19486C1[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(56,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&_ZN8S19486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19486C7D1Ev,_ZTv0_n16_N8S19486C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19486C7D1Ev,_ZThn32_N8S19486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C7D0Ev,_ZTv0_n16_N8S19486C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19486C7D0Ev,_ZThn32_N8S19486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__8S19486C7__8S19486C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C7D1Ev,_ZTv0_n16_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C7D0Ev,_ZTv0_n16_N8S19486C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19486C7D1Ev,_ZTv0_n24_N8S19486C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19486C7D1Ev,_ZThn12_N8S19486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C7D0Ev,_ZTv0_n24_N8S19486C7D0Ev)();
extern void ABISELECT(_ZThn16_N8S19486C7D0Ev,_ZThn12_N8S19486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C2__8S19486C7__8S19486C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C7D1Ev,_ZTv0_n24_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C7D0Ev,_ZTv0_n24_N8S19486C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S19486C7D1Ev,_ZTvn8_n24_N8S19486C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19486C7D0Ev,_ZTvn8_n24_N8S19486C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C38S19486C2__A2__8S19486C7__8S19486C1[] = {
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C7D1Ev,_ZTvn8_n24_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C7D0Ev,_ZTvn8_n24_N8S19486C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19486C7D1Ev,_ZTv0_n12_N8S19486C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19486C7D1Ev,_ZThn28_N8S19486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C7D0Ev,_ZTv0_n12_N8S19486C7D0Ev)();
extern void ABISELECT(_ZThn48_N8S19486C7D0Ev,_ZThn28_N8S19486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A3__8S19486C7__8S19486C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C7D1Ev,_ZTv0_n12_N8S19486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C7D0Ev,_ZTv0_n12_N8S19486C7D0Ev),
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C2__8S19486C1[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C2__8S19486C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C2__8S19486C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19486C2D1Ev,_ZThn16_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19486C2D0Ev,_ZThn16_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C2__8S19486C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19486C2D1Ev,_ZThn20_N8S19486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19486C2D0Ev,_ZThn20_N8S19486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C2__8S19486C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C1[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void _ZN8S19486C8D1Ev();
extern void _ZN8S19486C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C8__8S19486C1[] = {
  ABISELECT(296,144),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-72,-40),
  ABISELECT(456,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&_ZN8S19486C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C8D0Ev,
};
extern void _ZN9S19486C10D1Ev();
extern void _ZN9S19486C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-72,-40),
  ABISELECT(456,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&_ZN9S19486C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZThn456_N9S19486C10D1Ev,_ZThn264_N9S19486C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev)();
extern void ABISELECT(_ZThn456_N9S19486C10D0Ev,_ZThn264_N9S19486C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19486C11__9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(-456,-264),
  ABISELECT(-472,-272),
  ABISELECT(-480,-276),
  ABISELECT(-528,-304),
  ABISELECT(-456,-264),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C10D1Ev,_ZTv0_n12_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C10D0Ev,_ZTv0_n12_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C10D1Ev,_ZTv0_n16_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C10D0Ev,_ZTv0_n16_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S19486C10D1Ev,_ZTvn8_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S19486C10D0Ev,_ZTvn8_n24_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C38S19486C29S19486C11__A4__9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19486C10D1Ev,_ZTvn8_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19486C10D0Ev,_ZTvn8_n24_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTvn32_n48_N9S19486C10D1Ev,_ZTvn16_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N9S19486C10D0Ev,_ZTvn16_n24_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(-560,-320),
  ABISELECT(-488,-280),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19486C10D1Ev,_ZTvn16_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19486C10D0Ev,_ZTvn16_n24_N9S19486C10D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19486C10D1Ev,_ZTvn24_n24_N9S19486C10D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19486C10D0Ev,_ZTvn24_n24_N9S19486C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C39S19486C11__A6__9S19486C108S19486C8__8S19486C1[] = {
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI9S19486C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19486C10D1Ev,_ZTvn24_n24_N9S19486C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19486C10D0Ev,_ZTvn24_n24_N9S19486C10D0Ev),
};
extern void _ZN9S19486C12D1Ev();
extern void _ZN9S19486C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C128S19486C8__8S19486C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&_ZN9S19486C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C12D0Ev,
};
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C119S19486C128S19486C8__A1__8S19486C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C119S19486C128S19486C8__A2__8S19486C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C119S19486C128S19486C8__A3__8S19486C1[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C119S19486C128S19486C8__A4__8S19486C1[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C119S19486C128S19486C8__A2__8S19486C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C119S19486C128S19486C8__A2__8S19486C1[] = {
  ABISELECT(24,12),
  ABISELECT(-56,-32),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C119S19486C128S19486C8__A4__8S19486C1[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C119S19486C128S19486C8__A5__8S19486C1[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C119S19486C128S19486C8__A1__8S19486C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C119S19486C128S19486C8__A1__8S19486C1[] = {
  ABISELECT(24,12),
  ABISELECT(-56,-32),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C119S19486C128S19486C8__A1__8S19486C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C128S19486C8__8S19486C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C12D1Ev,_ZTv0_n12_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C12D0Ev,_ZTv0_n12_N9S19486C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C128S19486C8__8S19486C1[] = {
  ABISELECT(24,12),
  ABISELECT(-56,-32),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C12D1Ev,_ZTv0_n16_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C12D0Ev,_ZTv0_n16_N9S19486C12D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C12D1Ev,_ZThn16_N9S19486C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C12D0Ev,_ZThn16_N9S19486C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__9S19486C128S19486C8__8S19486C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C12D1Ev,_ZThn16_N9S19486C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C12D0Ev,_ZThn16_N9S19486C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19486C8D1Ev,_ZTv0_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn456_N8S19486C8D1Ev,_ZThn264_N8S19486C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19486C8D0Ev,_ZTv0_n24_N8S19486C8D0Ev)();
extern void ABISELECT(_ZThn456_N8S19486C8D0Ev,_ZThn264_N8S19486C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19486C11__8S19486C8__8S19486C1[] = {
  ABISELECT(-456,-264),
  ABISELECT(-472,-272),
  ABISELECT(-480,-276),
  ABISELECT(-528,-304),
  ABISELECT(-456,-264),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C8D1Ev,_ZTv0_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19486C8D0Ev,_ZTv0_n24_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19486C8D1Ev,_ZTv0_n12_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C8D0Ev,_ZTv0_n12_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S19486C8__8S19486C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C8D1Ev,_ZTv0_n12_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C8D0Ev,_ZTv0_n12_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C8D1Ev,_ZTv0_n16_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19486C8D0Ev,_ZTv0_n16_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__8S19486C8__8S19486C1[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C8D1Ev,_ZTv0_n16_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C8D0Ev,_ZTv0_n16_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S19486C8D1Ev,_ZTvn8_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19486C8D0Ev,_ZTvn8_n24_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C38S19486C29S19486C11__A4__8S19486C8__8S19486C1[] = {
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C8D1Ev,_ZTvn8_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19486C8D0Ev,_ZTvn8_n24_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n48_N8S19486C8D1Ev,_ZTvn16_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19486C8D0Ev,_ZTvn16_n24_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A1__8S19486C8__8S19486C1[] = {
  ABISELECT(-560,-320),
  ABISELECT(-488,-280),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19486C8D1Ev,_ZTvn16_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19486C8D0Ev,_ZTvn16_n24_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19486C8D1Ev,_ZTvn24_n24_N8S19486C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19486C8D0Ev,_ZTvn24_n24_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19486C39S19486C11__A6__8S19486C8__8S19486C1[] = {
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19486C8D1Ev,_ZTvn24_n24_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19486C8D0Ev,_ZTvn24_n24_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZThn8_N8S19486C8D1Ev,_ZThn4_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19486C8D0Ev,_ZThn4_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19486C12__8S19486C8__8S19486C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19486C8D1Ev,_ZThn4_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19486C8D0Ev,_ZThn4_N8S19486C8D0Ev),
};
extern void ABISELECT(_ZThn40_N8S19486C8D1Ev,_ZThn20_N8S19486C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19486C8D0Ev,_ZThn20_N8S19486C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C119S19486C12__A3__8S19486C8__8S19486C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19486C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19486C8D1Ev,_ZThn20_N8S19486C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19486C8D0Ev,_ZThn20_N8S19486C8D0Ev),
};
extern void _ZN9S19486C11D1Ev();
extern void _ZN9S19486C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19486C11__8S19486C1[] = {
  ABISELECT(-472,-272),
  ABISELECT(-480,-276),
  ABISELECT(-528,-304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&_ZN9S19486C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19486C11D0Ev,
};
extern void _ZN8S19486C2D1Ev();
extern void _ZN8S19486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C29S19486C11__A1__8S19486C1[] = {
  ABISELECT(-472,-272),
  ABISELECT(-480,-276),
  ABISELECT(-528,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&_ZN8S19486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C2D0Ev,
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C38S19486C29S19486C11__A1__8S19486C1[] = {
  ABISELECT(-528,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A2__8S19486C1[] = {
  ABISELECT(-528,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__A1__8S19486C1[] = {
  ABISELECT(480,276),
  ABISELECT(480,276),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__A1__8S19486C29S19486C11__A1__8S19486C1[] = {
  ABISELECT(472,272),
  ABISELECT(-56,-32),
  ABISELECT(472,272),
  (VTBL_ENTRY)&(_ZTI8S19486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev),
};
extern void _ZN8S19486C3D1Ev();
extern void _ZN8S19486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C39S19486C11__A2__8S19486C1[] = {
  ABISELECT(-560,-320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C3[0]),
  (VTBL_ENTRY)&_ZN8S19486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C3D0Ev,
};
extern void _ZN8S19486C5D1Ev();
extern void _ZN8S19486C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19486C58S19486C39S19486C11__A3__8S19486C1[] = {
  ABISELECT(-560,-320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19486C5[0]),
  (VTBL_ENTRY)&_ZN8S19486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19486C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19486C11__8S19486C1[] = {
  ABISELECT(480,276),
  ABISELECT(480,276),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D1Ev,_ZTv0_n12_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19486C11D0Ev,_ZTv0_n12_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C5__9S19486C11__8S19486C1[] = {
  ABISELECT(472,272),
  ABISELECT(-56,-32),
  ABISELECT(472,272),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D1Ev,_ZTv0_n16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19486C11D0Ev,_ZTv0_n16_N9S19486C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19486C3__A1__9S19486C11__8S19486C1[] = {
  ABISELECT(-560,-320),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19486C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D1Ev,_ZThn16_N9S19486C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19486C11D0Ev,_ZThn16_N9S19486C11D0Ev),
};
static  VTT_ENTRY vtt_S19486C1[] = {
  {&(_ZTV8S19486C1[9]),  9,85},
  {&(_tg__ZTV8S19486C7__8S19486C1[6]),  6,8},
  {&(_tg__ZTV8S19486C5__8S19486C7__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C2__8S19486C7__8S19486C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S19486C38S19486C2__A2__8S19486C7__8S19486C1[2]),  2,4},
  {&(_tg__ZTV12S21216C26_nt__A3__8S19486C7__8S19486C1[3]),  3,5},
  {&(_ZTV8S19486C1[17]),  17,85},
  {&(_ZTV8S19486C1[21]),  21,85},
  {&(_ZTV8S19486C1[26]),  26,85},
  {&(_ZTV8S19486C1[32]),  32,85},
  {&(_ZTV8S19486C1[42]),  42,85},
  {&(_ZTV8S19486C1[70]),  70,85},
  {&(_ZTV8S19486C1[74]),  74,85},
  {&(_ZTV8S19486C1[79]),  79,85},
  {&(_ZTV8S19486C1[83]),  83,85},
  {&(_ZTV8S19486C1[49]),  49,85},
  {&(_ZTV8S19486C1[53]),  53,85},
  {&(_ZTV8S19486C1[58]),  58,85},
  {&(_ZTV8S19486C1[62]),  62,85},
  {&(_tg__ZTV8S19486C2__8S19486C1[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C2__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C2__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C2__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C2__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C5__A1__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C8__8S19486C1[7]),  7,9},
  {&(_tg__ZTV9S19486C108S19486C8__8S19486C1[6]),  6,8},
  {&(_tg__ZTV9S19486C11__9S19486C108S19486C8__8S19486C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt__A1__9S19486C108S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C108S19486C8__8S19486C1[4]),  4,6},
  {&(_tg__ZTV12S21216C26_nt8S19486C38S19486C29S19486C11__A4__9S19486C108S19486C8__8S19486C1[2]),  2,4},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C108S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt8S19486C39S19486C11__A6__9S19486C108S19486C8__8S19486C1[2]),  2,4},
  {&(_tg__ZTV9S19486C128S19486C8__8S19486C1[5]),  5,7},
  {&(_tg__ZTV9S19486C119S19486C128S19486C8__A1__8S19486C1[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C119S19486C128S19486C8__A2__8S19486C1[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C119S19486C128S19486C8__A3__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C119S19486C128S19486C8__A4__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C119S19486C128S19486C8__A2__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C119S19486C128S19486C8__A2__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C119S19486C128S19486C8__A4__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C119S19486C128S19486C8__A5__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C119S19486C128S19486C8__A1__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C119S19486C128S19486C8__A1__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C119S19486C128S19486C8__A1__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C128S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C128S19486C8__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A1__9S19486C128S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV9S19486C11__8S19486C8__8S19486C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt__A1__8S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__8S19486C8__8S19486C1[4]),  4,6},
  {&(_tg__ZTV12S21216C26_nt8S19486C38S19486C29S19486C11__A4__8S19486C8__8S19486C1[2]),  2,4},
  {&(_tg__ZTV8S19486C39S19486C11__A1__8S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt8S19486C39S19486C11__A6__8S19486C8__8S19486C1[2]),  2,4},
  {&(_tg__ZTV9S19486C12__8S19486C8__8S19486C1[5]),  5,7},
  {&(_tg__ZTV8S19486C39S19486C119S19486C12__A3__8S19486C8__8S19486C1[3]),  3,5},
  {&(_tg__ZTV9S19486C11__8S19486C1[5]),  5,7},
  {&(_tg__ZTV8S19486C29S19486C11__A1__8S19486C1[5]),  5,7},
  {&(_tg__ZTV8S19486C38S19486C29S19486C11__A1__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C38S19486C29S19486C11__A2__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19486C29S19486C11__A1__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__A1__8S19486C29S19486C11__A1__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C39S19486C11__A2__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C58S19486C39S19486C11__A3__8S19486C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19486C11__8S19486C1[3]),  3,5},
  {&(_tg__ZTV8S19486C5__9S19486C11__8S19486C1[4]),  4,6},
  {&(_tg__ZTV8S19486C3__A1__9S19486C11__8S19486C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19486C1[];
extern  VTBL_ENTRY _ZTV8S19486C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19486C1[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C8D0Ev,_ZTv0_n24_N8S19486C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S19486C8D0Ev,_ZThn264_N8S19486C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C8D1Ev,_ZTv0_n24_N8S19486C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S19486C8D1Ev,_ZThn264_N8S19486C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19486C10D0Ev,_ZTv0_n24_N9S19486C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19486C10D0Ev,_ZThn264_N9S19486C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19486C10D1Ev,_ZTv0_n24_N9S19486C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19486C10D1Ev,_ZThn264_N9S19486C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D0Ev,_ZTv0_n16_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19486C2D0Ev,_ZThn20_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C2D1Ev,_ZTv0_n16_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19486C2D1Ev,_ZThn20_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D0Ev,_ZTv0_n12_N8S19486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C2D0Ev,_ZThn16_N8S19486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C2D1Ev,_ZTv0_n12_N8S19486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19486C2D1Ev,_ZThn16_N8S19486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C7D0Ev,_ZTv0_n12_N8S19486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19486C7D0Ev,_ZThn28_N8S19486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C7D1Ev,_ZTv0_n12_N8S19486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19486C7D1Ev,_ZThn28_N8S19486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C7D0Ev,_ZTv0_n24_N8S19486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19486C7D0Ev,_ZThn12_N8S19486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C7D1Ev,_ZTv0_n24_N8S19486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19486C7D1Ev,_ZThn12_N8S19486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C7D0Ev,_ZTv0_n16_N8S19486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19486C7D0Ev,_ZThn32_N8S19486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C7D1Ev,_ZTv0_n16_N8S19486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19486C7D1Ev,_ZThn32_N8S19486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19486C1D0Ev,_ZTv0_n32_N8S19486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19486C1D0Ev,_ZThn40_N8S19486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19486C1D1Ev,_ZTv0_n32_N8S19486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19486C1D1Ev,_ZThn40_N8S19486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C1D0Ev,_ZTv0_n16_N8S19486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19486C1D0Ev,_ZThn32_N8S19486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19486C1D1Ev,_ZTv0_n16_N8S19486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19486C1D1Ev,_ZThn32_N8S19486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C1D0Ev,_ZTv0_n12_N8S19486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19486C1D0Ev,_ZThn28_N8S19486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19486C1D1Ev,_ZTv0_n12_N8S19486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19486C1D1Ev,_ZThn28_N8S19486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C1D0Ev,_ZTv0_n24_N8S19486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19486C1D0Ev,_ZThn304_N8S19486C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19486C1D0Ev,_ZThn12_N8S19486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19486C1D1Ev,_ZTv0_n24_N8S19486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19486C1D1Ev,_ZThn304_N8S19486C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19486C1D1Ev,_ZThn12_N8S19486C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19486C1 = {  "S19486C1", // class name
  bases_S19486C1, 39,
  &(vtc_S19486C1[0]), // expected_vtbl_contents
  &(vtt_S19486C1[0]), // expected_vtt_contents
  ABISELECT(656,364), // object size
  NSPAIRA(_ZTI8S19486C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19486C1),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19486C1),67, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S20645C8C1Ev();
extern void _ZN8S20645C8D1Ev();
Name_Map name_map_S20645C8[] = {
  NSPAIR(_ZN8S20645C8C1Ev),
  NSPAIR(_ZN8S20645C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20645C8[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C8[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
Class_Descriptor cd_S20645C8 = {  "S20645C8", // class name
  0,0,//no base classes
  &(vtc_S20645C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20645C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20645C8),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  S20645C6  : virtual S19894C34 , virtual S20645C8 {
  ::S20645C8 s20645c6f0;
  ~S20645C6(); // tgen
  S20645C6(); // tgen
};
//SIG(-1 S20645C6) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S20645C6()
{
  extern Class_Descriptor cd_S20645C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20645C6, buf);
    S20645C6 *dp, &lv = *(dp=new (buf) S20645C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20645C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C6)");
    check_base_class_offset(lv, (S19894C34*), 0, "S20645C6");
    check_base_class_offset(lv, (S20645C8*), 0, "S20645C6");
    check_field_offset(lv, s20645c6f0, ABISELECT(8,4), "S20645C6.s20645c6f0");
    test_class_info(&lv, &cd_S20645C6);
    dp->~S20645C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C6(Test_S20645C6, "S20645C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20645C6C1Ev();
extern void _ZN8S20645C6D1Ev();
Name_Map name_map_S20645C6[] = {
  NSPAIR(_ZN8S20645C6C1Ev),
  NSPAIR(_ZN8S20645C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
static Base_Class bases_S20645C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20645C8,    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 _ZTI8S20645C6[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S20645C6[];
static  VTT_ENTRY vtt_S20645C6[] = {
  {&(_ZTV8S20645C6[5]),  5,6},
  {&(_ZTV8S20645C6[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
Class_Descriptor cd_S20645C6 = {  "S20645C6", // class name
  bases_S20645C6, 2,
  &(vtc_S20645C6[0]), // expected_vtbl_contents
  &(vtt_S20645C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20645C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20645C6),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20645C6),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  S20645C5  : S20645C6 , S19894C34 , S20645C8 {
  virtual  ~S20645C5(); // _ZN8S20645C5D2Ev
  S20645C5(); // tgen
};
//SIG(-1 S20645C5) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S20645C5()
{
  extern Class_Descriptor cd_S20645C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20645C5, buf);
    S20645C5 *dp, &lv = *(dp=new (buf) S20645C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20645C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C5)");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*), ABISELECT(24,12), "S20645C5");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*), 0, "S20645C5");
    check_base_class_offset(lv, (S20645C6*), 0, "S20645C5");
    /*is_ambiguous_... S20645C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S20645C5");
    /*is_ambiguous_... S20645C5::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*), ABISELECT(16,8), "S20645C5");
    test_class_info(&lv, &cd_S20645C5);
    dp->~S20645C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C5(Test_S20645C5, "S20645C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20645C5C1Ev();
extern void _ZN8S20645C5D2Ev();
Name_Map name_map_S20645C5[] = {
  NSPAIR(_ZN8S20645C5C1Ev),
  NSPAIR(_ZN8S20645C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
static Base_Class bases_S20645C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20645C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S20645C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20645C8,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20645C5[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C5[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S20645C5[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__8S20645C5[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTT_ENTRY vtt_S20645C5[] = {
  {&(_ZTV8S20645C5[5]),  5,11},
  {&(_tg__ZTV8S20645C6__8S20645C5[5]),  5,6},
  {&(_tg__ZTV8S20645C6__8S20645C5[5]),  5,6},
  {&(_ZTV8S20645C5[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
Class_Descriptor cd_S20645C5 = {  "S20645C5", // class name
  bases_S20645C5, 5,
  &(vtc_S20645C5[0]), // expected_vtbl_contents
  &(vtt_S20645C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20645C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20645C5),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20645C5),4, //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  S20645C11  : S20645C8 , S19894C6_nt , virtual S20645C6 {
  virtual void  v2(); // _ZN9S20645C112v2Ev
  ~S20645C11(); // tgen
  S20645C11(); // tgen
};
//SIG(-1 S20645C11) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S20645C11()
{
  extern Class_Descriptor cd_S20645C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20645C11, buf);
    S20645C11 *dp, &lv = *(dp=new (buf) S20645C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20645C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C11)");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*), 0, "S20645C11");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S20645C11");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*), 0, "S20645C11");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(16,8), "S20645C11");
    check_base_class_offset(lv, (S20645C6*), ABISELECT(16,8), "S20645C11");
    test_class_info(&lv, &cd_S20645C11);
    dp->~S20645C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C11(Test_S20645C11, "S20645C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S20645C11C1Ev();
extern void _ZN9S20645C11D1Ev();
Name_Map name_map_S20645C11[] = {
  NSPAIR(_ZN9S20645C11C1Ev),
  NSPAIR(_ZN9S20645C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
static Base_Class bases_S20645C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20645C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI9S20645C11[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C11[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20645C11[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTT_ENTRY vtt_S20645C11[] = {
  {&(_ZTV9S20645C11[5]),  5,13},
  {&(_ZTV9S20645C11[12]),  12,13},
  {&(_ZTV9S20645C11[12]),  12,13},
  {&(_tg__ZTV8S20645C6__9S20645C11[5]),  5,6},
  {&(_tg__ZTV8S20645C6__9S20645C11[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
Class_Descriptor cd_S20645C11 = {  "S20645C11", // class name
  bases_S20645C11, 5,
  &(vtc_S20645C11[0]), // expected_vtbl_contents
  &(vtt_S20645C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S20645C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20645C11),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20645C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20645C10  : virtual S20645C6 , virtual S20645C11 {
  ~S20645C10(); // tgen
  S20645C10(); // tgen
};
//SIG(-1 S20645C10) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S20645C10()
{
  extern Class_Descriptor cd_S20645C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20645C10, buf);
    S20645C10 *dp, &lv = *(dp=new (buf) S20645C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20645C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C10)");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*), 0, "S20645C10");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*), 0, "S20645C10");
    check_base_class_offset(lv, (S20645C6*), ABISELECT(8,4), "S20645C10");
    check_base_class_offset(lv, (S20645C6*)(S20645C11*), ABISELECT(8,4), "S20645C10");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C11*), ABISELECT(24,12), "S20645C10");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C11*), ABISELECT(32,16), "S20645C10");
    check_base_class_offset(lv, (S20645C11*), ABISELECT(24,12), "S20645C10");
    test_class_info(&lv, &cd_S20645C10);
    dp->~S20645C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C10(Test_S20645C10, "S20645C10", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S20645C10C1Ev();
extern void _ZN9S20645C10D1Ev();
Name_Map name_map_S20645C10[] = {
  NSPAIR(_ZN9S20645C10C1Ev),
  NSPAIR(_ZN9S20645C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C11;
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
static Base_Class bases_S20645C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20645C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20645C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20645C11,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20645C10[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY vtc_S20645C10[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern VTBL_ENTRY _ZTV9S20645C10[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__9S20645C10[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11__9S20645C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A1__9S20645C11__9S20645C10[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTT_ENTRY vtt_S20645C10[] = {
  {&(_ZTV9S20645C10[7]),  7,23},
  {&(_ZTV9S20645C10[13]),  13,23},
  {&(_ZTV9S20645C10[7]),  7,23},
  {&(_ZTV9S20645C10[21]),  21,23},
  {&(_tg__ZTV8S20645C6__9S20645C10[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__9S20645C10[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C10[5]),  5,7},
  {&(_tg__ZTV8S20645C6__9S20645C11__9S20645C10[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A1__9S20645C11__9S20645C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20645C10[];
extern  VTBL_ENTRY _ZTV9S20645C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C10[];
Class_Descriptor cd_S20645C10 = {  "S20645C10", // class name
  bases_S20645C10, 6,
  &(vtc_S20645C10[0]), // expected_vtbl_contents
  &(vtt_S20645C10[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S20645C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20645C10),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20645C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20645C14  : virtual S19894C34 , virtual S19894C6_nt {
  ~S20645C14(); // tgen
  S20645C14(); // tgen
};
//SIG(-1 S20645C14) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S20645C14()
{
  extern Class_Descriptor cd_S20645C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20645C14, buf);
    S20645C14 *dp, &lv = *(dp=new (buf) S20645C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20645C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C14)");
    check_base_class_offset(lv, (S19894C34*), 0, "S20645C14");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S20645C14");
    test_class_info(&lv, &cd_S20645C14);
    dp->~S20645C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C14(Test_S20645C14, "S20645C14", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20645C14C1Ev();
extern void _ZN9S20645C14D1Ev();
Name_Map name_map_S20645C14[] = {
  NSPAIR(_ZN9S20645C14C1Ev),
  NSPAIR(_ZN9S20645C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S20645C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20645C14[];
static  VTBL_ENTRY vtc_S20645C14[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C14[0]),
};
extern VTBL_ENTRY _ZTV9S20645C14[];
static  VTT_ENTRY vtt_S20645C14[] = {
  {&(_ZTV9S20645C14[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S20645C14[];
extern  VTBL_ENTRY _ZTV9S20645C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C14[];
Class_Descriptor cd_S20645C14 = {  "S20645C14", // class name
  bases_S20645C14, 2,
  &(vtc_S20645C14[0]), // expected_vtbl_contents
  &(vtt_S20645C14[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20645C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20645C14),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20645C14),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  S20645C9  : virtual S20645C10 , S20645C6 , S19894C34 , S19894C17_nt , S20645C14 {
  virtual  ~S20645C9(); // _ZN8S20645C9D2Ev
  S20645C9(); // tgen
};
//SIG(-1 S20645C9) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S20645C9()
{
  extern Class_Descriptor cd_S20645C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20645C9, buf);
    S20645C9 *dp, &lv = *(dp=new (buf) S20645C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20645C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C9)");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), ABISELECT(48,24), "S20645C9");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), ABISELECT(48,24), "S20645C9");
    check_base_class_offset(lv, (S19894C34*)(S20645C14*), ABISELECT(48,24), "S20645C9");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(24,12), "S20645C9");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(24,12), "S20645C9");
    check_base_class_offset(lv, (S20645C6*)(S20645C10*), ABISELECT(32,16), "S20645C9");
    check_base_class_offset(lv, (S20645C6*)(S20645C11*), ABISELECT(32,16), "S20645C9");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C11*), ABISELECT(48,24), "S20645C9");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C11*), ABISELECT(56,28), "S20645C9");
    check_base_class_offset(lv, (S20645C11*)(S20645C10*), ABISELECT(48,24), "S20645C9");
    check_base_class_offset(lv, (S20645C10*), ABISELECT(24,12), "S20645C9");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*), 0, "S20645C9");
    /*is_ambiguous_... S20645C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S20645C9");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S20645C9");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C14*), ABISELECT(64,32), "S20645C9");
    check_base_class_offset(lv, (S20645C14*), ABISELECT(16,8), "S20645C9");
    test_class_info(&lv, &cd_S20645C9);
    dp->~S20645C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C9(Test_S20645C9, "S20645C9", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S20645C9C1Ev();
extern void _ZN8S20645C9D2Ev();
Name_Map name_map_S20645C9[] = {
  NSPAIR(_ZN8S20645C9C1Ev),
  NSPAIR(_ZN8S20645C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C11;
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
extern Class_Descriptor cd_S20645C10;
extern VTBL_ENTRY _ZTI9S20645C10[];
extern  VTBL_ENTRY _ZTV9S20645C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C10[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C14;
extern VTBL_ENTRY _ZTI9S20645C14[];
extern  VTBL_ENTRY _ZTV9S20645C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C14[];
static Base_Class bases_S20645C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20645C8,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20645C11,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20645C10,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20645C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20645C14,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI8S20645C9[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C9D1Ev();
extern void _ZN8S20645C9D0Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY vtc_S20645C9[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern VTBL_ENTRY _ZTV8S20645C9[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A__8S20645C9[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__A__8S20645C9[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C14__8S20645C9[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C14[0]),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C9[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C10__8S20645C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C10__8S20645C9[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__8S20645C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__8S20645C9[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C9[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11__8S20645C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A1__9S20645C11__8S20645C9[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTT_ENTRY vtt_S20645C9[] = {
  {&(_ZTV8S20645C9[9]),  9,39},
  {&(_tg__ZTV8S20645C6__A__8S20645C9[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__A__8S20645C9[3]),  3,4},
  {&(_tg__ZTV9S20645C14__8S20645C9[4]),  4,4},
  {&(_ZTV8S20645C9[23]),  23,39},
  {&(_ZTV8S20645C9[29]),  29,39},
  {&(_ZTV8S20645C9[23]),  23,39},
  {&(_ZTV8S20645C9[37]),  37,39},
  {&(_ZTV8S20645C9[16]),  16,39},
  {&(_tg__ZTV9S20645C10__8S20645C9[7]),  7,8},
  {&(_tg__ZTV8S20645C6__9S20645C10__8S20645C9[5]),  5,6},
  {&(_tg__ZTV9S20645C10__8S20645C9[7]),  7,8},
  {&(_tg__ZTV9S20645C11__9S20645C10__8S20645C9[7]),  7,9},
  {&(_tg__ZTV8S20645C6__8S20645C9[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__8S20645C9[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C9[5]),  5,7},
  {&(_tg__ZTV8S20645C6__9S20645C11__8S20645C9[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A1__9S20645C11__8S20645C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20645C9[];
extern  VTBL_ENTRY _ZTV8S20645C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C9[];
Class_Descriptor cd_S20645C9 = {  "S20645C9", // class name
  bases_S20645C9, 12,
  &(vtc_S20645C9[0]), // expected_vtbl_contents
  &(vtt_S20645C9[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S20645C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20645C9),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20645C9),18, //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  S20645C16  : S19894C6_nt , S20645C8 , virtual S20645C11 , S20645C6 , S20645C5 {
  virtual  ~S20645C16(); // _ZN9S20645C16D2Ev
  S20645C16(); // tgen
};
//SIG(-1 S20645C16) C1{ BC2{ m Fp} BC3{ v1} VBC4{ BC3 BC2 VBC5{ VBC6{ m} VBC3 FC3} v2} BC5 BC7{ BC5 BC6 BC3 vd} vd}


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

static void Test_S20645C16()
{
  extern Class_Descriptor cd_S20645C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S20645C16, buf);
    S20645C16 *dp, &lv = *(dp=new (buf) S20645C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S20645C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C16)");
    /*is_ambiguous_... S20645C16::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S20645C16");
    /*is_ambiguous_... S20645C16::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*), 0, "S20645C16");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C11*), ABISELECT(56,28), "S20645C16");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C11*), ABISELECT(64,32), "S20645C16");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), 0, "S20645C16");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), 0, "S20645C16");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*), 0, "S20645C16");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(72,36), "S20645C16");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(72,36), "S20645C16");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*), ABISELECT(72,36), "S20645C16");
    check_base_class_offset(lv, (S20645C6*)(S20645C11*), ABISELECT(72,36), "S20645C16");
    check_base_class_offset(lv, (S20645C11*), ABISELECT(56,28), "S20645C16");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*), ABISELECT(16,8), "S20645C16");
    check_base_class_offset(lv, (S20645C6*)(S20645C5*), ABISELECT(32,16), "S20645C16");
    /*is_ambiguous_... S20645C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*), ABISELECT(32,16), "S20645C16");
    /*is_ambiguous_... S20645C5::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*), ABISELECT(48,24), "S20645C16");
    check_base_class_offset(lv, (S20645C5*), ABISELECT(32,16), "S20645C16");
    test_class_info(&lv, &cd_S20645C16);
    dp->~S20645C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C16(Test_S20645C16, "S20645C16", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN9S20645C16C1Ev();
extern void _ZN9S20645C16D2Ev();
Name_Map name_map_S20645C16[] = {
  NSPAIR(_ZN9S20645C16C1Ev),
  NSPAIR(_ZN9S20645C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C11;
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
static Base_Class bases_S20645C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20645C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20645C8,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(72,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20645C11,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20645C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20645C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(48,24), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20645C5,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI9S20645C16[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C16D1Ev();
extern void _ZN9S20645C16D0Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev)();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C16[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D0Ev,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20645C16[];
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A__9S20645C16[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__A__9S20645C16[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C5__9S20645C16[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C5__A2__9S20645C16[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C5__A2__9S20645C16[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C5__9S20645C16[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C16[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11__9S20645C16[] = {
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C16[] = {
  0,
  ABISELECT(-72,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTT_ENTRY vtt_S20645C16[] = {
  {&(_ZTV9S20645C16[6]),  6,41},
  {&(_tg__ZTV8S20645C6__A__9S20645C16[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__A__9S20645C16[3]),  3,4},
  {&(_tg__ZTV8S20645C5__9S20645C16[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C5__A2__9S20645C16[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C5__A2__9S20645C16[3]),  3,4},
  {&(_tg__ZTV8S20645C8__8S20645C5__9S20645C16[3]),  3,4},
  {&(_ZTV9S20645C16[33]),  33,41},
  {&(_ZTV9S20645C16[40]),  40,41},
  {&(_ZTV9S20645C16[40]),  40,41},
  {&(_ZTV9S20645C16[14]),  14,41},
  {&(_ZTV9S20645C16[20]),  20,41},
  {&(_tg__ZTV9S20645C11__9S20645C16[5]),  5,7},
  {&(_tg__ZTV8S20645C6__9S20645C11__9S20645C16[5]),  5,6},
  {&(_tg__ZTV8S20645C6__9S20645C11__9S20645C16[5]),  5,6},
  {&(_tg__ZTV8S20645C6__9S20645C16[5]),  5,6},
  {&(_tg__ZTV8S20645C6__9S20645C16[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S20645C16[];
extern  VTBL_ENTRY _ZTV9S20645C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C16[];
Class_Descriptor cd_S20645C16 = {  "S20645C16", // class name
  bases_S20645C16, 13,
  &(vtc_S20645C16[0]), // expected_vtbl_contents
  &(vtt_S20645C16[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI9S20645C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20645C16),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20645C16),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  S20645C4  : virtual S20645C5 , S20645C9 , S3619C26 , virtual S20645C16 , S3619C16 {
  ::S19894C3 s20645c4f0;
  long s20645c4f1;
  virtual  ~S20645C4(); // _ZN8S20645C4D2Ev
  S20645C4(); // tgen
};
//SIG(-1 S20645C4) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} BC6{ VBC7{ VBC3 VBC8{ BC5 BC9{ m Fp} VBC3 v2}} BC3 BC4 BC10{ m} BC11{ VBC4 VBC9} vd} BC12{ m} VBC13{ BC9 BC5 VBC8 BC3 BC2 vd} BC14{ m} vd FC15{ VBC16{ BC17{ v3} BC9 VBC18{ VBC12 VBC17 FC17} v4}} Fl}


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

static void Test_S20645C4()
{
  extern Class_Descriptor cd_S20645C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[26];
    init_test(&cd_S20645C4, buf);
    S20645C4 *dp, &lv = *(dp=new (buf) S20645C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,100), "sizeof(S20645C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C4)");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*), ABISELECT(96,48), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), ABISELECT(96,48), "S20645C4");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C9*), ABISELECT(96,48), "S20645C4");
    check_base_class_offset(lv, (S19894C34*)(S20645C14*)(S20645C9*), ABISELECT(96,48), "S20645C4");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C16*), ABISELECT(96,48), "S20645C4");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(96,48), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*), ABISELECT(72,36), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(72,36), "S20645C4");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C9*), ABISELECT(72,36), "S20645C4");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C16*), ABISELECT(72,36), "S20645C4");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(72,36), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C5*), ABISELECT(72,36), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*), ABISELECT(72,36), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*), ABISELECT(88,44), "S20645C4");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C5*), ABISELECT(72,36), "S20645C4");
    check_base_class_offset(lv, (S20645C6*)(S20645C10*), ABISELECT(104,52), "S20645C4");
    check_base_class_offset(lv, (S20645C6*)(S20645C11*), ABISELECT(104,52), "S20645C4");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C11*), ABISELECT(120,60), "S20645C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C11*), ABISELECT(128,64), "S20645C4");
    check_base_class_offset(lv, (S20645C11*)(S20645C10*), ABISELECT(120,60), "S20645C4");
    check_base_class_offset(lv, (S20645C11*)(S20645C16*), ABISELECT(120,60), "S20645C4");
    check_base_class_offset(lv, (S20645C10*)(S20645C9*), ABISELECT(96,48), "S20645C4");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C9*), 0, "S20645C4");
    /*is_ambiguous_... S20645C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C9*), 0, "S20645C4");
    check_base_class_offset(lv, (S19894C17_nt*)(S20645C9*), 0, "S20645C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C14*)(S20645C9*), ABISELECT(136,68), "S20645C4");
    check_base_class_offset(lv, (S20645C14*)(S20645C9*), ABISELECT(16,8), "S20645C4");
    check_base_class_offset(lv, (S20645C9*), 0, "S20645C4");
    check_base_class_offset(lv, (S3619C26*), 0, "S20645C4");
    /*is_ambiguous_... S20645C16::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S20645C16*), ABISELECT(152,76), "S20645C4");
    /*is_ambiguous_... S20645C16::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C16*), ABISELECT(144,72), "S20645C4");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C16*), ABISELECT(160,80), "S20645C4");
    check_base_class_offset(lv, (S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(176,88), "S20645C4");
    /*is_ambiguous_... S20645C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*)(S20645C16*), ABISELECT(176,88), "S20645C4");
    /*is_ambiguous_... S20645C5::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*)(S20645C16*), ABISELECT(192,96), "S20645C4");
    check_base_class_offset(lv, (S20645C5*)(S20645C16*), ABISELECT(176,88), "S20645C4");
    check_base_class_offset(lv, (S20645C16*), ABISELECT(144,72), "S20645C4");
    check_base_class_offset(lv, (S3619C16*), 0, "S20645C4");
    check_field_offset(lv, s20645c4f0, ABISELECT(24,12), "S20645C4.s20645c4f0");
    check_field_offset(lv, s20645c4f1, ABISELECT(64,32), "S20645C4.s20645c4f1");
    test_class_info(&lv, &cd_S20645C4);
    dp->~S20645C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C4(Test_S20645C4, "S20645C4", ABISELECT(200,100));

#else // __cplusplus

extern void _ZN8S20645C4C1Ev();
extern void _ZN8S20645C4D2Ev();
Name_Map name_map_S20645C4[] = {
  NSPAIR(_ZN8S20645C4C1Ev),
  NSPAIR(_ZN8S20645C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C11;
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
extern Class_Descriptor cd_S20645C10;
extern VTBL_ENTRY _ZTI9S20645C10[];
extern  VTBL_ENTRY _ZTV9S20645C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C10[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C14;
extern VTBL_ENTRY _ZTI9S20645C14[];
extern  VTBL_ENTRY _ZTV9S20645C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C14[];
extern Class_Descriptor cd_S20645C9;
extern VTBL_ENTRY _ZTI8S20645C9[];
extern  VTBL_ENTRY _ZTV8S20645C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C9[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
extern Class_Descriptor cd_S20645C16;
extern VTBL_ENTRY _ZTI9S20645C16[];
extern  VTBL_ENTRY _ZTV9S20645C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C16[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
static Base_Class bases_S20645C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(88,44), //bcp->offset
    27, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20645C5,    ABISELECT(72,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20645C6,    ABISELECT(104,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20645C11,    ABISELECT(120,60), //bcp->offset
    44, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20645C10,    ABISELECT(96,48), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20645C6,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20645C14,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20645C9,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C8,    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
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C6,    ABISELECT(160,80), //bcp->offset
    64, //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
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C6,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(176,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
    24, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(192,96), //bcp->offset
    78, //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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20645C5,    ABISELECT(176,88), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C16,    ABISELECT(144,72), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20645C4[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C4D1Ev();
extern void _ZN8S20645C4D0Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S20645C4D1Ev,_ZThn36_N8S20645C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S20645C4D0Ev,_ZThn36_N8S20645C4D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZThn144_N8S20645C4D1Ev,_ZThn72_N8S20645C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev)();
extern void ABISELECT(_ZThn144_N8S20645C4D0Ev,_ZThn72_N8S20645C4D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev)();
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C4[] = {
  ABISELECT(144,72),
  ABISELECT(72,36),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D0Ev,
  ABISELECT(120,60),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  ABISELECT(-72,-36),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
  ABISELECT(-144,-72),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S20645C4[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C9D1Ev();
extern void _ZN8S20645C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C9__8S20645C4[] = {
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C9__A2__8S20645C4[] = {
  ABISELECT(72,36),
  ABISELECT(96,48),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C9__A2__8S20645C4[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C9__8S20645C4[] = {
  ABISELECT(120,60),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C14[0]),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C9__8S20645C4[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__8S20645C9__8S20645C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C9__8S20645C4[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C9__8S20645C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C14__8S20645C9__8S20645C4[] = {
  ABISELECT(120,60),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C4[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C5__8S20645C4[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C4[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C10__8S20645C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__9S20645C10__8S20645C4[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C10__8S20645C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__A1__8S20645C4[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C4[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11__8S20645C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A1__9S20645C11__8S20645C4[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C16D1Ev();
extern void _ZN9S20645C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C4[] = {
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C4[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C69S20645C16__A3__8S20645C4[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C4[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C59S20645C16__A4__8S20645C4[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C59S20645C16__A4__8S20645C4[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C59S20645C16__A1__8S20645C4[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C16__8S20645C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C16__8S20645C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A2__9S20645C16__8S20645C4[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A__9S20645C16__8S20645C4[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C5__9S20645C16__8S20645C4[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev),
};
static  VTT_ENTRY vtt_S20645C4[] = {
  {&(_ZTV8S20645C4[11]),  11,81},
  {&(_tg__ZTV8S20645C9__8S20645C4[9]),  9,12},
  {&(_tg__ZTV8S20645C68S20645C9__A2__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C9__A2__8S20645C4[3]),  3,4},
  {&(_tg__ZTV9S20645C148S20645C9__8S20645C4[4]),  4,4},
  {&(_tg__ZTV9S20645C10__8S20645C9__8S20645C4[7]),  7,8},
  {&(_tg__ZTV8S20645C6__8S20645C9__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C9__8S20645C4[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C9__8S20645C4[7]),  7,9},
  {&(_tg__ZTV9S20645C14__8S20645C9__8S20645C4[4]),  4,4},
  {&(_ZTV8S20645C4[24]),  24,81},
  {&(_ZTV8S20645C4[24]),  24,81},
  {&(_ZTV8S20645C4[29]),  29,81},
  {&(_ZTV8S20645C4[37]),  37,81},
  {&(_ZTV8S20645C4[43]),  43,81},
  {&(_ZTV8S20645C4[51]),  51,81},
  {&(_ZTV8S20645C4[18]),  18,81},
  {&(_ZTV8S20645C4[61]),  61,81},
  {&(_ZTV8S20645C4[69]),  69,81},
  {&(_ZTV8S20645C4[75]),  75,81},
  {&(_ZTV8S20645C4[80]),  80,81},
  {&(_tg__ZTV8S20645C5__8S20645C4[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C5__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C68S20645C5__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C5__8S20645C4[5]),  5,8},
  {&(_tg__ZTV9S20645C10__8S20645C4[7]),  7,8},
  {&(_tg__ZTV8S20645C6__9S20645C10__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__9S20645C10__8S20645C4[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C10__8S20645C4[7]),  7,9},
  {&(_tg__ZTV8S20645C6__A1__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__A1__8S20645C4[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C4[5]),  5,7},
  {&(_tg__ZTV8S20645C6__9S20645C11__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A1__9S20645C11__8S20645C4[3]),  3,4},
  {&(_tg__ZTV9S20645C16__8S20645C4[6]),  6,9},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C69S20645C16__A3__8S20645C4[3]),  3,4},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C4[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C59S20645C16__A4__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C59S20645C16__A4__8S20645C4[3]),  3,4},
  {&(_tg__ZTV8S20645C8__8S20645C59S20645C16__A1__8S20645C4[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C16__8S20645C4[7]),  7,9},
  {&(_tg__ZTV8S20645C6__9S20645C16__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A2__9S20645C16__8S20645C4[3]),  3,4},
  {&(_tg__ZTV8S20645C6__A__9S20645C16__8S20645C4[5]),  5,6},
  {&(_tg__ZTV8S20645C5__9S20645C16__8S20645C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20645C4[];
extern  VTBL_ENTRY _ZTV8S20645C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C4[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20645C4D0Ev,_ZThn72_N8S20645C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20645C4D1Ev,_ZThn72_N8S20645C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20645C4D0Ev,_ZThn36_N8S20645C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20645C4D1Ev,_ZThn36_N8S20645C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20645C4 = {  "S20645C4", // class name
  bases_S20645C4, 27,
  &(vtc_S20645C4[0]), // expected_vtbl_contents
  &(vtt_S20645C4[0]), // expected_vtt_contents
  ABISELECT(200,100), // object size
  NSPAIRA(_ZTI8S20645C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20645C4),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20645C4),46, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20645C2  : virtual S3223C8_nt , S20645C4 {
  ~S20645C2(); // tgen
  S20645C2(); // tgen
};
//SIG(-1 S20645C2) C1{ VBC2{ m Fi} BC3{ VBC4{ BC5{ VBC6{ m} VBC7{ v1} FC7} BC6 BC7 vd} BC8{ VBC9{ VBC5 VBC10{ BC7 BC11{ m Fp} VBC5 v2}} BC5 BC6 BC12{ m} BC13{ VBC6 VBC11} vd} BC14{ m} VBC15{ BC11 BC7 VBC10 BC5 BC4 vd} BC16{ m} vd FC17{ VBC18{ BC19{ v3} BC11 VBC20{ VBC14 VBC19 FC19} v4}} Fl}}


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

static void Test_S20645C2()
{
  extern Class_Descriptor cd_S20645C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[27];
    init_test(&cd_S20645C2, buf);
    S20645C2 *dp, &lv = *(dp=new (buf) S20645C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S20645C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C2)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(72,36), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*), ABISELECT(104,52), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), ABISELECT(104,52), "S20645C2");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C9*)(S20645C4*), ABISELECT(104,52), "S20645C2");
    check_base_class_offset(lv, (S19894C34*)(S20645C14*)(S20645C9*)(S20645C4*), ABISELECT(104,52), "S20645C2");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C16*), ABISELECT(104,52), "S20645C2");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(104,52), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*), ABISELECT(80,40), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(80,40), "S20645C2");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C9*)(S20645C4*), ABISELECT(80,40), "S20645C2");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C16*), ABISELECT(80,40), "S20645C2");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(80,40), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C5*), ABISELECT(80,40), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*), ABISELECT(80,40), "S20645C2");
    /*is_ambiguous_... S20645C2::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*), ABISELECT(96,48), "S20645C2");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C5*)(S20645C4*), ABISELECT(80,40), "S20645C2");
    check_base_class_offset(lv, (S20645C6*)(S20645C10*), ABISELECT(112,56), "S20645C2");
    check_base_class_offset(lv, (S20645C6*)(S20645C11*), ABISELECT(112,56), "S20645C2");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C11*), ABISELECT(128,64), "S20645C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C11*), ABISELECT(136,68), "S20645C2");
    check_base_class_offset(lv, (S20645C11*)(S20645C10*), ABISELECT(128,64), "S20645C2");
    check_base_class_offset(lv, (S20645C11*)(S20645C16*), ABISELECT(128,64), "S20645C2");
    check_base_class_offset(lv, (S20645C10*)(S20645C9*)(S20645C4*), ABISELECT(104,52), "S20645C2");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C9*)(S20645C4*), 0, "S20645C2");
    /*is_ambiguous_... S20645C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C9*)(S20645C4*), 0, "S20645C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S20645C9*)(S20645C4*), 0, "S20645C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C14*)(S20645C9*)(S20645C4*), ABISELECT(144,72), "S20645C2");
    check_base_class_offset(lv, (S20645C14*)(S20645C9*)(S20645C4*), ABISELECT(16,8), "S20645C2");
    check_base_class_offset(lv, (S20645C9*)(S20645C4*), 0, "S20645C2");
    check_base_class_offset(lv, (S3619C26*)(S20645C4*), 0, "S20645C2");
    /*is_ambiguous_... S20645C16::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S20645C16*), ABISELECT(160,80), "S20645C2");
    /*is_ambiguous_... S20645C16::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C16*), ABISELECT(152,76), "S20645C2");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C16*), ABISELECT(168,84), "S20645C2");
    check_base_class_offset(lv, (S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(184,92), "S20645C2");
    /*is_ambiguous_... S20645C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*)(S20645C16*), ABISELECT(184,92), "S20645C2");
    /*is_ambiguous_... S20645C5::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*)(S20645C16*), ABISELECT(200,100), "S20645C2");
    check_base_class_offset(lv, (S20645C5*)(S20645C16*), ABISELECT(184,92), "S20645C2");
    check_base_class_offset(lv, (S20645C16*)(S20645C4*), ABISELECT(152,76), "S20645C2");
    check_base_class_offset(lv, (S3619C16*)(S20645C4*), 0, "S20645C2");
    check_base_class_offset(lv, (S20645C4*), 0, "S20645C2");
    test_class_info(&lv, &cd_S20645C2);
    dp->~S20645C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C2(Test_S20645C2, "S20645C2", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN8S20645C2C1Ev();
extern void _ZN8S20645C2D1Ev();
Name_Map name_map_S20645C2[] = {
  NSPAIR(_ZN8S20645C2C1Ev),
  NSPAIR(_ZN8S20645C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C11;
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
extern Class_Descriptor cd_S20645C10;
extern VTBL_ENTRY _ZTI9S20645C10[];
extern  VTBL_ENTRY _ZTV9S20645C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C10[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C14;
extern VTBL_ENTRY _ZTI9S20645C14[];
extern  VTBL_ENTRY _ZTV9S20645C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C14[];
extern Class_Descriptor cd_S20645C9;
extern VTBL_ENTRY _ZTI8S20645C9[];
extern  VTBL_ENTRY _ZTV8S20645C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C9[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
extern Class_Descriptor cd_S20645C16;
extern VTBL_ENTRY _ZTI9S20645C16[];
extern  VTBL_ENTRY _ZTV9S20645C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C16[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S20645C4;
extern VTBL_ENTRY _ZTI8S20645C4[];
extern  VTBL_ENTRY _ZTV8S20645C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C4[];
static Base_Class bases_S20645C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19894C34,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(96,48), //bcp->offset
    28, //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_S20645C5,    ABISELECT(80,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(112,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20645C11,    ABISELECT(128,64), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20645C10,    ABISELECT(104,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20645C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20645C14,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20645C9,    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
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3619C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C6,    ABISELECT(168,84), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C6,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(200,100), //bcp->offset
    79, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C5,    ABISELECT(184,92), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C16,    ABISELECT(152,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3619C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20645C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20645C2[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C2D1Ev();
extern void _ZN8S20645C2D0Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C2D1Ev,_ZTv0_n24_N8S20645C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20645C2D1Ev,_ZThn40_N8S20645C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20645C2D0Ev,_ZTv0_n24_N8S20645C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S20645C2D0Ev,_ZThn40_N8S20645C2D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C2D1Ev,_ZTv0_n32_N8S20645C2D1Ev)();
extern void ABISELECT(_ZThn152_N8S20645C2D1Ev,_ZThn76_N8S20645C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20645C2D0Ev,_ZTv0_n32_N8S20645C2D0Ev)();
extern void ABISELECT(_ZThn152_N8S20645C2D0Ev,_ZThn76_N8S20645C2D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C2D1Ev,_ZTvn16_n32_N8S20645C2D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C2D0Ev,_ZTvn16_n32_N8S20645C2D0Ev)();
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY vtc_S20645C2[] = {
  ABISELECT(72,36),
  ABISELECT(152,76),
  ABISELECT(80,40),
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C2D0Ev,
  ABISELECT(128,64),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  ABISELECT(-80,-40),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C2D1Ev,_ZTv0_n24_N8S20645C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C2D0Ev,_ZTv0_n24_N8S20645C2D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
  ABISELECT(-152,-76),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C2D1Ev,_ZTv0_n32_N8S20645C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C2D0Ev,_ZTv0_n32_N8S20645C2D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C2D1Ev,_ZTvn16_n32_N8S20645C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C2D0Ev,_ZTvn16_n32_N8S20645C2D0Ev),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S20645C2[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C4D1Ev();
extern void _ZN8S20645C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C4__8S20645C2[] = {
  ABISELECT(152,76),
  ABISELECT(80,40),
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D0Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C9D1Ev();
extern void _ZN8S20645C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C98S20645C4__8S20645C2[] = {
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C98S20645C4__A2__8S20645C2[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C98S20645C4__A2__8S20645C2[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C98S20645C4__8S20645C2[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C14[0]),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C98S20645C4__8S20645C2[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__8S20645C98S20645C4__8S20645C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C98S20645C4__8S20645C2[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C98S20645C4__8S20645C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C14__8S20645C98S20645C4__8S20645C2[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S20645C4D1Ev,_ZThn40_N8S20645C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S20645C4D0Ev,_ZThn40_N8S20645C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C4__8S20645C2[] = {
  ABISELECT(-80,-40),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C5__A1__8S20645C4__8S20645C2[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C4__8S20645C2[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C4__8S20645C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C4__8S20645C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C9__8S20645C4__8S20645C2[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZThn152_N8S20645C4D1Ev,_ZThn76_N8S20645C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev)();
extern void ABISELECT(_ZThn152_N8S20645C4D0Ev,_ZThn76_N8S20645C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C4__8S20645C2[] = {
  ABISELECT(-152,-76),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C4__8S20645C2[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C4__8S20645C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C4__8S20645C2[] = {
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C5__8S20645C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C2[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C10__8S20645C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__9S20645C10__8S20645C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C10__8S20645C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__A1__8S20645C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11__8S20645C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A1__9S20645C11__8S20645C2[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C16D1Ev();
extern void _ZN9S20645C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C2[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C69S20645C16__A3__8S20645C2[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C59S20645C16__A4__8S20645C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C59S20645C16__A4__8S20645C2[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C59S20645C16__A1__8S20645C2[] = {
  0,
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C16__8S20645C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C16__8S20645C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A2__9S20645C16__8S20645C2[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A__9S20645C16__8S20645C2[] = {
  ABISELECT(-88,-44),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C5__9S20645C16__8S20645C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev),
};
static  VTT_ENTRY vtt_S20645C2[] = {
  {&(_ZTV8S20645C2[12]),  12,82},
  {&(_tg__ZTV8S20645C4__8S20645C2[11]),  11,14},
  {&(_tg__ZTV8S20645C98S20645C4__8S20645C2[9]),  9,12},
  {&(_tg__ZTV8S20645C68S20645C98S20645C4__A2__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C98S20645C4__A2__8S20645C2[3]),  3,4},
  {&(_tg__ZTV9S20645C148S20645C98S20645C4__8S20645C2[4]),  4,4},
  {&(_tg__ZTV9S20645C10__8S20645C98S20645C4__8S20645C2[7]),  7,8},
  {&(_tg__ZTV8S20645C6__8S20645C98S20645C4__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C98S20645C4__8S20645C2[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C98S20645C4__8S20645C2[7]),  7,9},
  {&(_tg__ZTV9S20645C14__8S20645C98S20645C4__8S20645C2[4]),  4,4},
  {&(_tg__ZTV8S20645C5__8S20645C4__8S20645C2[6]),  6,9},
  {&(_tg__ZTV8S20645C5__8S20645C4__8S20645C2[6]),  6,9},
  {&(_tg__ZTV8S20645C88S20645C5__A1__8S20645C4__8S20645C2[2]),  2,3},
  {&(_tg__ZTV9S20645C10__8S20645C4__8S20645C2[7]),  7,8},
  {&(_tg__ZTV8S20645C6__A1__8S20645C4__8S20645C2[5]),  5,6},
  {&(_tg__ZTV9S20645C11__8S20645C4__8S20645C2[7]),  7,9},
  {&(_tg__ZTV9S20645C148S20645C9__8S20645C4__8S20645C2[4]),  4,4},
  {&(_tg__ZTV9S20645C16__8S20645C4__8S20645C2[8]),  8,11},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C4__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C4__8S20645C2[5]),  5,8},
  {&(_tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C4__8S20645C2[2]),  2,3},
  {&(_ZTV8S20645C2[25]),  25,82},
  {&(_ZTV8S20645C2[25]),  25,82},
  {&(_ZTV8S20645C2[30]),  30,82},
  {&(_ZTV8S20645C2[38]),  38,82},
  {&(_ZTV8S20645C2[44]),  44,82},
  {&(_ZTV8S20645C2[52]),  52,82},
  {&(_ZTV8S20645C2[19]),  19,82},
  {&(_ZTV8S20645C2[62]),  62,82},
  {&(_ZTV8S20645C2[70]),  70,82},
  {&(_ZTV8S20645C2[76]),  76,82},
  {&(_ZTV8S20645C2[81]),  81,82},
  {&(_tg__ZTV8S20645C5__8S20645C2[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C5__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C68S20645C5__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C5__8S20645C2[5]),  5,8},
  {&(_tg__ZTV9S20645C10__8S20645C2[7]),  7,8},
  {&(_tg__ZTV8S20645C6__9S20645C10__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__9S20645C10__8S20645C2[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C10__8S20645C2[7]),  7,9},
  {&(_tg__ZTV8S20645C6__A1__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__A1__8S20645C2[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C2[5]),  5,7},
  {&(_tg__ZTV8S20645C6__9S20645C11__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A1__9S20645C11__8S20645C2[3]),  3,4},
  {&(_tg__ZTV9S20645C16__8S20645C2[6]),  6,9},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C69S20645C16__A3__8S20645C2[3]),  3,4},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C2[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C59S20645C16__A4__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C59S20645C16__A4__8S20645C2[3]),  3,4},
  {&(_tg__ZTV8S20645C8__8S20645C59S20645C16__A1__8S20645C2[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C16__8S20645C2[7]),  7,9},
  {&(_tg__ZTV8S20645C6__9S20645C16__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A2__9S20645C16__8S20645C2[3]),  3,4},
  {&(_tg__ZTV8S20645C6__A__9S20645C16__8S20645C2[5]),  5,6},
  {&(_tg__ZTV8S20645C5__9S20645C16__8S20645C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20645C2[];
extern  VTBL_ENTRY _ZTV8S20645C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C2[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20645C4D0Ev,_ZThn76_N8S20645C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20645C4D1Ev,_ZThn76_N8S20645C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C4D0Ev,_ZThn40_N8S20645C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C4D1Ev,_ZThn40_N8S20645C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C2D0Ev,_ZTv0_n32_N8S20645C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20645C2D0Ev,_ZThn76_N8S20645C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C2D1Ev,_ZTv0_n32_N8S20645C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20645C2D1Ev,_ZThn76_N8S20645C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C2D0Ev,_ZTv0_n24_N8S20645C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C2D0Ev,_ZThn40_N8S20645C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C2D1Ev,_ZTv0_n24_N8S20645C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C2D1Ev,_ZThn40_N8S20645C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20645C2 = {  "S20645C2", // class name
  bases_S20645C2, 29,
  &(vtc_S20645C2[0]), // expected_vtbl_contents
  &(vtt_S20645C2[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI8S20645C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20645C2),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20645C2),58, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20645C1  : virtual S20645C2 , virtual S20645C4 {
  ~S20645C1(); // tgen
  S20645C1(); // tgen
};
//SIG(1 S20645C1) C1{ VBC2{ VBC3{ m Fi} BC4{ VBC5{ BC6{ VBC7{ m} VBC8{ v1} FC8} BC7 BC8 vd} BC9{ VBC10{ VBC6 VBC11{ BC8 BC12{ m Fp} VBC6 v2}} BC6 BC7 BC13{ m} BC14{ VBC7 VBC12} vd} BC15{ m} VBC16{ BC12 BC8 VBC11 BC6 BC5 vd} BC17{ m} vd FC18{ VBC19{ BC20{ v3} BC12 VBC21{ VBC15 VBC20 FC20} v4}} Fl}} VBC4}


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

static void Test_S20645C1()
{
  extern Class_Descriptor cd_S20645C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[36];
    init_test(&cd_S20645C1, buf);
    S20645C1 *dp, &lv = *(dp=new (buf) S20645C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,140), "sizeof(S20645C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20645C1)");
    check_base_class_offset(lv, (S3223C8_nt*)(S20645C2*), ABISELECT(80,40), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*), 0, "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*), 0, "S20645C1");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C9*)(S20645C4*)(S20645C2*), 0, "S20645C1");
    check_base_class_offset(lv, (S19894C34*)(S20645C14*)(S20645C9*)(S20645C4*)(S20645C2*), 0, "S20645C1");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C16*), 0, "S20645C1");
    check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C5*)(S20645C16*), 0, "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C6*)(S20645C9*)(S20645C4*), 0, "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C14*)(S20645C9*)(S20645C4*), 0, "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C16*), ABISELECT(88,44), "S20645C1");
    check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C6*)(S20645C9*)(S20645C4*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C5*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*), ABISELECT(104,52), "S20645C1");
    /*is_ambiguous_... S20645C4::S20645C5 */ AMB_check_base_class_offset(lv, (S20645C5*)(S20645C4*)(S20645C2*), ABISELECT(88,44), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C5*)(S20645C4*), ABISELECT(88,44), "S20645C1");
    check_base_class_offset(lv, (S20645C6*)(S20645C10*), ABISELECT(112,56), "S20645C1");
    check_base_class_offset(lv, (S20645C6*)(S20645C11*), ABISELECT(112,56), "S20645C1");
    /*is_ambiguous_... S20645C11::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C11*), ABISELECT(128,64), "S20645C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C11*), ABISELECT(136,68), "S20645C1");
    check_base_class_offset(lv, (S20645C11*)(S20645C10*), ABISELECT(128,64), "S20645C1");
    check_base_class_offset(lv, (S20645C11*)(S20645C16*), ABISELECT(128,64), "S20645C1");
    check_base_class_offset(lv, (S20645C10*)(S20645C9*)(S20645C4*)(S20645C2*), 0, "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C10*)(S20645C9*)(S20645C4*), 0, "S20645C1");
    /*is_ambiguous_... S20645C9::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    /*is_ambiguous_... S20645C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S20645C14*)(S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(144,72), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S20645C14*)(S20645C9*)(S20645C4*), ABISELECT(144,72), "S20645C1");
    check_base_class_offset(lv, (S20645C14*)(S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(24,12), "S20645C1");
    check_base_class_offset(lv, (S20645C9*)(S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    check_base_class_offset(lv, (S3619C26*)(S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    /*is_ambiguous_... S20645C16::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S20645C16*), ABISELECT(160,80), "S20645C1");
    /*is_ambiguous_... S20645C16::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C16*), ABISELECT(152,76), "S20645C1");
    /*is_ambiguous_... S20645C16::S20645C6 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C16*), ABISELECT(168,84), "S20645C1");
    check_base_class_offset(lv, (S20645C6*)(S20645C5*)(S20645C16*), ABISELECT(184,92), "S20645C1");
    /*is_ambiguous_... S20645C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C5*)(S20645C16*), ABISELECT(184,92), "S20645C1");
    /*is_ambiguous_... S20645C5::S20645C8 */ AMB_check_base_class_offset(lv, (S20645C8*)(S20645C5*)(S20645C16*), ABISELECT(200,100), "S20645C1");
    check_base_class_offset(lv, (S20645C5*)(S20645C16*), ABISELECT(184,92), "S20645C1");
    check_base_class_offset(lv, (S20645C16*)(S20645C4*)(S20645C2*), ABISELECT(152,76), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C16*)(S20645C4*), ABISELECT(152,76), "S20645C1");
    check_base_class_offset(lv, (S3619C16*)(S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    check_base_class_offset(lv, (S20645C4*)(S20645C2*), ABISELECT(8,4), "S20645C1");
    check_base_class_offset(lv, (S20645C2*), ABISELECT(8,4), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C6*)(S20645C9*)(S20645C4*), ABISELECT(208,104), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20645C9*)(S20645C4*), ABISELECT(208,104), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S20645C9*)(S20645C4*), ABISELECT(208,104), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C14*)(S20645C9*)(S20645C4*), ABISELECT(224,112), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C9*)(S20645C4*), ABISELECT(208,104), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S3619C26*)(S20645C4*), ABISELECT(208,104), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S3619C16*)(S20645C4*), ABISELECT(208,104), "S20645C1");
    /*is_ambiguous_... S20645C1::S20645C4 */ AMB_check_base_class_offset(lv, (S20645C4*), ABISELECT(208,104), "S20645C1");
    test_class_info(&lv, &cd_S20645C1);
    dp->~S20645C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20645C1(Test_S20645C1, "S20645C1", ABISELECT(280,140));

#else // __cplusplus

extern void _ZN8S20645C1C1Ev();
extern void _ZN8S20645C1D1Ev();
Name_Map name_map_S20645C1[] = {
  NSPAIR(_ZN8S20645C1C1Ev),
  NSPAIR(_ZN8S20645C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C11;
extern VTBL_ENTRY _ZTI9S20645C11[];
extern  VTBL_ENTRY _ZTV9S20645C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C11[];
extern Class_Descriptor cd_S20645C10;
extern VTBL_ENTRY _ZTI9S20645C10[];
extern  VTBL_ENTRY _ZTV9S20645C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C10[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C14;
extern VTBL_ENTRY _ZTI9S20645C14[];
extern  VTBL_ENTRY _ZTV9S20645C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C14[];
extern Class_Descriptor cd_S20645C9;
extern VTBL_ENTRY _ZTI8S20645C9[];
extern  VTBL_ENTRY _ZTV8S20645C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C9[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20645C8;
extern VTBL_ENTRY _ZTI8S20645C8[];
extern  VTBL_ENTRY _ZTV8S20645C8[];
extern Class_Descriptor cd_S20645C5;
extern VTBL_ENTRY _ZTI8S20645C5[];
extern  VTBL_ENTRY _ZTV8S20645C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C5[];
extern Class_Descriptor cd_S20645C16;
extern VTBL_ENTRY _ZTI9S20645C16[];
extern  VTBL_ENTRY _ZTV9S20645C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C16[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S20645C4;
extern VTBL_ENTRY _ZTI8S20645C4[];
extern  VTBL_ENTRY _ZTV8S20645C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C4[];
extern Class_Descriptor cd_S20645C2;
extern VTBL_ENTRY _ZTI8S20645C2[];
extern  VTBL_ENTRY _ZTV8S20645C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C2[];
extern Class_Descriptor cd_S20645C6;
extern VTBL_ENTRY _ZTI8S20645C6[];
extern  VTBL_ENTRY _ZTV8S20645C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C6[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S20645C14;
extern VTBL_ENTRY _ZTI9S20645C14[];
extern  VTBL_ENTRY _ZTV9S20645C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20645C14[];
extern Class_Descriptor cd_S20645C9;
extern VTBL_ENTRY _ZTI8S20645C9[];
extern  VTBL_ENTRY _ZTV8S20645C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C9[];
extern Class_Descriptor cd_S3619C26;
extern VTBL_ENTRY _ZTI8S3619C26[];
extern Class_Descriptor cd_S3619C16;
extern VTBL_ENTRY _ZTI8S3619C16[];
extern Class_Descriptor cd_S20645C4;
extern VTBL_ENTRY _ZTI8S20645C4[];
extern  VTBL_ENTRY _ZTV8S20645C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C4[];
static Base_Class bases_S20645C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(104,52), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20645C5,    ABISELECT(88,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(112,56), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20645C8,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20645C11,    ABISELECT(128,64), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20645C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20645C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20645C14,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20645C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C6,    ABISELECT(168,84), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C6,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C8,    ABISELECT(200,100), //bcp->offset
    89, //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
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20645C5,    ABISELECT(184,92), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20645C16,    ABISELECT(152,76), //bcp->offset
    64, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3619C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20645C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20645C2,    ABISELECT(8,4), //bcp->offset
    17, //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
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20645C6,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20645C14,    ABISELECT(224,112), //bcp->offset
    107, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20645C9,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3619C26,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3619C16,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20645C4,    ABISELECT(208,104), //bcp->offset
    92, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20645C1[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C1D1Ev();
extern void _ZN8S20645C1D0Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S20645C1D1Ev,_ZTv0_n52_N8S20645C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20645C1D1Ev,_ZThn4_N8S20645C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S20645C1D0Ev,_ZTv0_n52_N8S20645C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20645C1D0Ev,_ZThn4_N8S20645C1D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C1D1Ev,_ZTv0_n24_N8S20645C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20645C1D1Ev,_ZThn44_N8S20645C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20645C1D0Ev,_ZTv0_n24_N8S20645C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20645C1D0Ev,_ZThn44_N8S20645C1D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C1D1Ev,_ZTv0_n32_N8S20645C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S20645C1D1Ev,_ZThn76_N8S20645C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20645C1D0Ev,_ZTv0_n32_N8S20645C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S20645C1D0Ev,_ZThn76_N8S20645C1D0Ev)() __attribute__((weak));
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C1D1Ev,_ZTvn16_n32_N8S20645C1D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C1D0Ev,_ZTvn16_n32_N8S20645C1D0Ev)();
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n96_N8S20645C1D1Ev,_ZTv0_n48_N8S20645C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20645C1D1Ev,_ZThn104_N8S20645C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20645C1D0Ev,_ZTv0_n48_N8S20645C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20645C1D0Ev,_ZThn104_N8S20645C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20645C1[] = {
  ABISELECT(208,104),
  ABISELECT(152,76),
  ABISELECT(144,72),
  0,
  ABISELECT(88,44),
  ABISELECT(80,40),
  ABISELECT(8,4),
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(144,72),
  ABISELECT(80,40),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20645C1D1Ev,_ZTv0_n52_N8S20645C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20645C1D0Ev,_ZTv0_n52_N8S20645C1D0Ev),
  ABISELECT(120,60),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  ABISELECT(-88,-44),
  0,
  ABISELECT(-88,-44),
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C1D1Ev,_ZTv0_n24_N8S20645C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C1D0Ev,_ZTv0_n24_N8S20645C1D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
  ABISELECT(-152,-76),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-152,-76),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C1D1Ev,_ZTv0_n32_N8S20645C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C1D0Ev,_ZTv0_n32_N8S20645C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C1D1Ev,_ZTvn16_n32_N8S20645C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C1D0Ev,_ZTvn16_n32_N8S20645C1D0Ev),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  ABISELECT(-208,-104),
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20645C1D1Ev,_ZTv0_n48_N8S20645C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20645C1D0Ev,_ZTv0_n48_N8S20645C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-224,-112),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S20645C1[0]),
};
extern VTBL_ENTRY _ZTV8S20645C1[];
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C2D1Ev();
extern void _ZN8S20645C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C2__8S20645C1[] = {
  ABISELECT(72,36),
  ABISELECT(144,72),
  ABISELECT(80,40),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C2D0Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C4D1Ev();
extern void _ZN8S20645C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(144,72),
  ABISELECT(80,40),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D0Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C9D1Ev();
extern void _ZN8S20645C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C98S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C98S20645C48S20645C2__A2__8S20645C1[] = {
  ABISELECT(80,40),
  ABISELECT(-8,-4),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C98S20645C48S20645C2__A2__8S20645C1[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C98S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(120,60),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C14[0]),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C98S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__8S20645C98S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C98S20645C48S20645C2__8S20645C1[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C98S20645C48S20645C2__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C14__8S20645C98S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(120,60),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S20645C4D1Ev,_ZThn40_N8S20645C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S20645C4D0Ev,_ZThn40_N8S20645C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-80,-40),
  0,
  ABISELECT(-88,-44),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C5__A1__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C48S20645C2__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C9__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(120,60),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZThn144_N8S20645C4D1Ev,_ZThn72_N8S20645C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev)();
extern void ABISELECT(_ZThn144_N8S20645C4D0Ev,_ZThn72_N8S20645C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-144,-72),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-152,-76),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C48S20645C2__8S20645C1[] = {
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C2D1Ev,_ZTv0_n24_N8S20645C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20645C2D1Ev,_ZThn40_N8S20645C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20645C2D0Ev,_ZTv0_n24_N8S20645C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S20645C2D0Ev,_ZThn40_N8S20645C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C2__8S20645C1[] = {
  ABISELECT(-80,-40),
  0,
  ABISELECT(-88,-44),
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C2D1Ev,_ZTv0_n24_N8S20645C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C2D0Ev,_ZTv0_n24_N8S20645C2D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C5__A1__8S20645C2__8S20645C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C2__8S20645C1[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C2__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C2__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C98S20645C4__8S20645C2__8S20645C1[] = {
  ABISELECT(120,60),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C2D1Ev,_ZTv0_n32_N8S20645C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S20645C2D1Ev,_ZThn72_N8S20645C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20645C2D0Ev,_ZTv0_n32_N8S20645C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S20645C2D0Ev,_ZThn72_N8S20645C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C2__8S20645C1[] = {
  ABISELECT(-144,-72),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-152,-76),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C2D1Ev,_ZTv0_n32_N8S20645C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C2D0Ev,_ZTv0_n32_N8S20645C2D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C2__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C2D1Ev,_ZTvn16_n32_N8S20645C2D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C2D0Ev,_ZTvn16_n32_N8S20645C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C2__8S20645C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C2D1Ev,_ZTvn16_n32_N8S20645C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C2D0Ev,_ZTvn16_n32_N8S20645C2D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C2__8S20645C1[] = {
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20645C2[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C1[] = {
  0,
  ABISELECT(-88,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C5__8S20645C1[] = {
  0,
  ABISELECT(-88,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C1[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C10__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__9S20645C10__8S20645C1[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C10__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20645C10[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C6__A1__8S20645C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C11__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A1__9S20645C11__8S20645C1[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20645C11[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C16D1Ev();
extern void _ZN9S20645C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-152,-76),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20645C16D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C69S20645C16__A3__8S20645C1[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C5D1Ev();
extern void _ZN8S20645C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C5D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C59S20645C16__A4__8S20645C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C59S20645C16__A4__8S20645C1[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C59S20645C16__A1__8S20645C1[] = {
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S20645C5[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__9S20645C16__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__9S20645C16__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__A2__9S20645C16__8S20645C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A__9S20645C16__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C5__9S20645C16__8S20645C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20645C16[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D1Ev,_ZThn16_N9S20645C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20645C16D0Ev,_ZThn16_N9S20645C16D0Ev),
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C4D1Ev();
extern void _ZN8S20645C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C4__A1__8S20645C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-60),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C4D0Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN8S20645C9D1Ev();
extern void _ZN8S20645C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C98S20645C4__A1__8S20645C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20645C9D0Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C68S20645C98S20645C4__A5__8S20645C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-208,-104),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C68S20645C98S20645C4__A5__8S20645C1[] = {
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S20645C6[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C98S20645C4__A1__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-224,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20645C14[0]),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C98S20645C4__A1__8S20645C1[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__8S20645C98S20645C4__A1__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C8__8S20645C98S20645C4__A1__8S20645C1[] = {
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C98S20645C4__A1__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C14__8S20645C98S20645C4__A1__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-224,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C9[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C5__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(120,60),
  0,
  ABISELECT(-88,-44),
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C5__A1__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C10__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  ABISELECT(112,56),
  ABISELECT(88,44),
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C6__A1__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-112,-56),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void _ZN9S20645C112v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20645C11__8S20645C4__A1__8S20645C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20645C112v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20645C148S20645C9__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-224,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20645C16__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-152,-76),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C69S20645C16__A3__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-168,-84),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
extern void _ZN8S20645C82v1Ev();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev)();
extern void ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20645C59S20645C16__A1__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-184,-92),
  ABISELECT(-96,-48),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D1Ev,_ZTvn16_n32_N8S20645C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n64_N8S20645C4D0Ev,_ZTvn16_n32_N8S20645C4D0Ev),
};
extern void _ZN8S20645C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C4__A1__8S20645C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20645C4[0]),
  (VTBL_ENTRY)&_ZN8S20645C82v1Ev,
};
static  VTT_ENTRY vtt_S20645C1[] = {
  {&(_ZTV8S20645C1[14]),  14,111},
  {&(_ZTV8S20645C1[30]),  30,111},
  {&(_ZTV8S20645C1[43]),  43,111},
  {&(_ZTV8S20645C1[43]),  43,111},
  {&(_ZTV8S20645C1[48]),  48,111},
  {&(_ZTV8S20645C1[14]),  14,111},
  {&(_ZTV8S20645C1[54]),  54,111},
  {&(_ZTV8S20645C1[62]),  62,111},
  {&(_ZTV8S20645C1[37]),  37,111},
  {&(_ZTV8S20645C1[72]),  72,111},
  {&(_ZTV8S20645C1[80]),  80,111},
  {&(_ZTV8S20645C1[86]),  86,111},
  {&(_ZTV8S20645C1[91]),  91,111},
  {&(_ZTV8S20645C1[104]),  104,111},
  {&(_ZTV8S20645C1[111]),  111,111},
  {&(_tg__ZTV8S20645C2__8S20645C1[12]),  12,15},
  {&(_tg__ZTV8S20645C48S20645C2__8S20645C1[11]),  11,14},
  {&(_tg__ZTV8S20645C98S20645C48S20645C2__8S20645C1[9]),  9,12},
  {&(_tg__ZTV8S20645C68S20645C98S20645C48S20645C2__A2__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C98S20645C48S20645C2__A2__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C148S20645C98S20645C48S20645C2__8S20645C1[4]),  4,4},
  {&(_tg__ZTV9S20645C10__8S20645C98S20645C48S20645C2__8S20645C1[7]),  7,8},
  {&(_tg__ZTV8S20645C6__8S20645C98S20645C48S20645C2__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C98S20645C48S20645C2__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C98S20645C48S20645C2__8S20645C1[7]),  7,9},
  {&(_tg__ZTV9S20645C14__8S20645C98S20645C48S20645C2__8S20645C1[4]),  4,4},
  {&(_tg__ZTV8S20645C5__8S20645C48S20645C2__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C5__8S20645C48S20645C2__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C88S20645C5__A1__8S20645C48S20645C2__8S20645C1[2]),  2,3},
  {&(_tg__ZTV9S20645C10__8S20645C48S20645C2__8S20645C1[7]),  7,8},
  {&(_tg__ZTV8S20645C6__A1__8S20645C48S20645C2__8S20645C1[5]),  5,6},
  {&(_tg__ZTV9S20645C11__8S20645C48S20645C2__8S20645C1[7]),  7,9},
  {&(_tg__ZTV9S20645C148S20645C9__8S20645C48S20645C2__8S20645C1[4]),  4,4},
  {&(_tg__ZTV9S20645C16__8S20645C48S20645C2__8S20645C1[8]),  8,11},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C48S20645C2__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C48S20645C2__8S20645C1[5]),  5,8},
  {&(_tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C48S20645C2__8S20645C1[2]),  2,3},
  {&(_tg__ZTV8S20645C5__8S20645C2__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C5__8S20645C2__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C88S20645C5__A1__8S20645C2__8S20645C1[2]),  2,3},
  {&(_tg__ZTV9S20645C10__8S20645C2__8S20645C1[7]),  7,8},
  {&(_tg__ZTV8S20645C6__A1__8S20645C2__8S20645C1[5]),  5,6},
  {&(_tg__ZTV9S20645C11__8S20645C2__8S20645C1[7]),  7,9},
  {&(_tg__ZTV9S20645C148S20645C98S20645C4__8S20645C2__8S20645C1[4]),  4,4},
  {&(_tg__ZTV9S20645C16__8S20645C2__8S20645C1[8]),  8,11},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C2__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C2__8S20645C1[5]),  5,8},
  {&(_tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C2__8S20645C1[2]),  2,3},
  {&(_tg__ZTV8S20645C5__8S20645C1[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C5__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C68S20645C5__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C5__8S20645C1[5]),  5,8},
  {&(_tg__ZTV9S20645C10__8S20645C1[7]),  7,8},
  {&(_tg__ZTV8S20645C6__9S20645C10__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__9S20645C10__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C10__8S20645C1[7]),  7,9},
  {&(_tg__ZTV8S20645C6__A1__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C6__A1__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C1[5]),  5,7},
  {&(_tg__ZTV8S20645C6__9S20645C11__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A1__9S20645C11__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C16__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C69S20645C16__A3__8S20645C1[3]),  3,4},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C1[5]),  5,8},
  {&(_tg__ZTV8S20645C68S20645C59S20645C16__A4__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C59S20645C16__A4__8S20645C1[3]),  3,4},
  {&(_tg__ZTV8S20645C8__8S20645C59S20645C16__A1__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C11__9S20645C16__8S20645C1[7]),  7,9},
  {&(_tg__ZTV8S20645C6__9S20645C16__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__A2__9S20645C16__8S20645C1[3]),  3,4},
  {&(_tg__ZTV8S20645C6__A__9S20645C16__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C5__9S20645C16__8S20645C1[5]),  5,8},
  {&(_tg__ZTV8S20645C4__A1__8S20645C1[11]),  11,14},
  {&(_tg__ZTV8S20645C98S20645C4__A1__8S20645C1[9]),  9,12},
  {&(_tg__ZTV8S20645C68S20645C98S20645C4__A5__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C68S20645C98S20645C4__A5__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C148S20645C98S20645C4__A1__8S20645C1[4]),  4,4},
  {&(_tg__ZTV9S20645C10__8S20645C98S20645C4__A1__8S20645C1[7]),  7,8},
  {&(_tg__ZTV8S20645C6__8S20645C98S20645C4__A1__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C8__8S20645C98S20645C4__A1__8S20645C1[3]),  3,4},
  {&(_tg__ZTV9S20645C11__8S20645C98S20645C4__A1__8S20645C1[7]),  7,9},
  {&(_tg__ZTV9S20645C14__8S20645C98S20645C4__A1__8S20645C1[4]),  4,4},
  {&(_tg__ZTV8S20645C5__8S20645C4__A1__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C5__8S20645C4__A1__8S20645C1[6]),  6,9},
  {&(_tg__ZTV8S20645C88S20645C5__A1__8S20645C4__A1__8S20645C1[2]),  2,3},
  {&(_tg__ZTV9S20645C10__8S20645C4__A1__8S20645C1[7]),  7,8},
  {&(_tg__ZTV8S20645C6__A1__8S20645C4__A1__8S20645C1[5]),  5,6},
  {&(_tg__ZTV9S20645C11__8S20645C4__A1__8S20645C1[7]),  7,9},
  {&(_tg__ZTV9S20645C148S20645C9__8S20645C4__A1__8S20645C1[4]),  4,4},
  {&(_tg__ZTV9S20645C16__8S20645C4__A1__8S20645C1[8]),  8,11},
  {&(_tg__ZTV8S20645C69S20645C16__A3__8S20645C4__A1__8S20645C1[5]),  5,6},
  {&(_tg__ZTV8S20645C59S20645C16__A1__8S20645C4__A1__8S20645C1[5]),  5,8},
  {&(_tg__ZTV8S20645C88S20645C59S20645C16__A4__8S20645C4__A1__8S20645C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S20645C1[];
extern  VTBL_ENTRY _ZTV8S20645C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20645C1[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C2D0Ev,_ZTv0_n32_N8S20645C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20645C2D0Ev,_ZThn72_N8S20645C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C2D1Ev,_ZTv0_n32_N8S20645C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20645C2D1Ev,_ZThn72_N8S20645C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C2D0Ev,_ZTv0_n24_N8S20645C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C2D0Ev,_ZThn40_N8S20645C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C2D1Ev,_ZTv0_n24_N8S20645C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C2D1Ev,_ZThn40_N8S20645C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C4D0Ev,_ZTv0_n32_N8S20645C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20645C4D0Ev,_ZThn72_N8S20645C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C4D1Ev,_ZTv0_n32_N8S20645C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20645C4D1Ev,_ZThn72_N8S20645C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C4D0Ev,_ZTv0_n24_N8S20645C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C4D0Ev,_ZThn40_N8S20645C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C4D1Ev,_ZTv0_n24_N8S20645C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20645C4D1Ev,_ZThn40_N8S20645C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20645C1D0Ev,_ZTv0_n48_N8S20645C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20645C1D0Ev,_ZThn104_N8S20645C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20645C1D1Ev,_ZTv0_n48_N8S20645C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20645C1D1Ev,_ZThn104_N8S20645C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C1D0Ev,_ZTv0_n32_N8S20645C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20645C1D0Ev,_ZThn76_N8S20645C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20645C1D1Ev,_ZTv0_n32_N8S20645C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20645C1D1Ev,_ZThn76_N8S20645C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C1D0Ev,_ZTv0_n24_N8S20645C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20645C1D0Ev,_ZThn44_N8S20645C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20645C1D1Ev,_ZTv0_n24_N8S20645C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20645C1D1Ev,_ZThn44_N8S20645C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20645C1D0Ev,_ZTv0_n52_N8S20645C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20645C1D0Ev,_ZThn4_N8S20645C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20645C1D1Ev,_ZTv0_n52_N8S20645C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20645C1D1Ev,_ZThn4_N8S20645C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20645C1 = {  "S20645C1", // class name
  bases_S20645C1, 38,
  &(vtc_S20645C1[0]), // expected_vtbl_contents
  &(vtt_S20645C1[0]), // expected_vtt_contents
  ABISELECT(280,140), // object size
  NSPAIRA(_ZTI8S20645C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20645C1),111, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20645C1),94, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4927C3  {
  ::S5757C13_nt s4927c3f0;
  unsigned int s4927c3f1:1;
  virtual  ~S4927C3(); // _ZN7S4927C3D1Ev
  virtual void  v3(); // _ZN7S4927C32v3Ev
  virtual void  v4(); // _ZN7S4927C32v4Ev
  virtual void  v5(); // _ZN7S4927C32v5Ev
  virtual void  v6(); // _ZN7S4927C32v6Ev
  virtual void  v7(); // _ZN7S4927C32v7Ev
  virtual void  v8(); // _ZN7S4927C32v8Ev
  virtual void  v9(); // _ZN7S4927C32v9Ev
  S4927C3(); // tgen
};
//SIG(-1 S4927C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S4927C3 ::~S4927C3(){ note_dtor("S4927C3", this);}
void  S4927C3 ::v3(){vfunc_called(this, "_ZN7S4927C32v3Ev");}
void  S4927C3 ::v4(){vfunc_called(this, "_ZN7S4927C32v4Ev");}
void  S4927C3 ::v5(){vfunc_called(this, "_ZN7S4927C32v5Ev");}
void  S4927C3 ::v6(){vfunc_called(this, "_ZN7S4927C32v6Ev");}
void  S4927C3 ::v7(){vfunc_called(this, "_ZN7S4927C32v7Ev");}
void  S4927C3 ::v8(){vfunc_called(this, "_ZN7S4927C32v8Ev");}
void  S4927C3 ::v9(){vfunc_called(this, "_ZN7S4927C32v9Ev");}
S4927C3 ::S4927C3(){ note_ctor("S4927C3", this);} // tgen

static void Test_S4927C3()
{
  extern Class_Descriptor cd_S4927C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S4927C3, buf);
    S4927C3 *dp, &lv = *(dp=new (buf) S4927C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S4927C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4927C3)");
    check_field_offset(lv, s4927c3f0, ABISELECT(8,4), "S4927C3.s4927c3f0");
    set_bf_and_test(lv, s4927c3f1, ABISELECT(32,16), 0, 1, 1, "S4927C3");
    test_class_info(&lv, &cd_S4927C3);
    dp->~S4927C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4927C3(Test_S4927C3, "S4927C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S4927C3C1Ev();
extern void _ZN7S4927C3D1Ev();
Name_Map name_map_S4927C3[] = {
  NSPAIR(_ZN7S4927C3C1Ev),
  NSPAIR(_ZN7S4927C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4927C3[];
extern void _ZN7S4927C3D1Ev();
extern void _ZN7S4927C3D0Ev();
extern void _ZN7S4927C32v3Ev();
extern void _ZN7S4927C32v4Ev();
extern void _ZN7S4927C32v5Ev();
extern void _ZN7S4927C32v6Ev();
extern void _ZN7S4927C32v7Ev();
extern void _ZN7S4927C32v8Ev();
extern void _ZN7S4927C32v9Ev();
static  VTBL_ENTRY vtc_S4927C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4927C3[0]),
  (VTBL_ENTRY)&_ZN7S4927C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4927C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S4927C3[];
extern  VTBL_ENTRY _ZTV7S4927C3[];
Class_Descriptor cd_S4927C3 = {  "S4927C3", // class name
  0,0,//no base classes
  &(vtc_S4927C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S4927C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4927C3),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  S4927C2  : S4927C3 {
  ::S5757C17_nt s4927c2f0;
  ::S5757C17_nt s4927c2f1;
  ::S19894C6_nt s4927c2f2;
  ::S19894C6_nt s4927c2f3;
  ::S19894C6_nt s4927c2f4;
  ::S19894C6_nt s4927c2f5;
  ::S19894C6_nt s4927c2f6;
  ::S5757C20_nt s4927c2f7;
  virtual void  v10(); // _ZN7S4927C23v10Ev
  virtual void  v11(); // _ZN7S4927C23v11Ev
  virtual void  v12(); // _ZN7S4927C23v12Ev
  ~S4927C2(); // tgen
  S4927C2(); // tgen
};
//SIG(-1 S4927C2) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S4927C2 ::v10(){vfunc_called(this, "_ZN7S4927C23v10Ev");}
void  S4927C2 ::v11(){vfunc_called(this, "_ZN7S4927C23v11Ev");}
void  S4927C2 ::v12(){vfunc_called(this, "_ZN7S4927C23v12Ev");}
S4927C2 ::~S4927C2(){ note_dtor("S4927C2", this);} // tgen
S4927C2 ::S4927C2(){ note_ctor("S4927C2", this);} // tgen

static void Test_S4927C2()
{
  extern Class_Descriptor cd_S4927C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S4927C2, buf);
    S4927C2 *dp, &lv = *(dp=new (buf) S4927C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S4927C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4927C2)");
    check_base_class_offset(lv, (S4927C3*), 0, "S4927C2");
    check_field_offset(lv, s4927c2f0, ABISELECT(40,20), "S4927C2.s4927c2f0");
    check_field_offset(lv, s4927c2f1, ABISELECT(304,216), "S4927C2.s4927c2f1");
    check_field_offset(lv, s4927c2f2, ABISELECT(568,412), "S4927C2.s4927c2f2");
    check_field_offset(lv, s4927c2f3, ABISELECT(576,416), "S4927C2.s4927c2f3");
    check_field_offset(lv, s4927c2f4, ABISELECT(584,420), "S4927C2.s4927c2f4");
    check_field_offset(lv, s4927c2f5, ABISELECT(592,424), "S4927C2.s4927c2f5");
    check_field_offset(lv, s4927c2f6, ABISELECT(600,428), "S4927C2.s4927c2f6");
    check_field_offset(lv, s4927c2f7, ABISELECT(608,432), "S4927C2.s4927c2f7");
    test_class_info(&lv, &cd_S4927C2);
    dp->~S4927C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4927C2(Test_S4927C2, "S4927C2", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN7S4927C2C1Ev();
extern void _ZN7S4927C2D1Ev();
Name_Map name_map_S4927C2[] = {
  NSPAIR(_ZN7S4927C2C1Ev),
  NSPAIR(_ZN7S4927C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4927C3;
extern VTBL_ENTRY _ZTI7S4927C3[];
extern  VTBL_ENTRY _ZTV7S4927C3[];
static Base_Class bases_S4927C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4927C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4927C2[];
extern void _ZN7S4927C2D1Ev();
extern void _ZN7S4927C2D0Ev();
extern void _ZN7S4927C32v3Ev();
extern void _ZN7S4927C32v4Ev();
extern void _ZN7S4927C32v5Ev();
extern void _ZN7S4927C32v6Ev();
extern void _ZN7S4927C32v7Ev();
extern void _ZN7S4927C32v8Ev();
extern void _ZN7S4927C32v9Ev();
extern void _ZN7S4927C23v10Ev();
extern void _ZN7S4927C23v11Ev();
extern void _ZN7S4927C23v12Ev();
static  VTBL_ENTRY vtc_S4927C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4927C2[0]),
  (VTBL_ENTRY)&_ZN7S4927C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4927C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v9Ev,
  (VTBL_ENTRY)&_ZN7S4927C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4927C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4927C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S4927C2[];
extern  VTBL_ENTRY _ZTV7S4927C2[];
Class_Descriptor cd_S4927C2 = {  "S4927C2", // class name
  bases_S4927C2, 1,
  &(vtc_S4927C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI7S4927C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4927C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4927C10  : S5757C20_nt {
  ::S5757C23_nt s4927c10f0;
  ::S5757C23_nt s4927c10f1[3];
  ::S5757C23_nt s4927c10f2;
  ::S5757C23_nt s4927c10f3;
  ::S5757C23_nt s4927c10f4[3];
};
//SIG(-1 S4927C10) C1{ BC2{ m FC3{ Fc[3] Fi} Fi[2]} FC4{ m Fp Fc[3] Fi} FC4[3] FC4 FC4 FC4[3]}



static void Test_S4927C10()
{
  extern Class_Descriptor cd_S4927C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S4927C10, buf);
    S4927C10 &lv = *(new (buf) S4927C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S4927C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4927C10)");
    check_base_class_offset(lv, (S5757C20_nt*), 0, "S4927C10");
    check_field_offset(lv, s4927c10f0, 16, "S4927C10.s4927c10f0");
    check_field_offset(lv, s4927c10f1, ABISELECT(32,28), "S4927C10.s4927c10f1");
    check_field_offset(lv, s4927c10f2, ABISELECT(80,64), "S4927C10.s4927c10f2");
    check_field_offset(lv, s4927c10f3, ABISELECT(96,76), "S4927C10.s4927c10f3");
    check_field_offset(lv, s4927c10f4, ABISELECT(112,88), "S4927C10.s4927c10f4");
    test_class_info(&lv, &cd_S4927C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4927C10(Test_S4927C10, "S4927C10", ABISELECT(160,124));

#else // __cplusplus

extern Class_Descriptor cd_S5757C20_nt;
static Base_Class bases_S4927C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5757C20_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S4927C10 = {  "S4927C10", // class name
  bases_S4927C10, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(160,124), // 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  S4927C1  : S4927C2 {
  ::S4927C10 s4927c1f0;
  virtual void  v1(); // _ZN7S4927C12v1Ev
  virtual void  v2(); // _ZN7S4927C12v2Ev
  ~S4927C1(); // tgen
  S4927C1(); // tgen
};
//SIG(1 S4927C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 FC4{ m Fp[3]} Fi:1} v10 v11 v12 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 FC10{ BC8 FC11{ m Fp Fc[3] Fi} FC11[3] FC11 FC11 FC11[3]}}


void  S4927C1 ::v1(){vfunc_called(this, "_ZN7S4927C12v1Ev");}
void  S4927C1 ::v2(){vfunc_called(this, "_ZN7S4927C12v2Ev");}
S4927C1 ::~S4927C1(){ note_dtor("S4927C1", this);} // tgen
S4927C1 ::S4927C1(){ note_ctor("S4927C1", this);} // tgen

static void Test_S4927C1()
{
  extern Class_Descriptor cd_S4927C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(99,144)];
    init_test(&cd_S4927C1, buf);
    S4927C1 *dp, &lv = *(dp=new (buf) S4927C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,572), "sizeof(S4927C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4927C1)");
    check_base_class_offset(lv, (S4927C3*)(S4927C2*), 0, "S4927C1");
    check_base_class_offset(lv, (S4927C2*), 0, "S4927C1");
    check_field_offset(lv, s4927c1f0, ABISELECT(624,448), "S4927C1.s4927c1f0");
    test_class_info(&lv, &cd_S4927C1);
    dp->~S4927C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4927C1(Test_S4927C1, "S4927C1", ABISELECT(784,572));

#else // __cplusplus

extern void _ZN7S4927C1C1Ev();
extern void _ZN7S4927C1D1Ev();
Name_Map name_map_S4927C1[] = {
  NSPAIR(_ZN7S4927C1C1Ev),
  NSPAIR(_ZN7S4927C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4927C3;
extern VTBL_ENTRY _ZTI7S4927C3[];
extern  VTBL_ENTRY _ZTV7S4927C3[];
extern Class_Descriptor cd_S4927C2;
extern VTBL_ENTRY _ZTI7S4927C2[];
extern  VTBL_ENTRY _ZTV7S4927C2[];
static Base_Class bases_S4927C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4927C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4927C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4927C1[];
extern void _ZN7S4927C1D1Ev();
extern void _ZN7S4927C1D0Ev();
extern void _ZN7S4927C32v3Ev();
extern void _ZN7S4927C32v4Ev();
extern void _ZN7S4927C32v5Ev();
extern void _ZN7S4927C32v6Ev();
extern void _ZN7S4927C32v7Ev();
extern void _ZN7S4927C32v8Ev();
extern void _ZN7S4927C32v9Ev();
extern void _ZN7S4927C23v10Ev();
extern void _ZN7S4927C23v11Ev();
extern void _ZN7S4927C23v12Ev();
extern void _ZN7S4927C12v1Ev();
extern void _ZN7S4927C12v2Ev();
static  VTBL_ENTRY vtc_S4927C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4927C1[0]),
  (VTBL_ENTRY)&_ZN7S4927C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4927C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4927C32v9Ev,
  (VTBL_ENTRY)&_ZN7S4927C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4927C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4927C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4927C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4927C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4927C1[];
extern  VTBL_ENTRY _ZTV7S4927C1[];
Class_Descriptor cd_S4927C1 = {  "S4927C1", // class name
  bases_S4927C1, 2,
  &(vtc_S4927C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(784,572), // object size
  NSPAIRA(_ZTI7S4927C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4927C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C5_nt  {
  void *s19139c5f0[6];
  void  mf19139c5(); // _ZN11S19139C5_nt9mf19139c5Ev
};
//SIG(-1 S19139C5_nt) C1{ m Fp[6]}


void  S19139C5_nt ::mf19139c5(){}

//skip512 S19139C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19139C5_nt[];
VTBL_ENTRY *P__ZTI11S19139C5_nt = _ZTI11S19139C5_nt; 
Class_Descriptor cd_S19139C5_nt = {  "S19139C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI11S19139C5_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  S19139C4_nt  : virtual S19139C5_nt {
  __tsi64 s19139c4f0;
  ~S19139C4_nt(); // tgen
  S19139C4_nt(); // tgen
};
//SIG(-1 S19139C4_nt) C1{ VBC2{ m Fp[6]} FL}


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

//skip512 S19139C4_nt

#else // __cplusplus

extern void _ZN11S19139C4_ntC1Ev();
extern void _ZN11S19139C4_ntD1Ev();
Name_Map name_map_S19139C4_nt[] = {
  NSPAIR(_ZN11S19139C4_ntC1Ev),
  NSPAIR(_ZN11S19139C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
static Base_Class bases_S19139C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
static  VTBL_ENTRY vtc_S19139C4_nt[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19139C4_nt[];
static  VTT_ENTRY vtt_S19139C4_nt[] = {
  {&(_ZTV11S19139C4_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
VTBL_ENTRY *P__ZTI11S19139C4_nt = _ZTI11S19139C4_nt; 
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
Class_Descriptor cd_S19139C4_nt = {  "S19139C4_nt", // class name
  bases_S19139C4_nt, 1,
  &(vtc_S19139C4_nt[0]), // expected_vtbl_contents
  &(vtt_S19139C4_nt[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI11S19139C4_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19139C4_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19139C4_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C3_nt  {
  ::S19139C4_nt s19139c3f0;
  void  mf19139c3(); // _ZN11S19139C3_nt9mf19139c3Ev
};
//SIG(-1 S19139C3_nt) C1{ m FC2{ VBC3{ m Fp[6]} FL}}


void  S19139C3_nt ::mf19139c3(){}

//skip512 S19139C3_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19139C3_nt[];
VTBL_ENTRY *P__ZTI11S19139C3_nt = _ZTI11S19139C3_nt; 
Class_Descriptor cd_S19139C3_nt = {  "S19139C3_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI11S19139C3_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  S19139C6_nt  : virtual S19139C5_nt {
  ~S19139C6_nt(); // tgen
  S19139C6_nt(); // tgen
};
//SIG(-1 S19139C6_nt) C1{ VBC2{ m Fp[6]}}


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

//skip512 S19139C6_nt

#else // __cplusplus

extern void _ZN11S19139C6_ntC1Ev();
extern void _ZN11S19139C6_ntD1Ev();
Name_Map name_map_S19139C6_nt[] = {
  NSPAIR(_ZN11S19139C6_ntC1Ev),
  NSPAIR(_ZN11S19139C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
static Base_Class bases_S19139C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S19139C6_nt[];
static  VTBL_ENTRY vtc_S19139C6_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19139C6_nt[];
static  VTT_ENTRY vtt_S19139C6_nt[] = {
  {&(_ZTV11S19139C6_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
VTBL_ENTRY *P__ZTI11S19139C6_nt = _ZTI11S19139C6_nt; 
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
Class_Descriptor cd_S19139C6_nt = {  "S19139C6_nt", // class name
  bases_S19139C6_nt, 1,
  &(vtc_S19139C6_nt[0]), // expected_vtbl_contents
  &(vtt_S19139C6_nt[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI11S19139C6_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19139C6_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19139C6_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C7_nt  {
  __tsi64 s19139c7f0[10];
  void  mf19139c7(); // _ZN11S19139C7_nt9mf19139c7Ev
};
//SIG(-1 S19139C7_nt) C1{ m FL[10]}


void  S19139C7_nt ::mf19139c7(){}

//skip512 S19139C7_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19139C7_nt[];
VTBL_ENTRY *P__ZTI11S19139C7_nt = _ZTI11S19139C7_nt; 
Class_Descriptor cd_S19139C7_nt = {  "S19139C7_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  80, // object size
  NSPAIRA(_ZTI11S19139C7_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  S19139C9_nt  : S19139C5_nt , S19139C4_nt , virtual S19139C6_nt {
  ~S19139C9_nt(); // tgen
  S19139C9_nt(); // tgen
};
//SIG(-1 S19139C9_nt) C1{ BC2{ m Fp[6]} BC3{ VBC2 FL} VBC4{ VBC2}}


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

//skip512 S19139C9_nt

#else // __cplusplus

extern void _ZN11S19139C9_ntC1Ev();
extern void _ZN11S19139C9_ntD1Ev();
Name_Map name_map_S19139C9_nt[] = {
  NSPAIR(_ZN11S19139C9_ntC1Ev),
  NSPAIR(_ZN11S19139C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
static Base_Class bases_S19139C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C5_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19139C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C6_nt,    ABISELECT(112,60), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
static  VTBL_ENTRY vtc_S19139C9_nt[] = {
  ABISELECT(112,60),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19139C9_nt[];
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__11S19139C9_nt[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__11S19139C9_nt[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTT_ENTRY vtt_S19139C9_nt[] = {
  {&(_ZTV11S19139C9_nt[4]),  4,7},
  {&(_tg__ZTV11S19139C4_nt__11S19139C9_nt[3]),  3,3},
  {&(_ZTV11S19139C9_nt[7]),  7,7},
  {&(_tg__ZTV11S19139C6_nt__11S19139C9_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
VTBL_ENTRY *P__ZTI11S19139C9_nt = _ZTI11S19139C9_nt; 
extern  VTBL_ENTRY _ZTV11S19139C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C9_nt[];
Class_Descriptor cd_S19139C9_nt = {  "S19139C9_nt", // class name
  bases_S19139C9_nt, 4,
  &(vtc_S19139C9_nt[0]), // expected_vtbl_contents
  &(vtt_S19139C9_nt[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI11S19139C9_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S19139C9_nt),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19139C9_nt),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  S19139C2  : S19139C3_nt , S19139C6_nt , S19139C7_nt , virtual S21216C26_nt , S19139C9_nt {
  virtual  ~S19139C2(); // _ZN8S19139C2D2Ev
  S19139C2(); // tgen
};
//SIG(-1 S19139C2) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC5{ VBC4} BC6{ m FL[10]} VBC7{ vd m} BC8{ BC4 BC3 VBC5} vd}


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

static void Test_S19139C2()
{
  extern Class_Descriptor cd_S19139C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,48)];
    init_test(&cd_S19139C2, buf);
    S19139C2 *dp, &lv = *(dp=new (buf) S19139C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,188), "sizeof(S19139C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19139C2)");
    check_base_class_offset(lv, (S19139C3_nt*), ABISELECT(8,4), "S19139C2");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*), ABISELECT(216,156), "S19139C2");
    check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*)(S19139C9_nt*), ABISELECT(216,156), "S19139C2");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*), ABISELECT(216,156), "S19139C2");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C6_nt*), 0, "S19139C2");
    check_base_class_offset(lv, (S19139C7_nt*), ABISELECT(72,40), "S19139C2");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(264,180), "S19139C2");
    /*is_ambiguous_... S19139C9_nt::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C9_nt*), ABISELECT(168,132), "S19139C2");
    check_base_class_offset(lv, (S19139C4_nt*)(S19139C9_nt*), ABISELECT(152,120), "S19139C2");
    check_base_class_offset(lv, (S19139C6_nt*)(S19139C9_nt*), ABISELECT(272,184), "S19139C2");
    check_base_class_offset(lv, (S19139C9_nt*), ABISELECT(152,120), "S19139C2");
    test_class_info(&lv, &cd_S19139C2);
    dp->~S19139C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19139C2(Test_S19139C2, "S19139C2", ABISELECT(280,188));

#else // __cplusplus

extern void _ZN8S19139C2C1Ev();
extern void _ZN8S19139C2D2Ev();
Name_Map name_map_S19139C2[] = {
  NSPAIR(_ZN8S19139C2C1Ev),
  NSPAIR(_ZN8S19139C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C9_nt;
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
extern  VTBL_ENTRY _ZTV11S19139C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C9_nt[];
static Base_Class bases_S19139C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C5_nt,    ABISELECT(216,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19139C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C7_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(264,180), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19139C5_nt,    ABISELECT(168,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19139C4_nt,    ABISELECT(152,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19139C6_nt,    ABISELECT(272,184), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19139C9_nt,    ABISELECT(152,120), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19139C2[];
extern void _ZN8S19139C2D1Ev();
extern void _ZN8S19139C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S19139C2D1Ev,_ZThn180_N8S19139C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S19139C2D0Ev,_ZThn180_N8S19139C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19139C2[] = {
  ABISELECT(272,184),
  ABISELECT(264,180),
  ABISELECT(216,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&_ZN8S19139C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19139C2D0Ev,
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  ABISELECT(-264,-180),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
extern VTBL_ENTRY _ZTV8S19139C2[];
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A__8S19139C2[] = {
  ABISELECT(216,156),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt__8S19139C2[] = {
  ABISELECT(120,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt11S19139C9_nt__8S19139C2[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__11S19139C9_nt__8S19139C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__8S19139C2[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTT_ENTRY vtt_S19139C2[] = {
  {&(_ZTV8S19139C2[5]),  5,19},
  {&(_tg__ZTV11S19139C6_nt__A__8S19139C2[3]),  3,3},
  {&(_tg__ZTV11S19139C9_nt__8S19139C2[4]),  4,4},
  {&(_tg__ZTV11S19139C4_nt11S19139C9_nt__8S19139C2[3]),  3,3},
  {&(_tg__ZTV11S19139C6_nt__11S19139C9_nt__8S19139C2[3]),  3,3},
  {&(_ZTV8S19139C2[14]),  14,19},
  {&(_ZTV8S19139C2[11]),  11,19},
  {&(_ZTV8S19139C2[19]),  19,19},
  {&(_tg__ZTV11S19139C6_nt__A1__8S19139C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19139C2[];
extern  VTBL_ENTRY _ZTV8S19139C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19139C2[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19139C2D0Ev,_ZThn180_N8S19139C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19139C2D1Ev,_ZThn180_N8S19139C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19139C2 = {  "S19139C2", // class name
  bases_S19139C2, 9,
  &(vtc_S19139C2[0]), // expected_vtbl_contents
  &(vtt_S19139C2[0]), // expected_vtt_contents
  ABISELECT(280,188), // object size
  NSPAIRA(_ZTI8S19139C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19139C2),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19139C2),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C11_nt  : virtual S19894C30_nt , S19894C17_nt {
  int s19139c11f0:8;
  ~S19139C11_nt(); // tgen
  S19139C11_nt(); // tgen
};
//SIG(-1 S19139C11_nt) C1{ VBC2{ vd m} BC3{ m} Fi:8}


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

//skip512 S19139C11_nt

#else // __cplusplus

extern void _ZN12S19139C11_ntC1Ev();
extern void _ZN12S19139C11_ntD1Ev();
Name_Map name_map_S19139C11_nt[] = {
  NSPAIR(_ZN12S19139C11_ntC1Ev),
  NSPAIR(_ZN12S19139C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
static Base_Class bases_S19139C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C30_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S19139C11_nt[];
extern void _ZN12S19139C11_ntD1Ev();
extern void _ZN12S19139C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19139C11_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19139C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19139C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19139C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTV12S19139C11_nt[];
static  VTT_ENTRY vtt_S19139C11_nt[] = {
  {&(_ZTV12S19139C11_nt[4]),  4,6},
  {&(_ZTV12S19139C11_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI12S19139C11_nt[];
VTBL_ENTRY *P__ZTI12S19139C11_nt = _ZTI12S19139C11_nt; 
extern  VTBL_ENTRY _ZTV12S19139C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19139C11_nt[];
Class_Descriptor cd_S19139C11_nt = {  "S19139C11_nt", // class name
  bases_S19139C11_nt, 2,
  &(vtc_S19139C11_nt[0]), // expected_vtbl_contents
  &(vtt_S19139C11_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI12S19139C11_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S19139C11_nt),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19139C11_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C16_nt  : S19139C3_nt , S19139C5_nt , virtual S19139C4_nt , virtual S19139C7_nt {
  int s19139c16f0;
  ~S19139C16_nt(); // tgen
  S19139C16_nt(); // tgen
};
//SIG(-1 S19139C16_nt) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC4 VBC3 VBC5{ m FL[10]} Fi}


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

//skip512 S19139C16_nt

#else // __cplusplus

extern void _ZN12S19139C16_ntC1Ev();
extern void _ZN12S19139C16_ntD1Ev();
Name_Map name_map_S19139C16_nt[] = {
  NSPAIR(_ZN12S19139C16_ntC1Ev),
  NSPAIR(_ZN12S19139C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
static Base_Class bases_S19139C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C5_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C5_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19139C4_nt,    ABISELECT(128,68), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19139C7_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19139C16_nt[];
static  VTBL_ENTRY vtc_S19139C16_nt[] = {
  ABISELECT(192,104),
  ABISELECT(144,80),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI12S19139C16_nt[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI12S19139C16_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19139C16_nt[];
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__12S19139C16_nt[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTT_ENTRY vtt_S19139C16_nt[] = {
  {&(_ZTV12S19139C16_nt[5]),  5,8},
  {&(_ZTV12S19139C16_nt[8]),  8,8},
  {&(_tg__ZTV11S19139C4_nt__12S19139C16_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19139C16_nt[];
VTBL_ENTRY *P__ZTI12S19139C16_nt = _ZTI12S19139C16_nt; 
extern  VTBL_ENTRY _ZTV12S19139C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19139C16_nt[];
Class_Descriptor cd_S19139C16_nt = {  "S19139C16_nt", // class name
  bases_S19139C16_nt, 5,
  &(vtc_S19139C16_nt[0]), // expected_vtbl_contents
  &(vtt_S19139C16_nt[0]), // expected_vtt_contents
  ABISELECT(272,184), // object size
  NSPAIRA(_ZTI12S19139C16_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S19139C16_nt),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19139C16_nt),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C14  : S19139C2 , virtual S19894C30_nt , virtual S3223C8_nt , virtual S19139C16_nt {
  int s19139c14f0;
  ~S19139C14(); // tgen
  S19139C14(); // tgen
};
//SIG(-1 S19139C14) C1{ BC2{ BC3{ m FC4{ VBC5{ m Fp[6]} FL}} BC6{ VBC5} BC7{ m FL[10]} VBC8{ vd m} BC9{ BC5 BC4 VBC6} vd} VBC10{ vd m} VBC11{ m Fi} VBC12{ BC3 BC5 VBC4 VBC7 Fi} Fi}


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

static void Test_S19139C14()
{
  extern Class_Descriptor cd_S19139C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,91)];
    init_test(&cd_S19139C14, buf);
    S19139C14 *dp, &lv = *(dp=new (buf) S19139C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,360), "sizeof(S19139C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19139C14)");
    check_base_class_offset(lv, (S19139C3_nt*)(S19139C2*), ABISELECT(8,4), "S19139C14");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*)(S19139C2*), ABISELECT(224,160), "S19139C14");
    check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(224,160), "S19139C14");
    /*is_ambiguous_... S19139C14::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*), ABISELECT(224,160), "S19139C14");
    /*is_ambiguous_... S19139C14::S19139C4_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*), ABISELECT(224,160), "S19139C14");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C6_nt*)(S19139C2*), 0, "S19139C14");
    check_base_class_offset(lv, (S19139C7_nt*)(S19139C2*), ABISELECT(72,40), "S19139C14");
    check_base_class_offset(lv, (S21216C26_nt*)(S19139C2*), ABISELECT(272,184), "S19139C14");
    /*is_ambiguous_... S19139C9_nt::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(168,132), "S19139C14");
    check_base_class_offset(lv, (S19139C4_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(152,120), "S19139C14");
    check_base_class_offset(lv, (S19139C6_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(280,188), "S19139C14");
    check_base_class_offset(lv, (S19139C9_nt*)(S19139C2*), ABISELECT(152,120), "S19139C14");
    check_base_class_offset(lv, (S19139C2*), 0, "S19139C14");
    check_base_class_offset(lv, (S19894C30_nt*), ABISELECT(288,192), "S19139C14");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(296,196), "S19139C14");
    check_base_class_offset(lv, (S19139C3_nt*)(S19139C16_nt*), ABISELECT(312,204), "S19139C14");
    /*is_ambiguous_... S19139C16_nt::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C16_nt*), ABISELECT(376,240), "S19139C14");
    check_base_class_offset(lv, (S19139C4_nt*)(S19139C16_nt*), ABISELECT(432,268), "S19139C14");
    check_base_class_offset(lv, (S19139C7_nt*)(S19139C16_nt*), ABISELECT(448,280), "S19139C14");
    check_base_class_offset(lv, (S19139C16_nt*), ABISELECT(304,200), "S19139C14");
    check_field_offset(lv, s19139c14f0, ABISELECT(216,156), "S19139C14.s19139c14f0");
    test_class_info(&lv, &cd_S19139C14);
    dp->~S19139C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19139C14(Test_S19139C14, "S19139C14", ABISELECT(528,360));

#else // __cplusplus

extern void _ZN9S19139C14C1Ev();
extern void _ZN9S19139C14D1Ev();
Name_Map name_map_S19139C14[] = {
  NSPAIR(_ZN9S19139C14C1Ev),
  NSPAIR(_ZN9S19139C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C9_nt;
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
extern  VTBL_ENTRY _ZTV11S19139C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C9_nt[];
extern Class_Descriptor cd_S19139C2;
extern VTBL_ENTRY _ZTI8S19139C2[];
extern  VTBL_ENTRY _ZTV8S19139C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19139C2[];
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S19139C16_nt;
extern VTBL_ENTRY _ZTI12S19139C16_nt[];
extern  VTBL_ENTRY _ZTV12S19139C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19139C16_nt[];
static Base_Class bases_S19139C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19139C5_nt,    ABISELECT(224,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19139C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19139C7_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(272,184), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19139C5_nt,    ABISELECT(168,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19139C4_nt,    ABISELECT(152,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19139C6_nt,    ABISELECT(280,188), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19139C9_nt,    ABISELECT(152,120), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19139C2,    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_S19894C30_nt,    ABISELECT(288,192), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3223C8_nt,    ABISELECT(296,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19139C3_nt,    ABISELECT(312,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19139C5_nt,    ABISELECT(376,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19139C4_nt,    ABISELECT(432,268), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19139C7_nt,    ABISELECT(448,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
    16, //immediately_derived
  0, 1},
  {&cd_S19139C16_nt,    ABISELECT(304,200), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19139C14[];
extern void _ZN9S19139C14D1Ev();
extern void _ZN9S19139C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev)();
extern void ABISELECT(_ZThn272_N9S19139C14D1Ev,_ZThn184_N9S19139C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev)();
extern void ABISELECT(_ZThn272_N9S19139C14D0Ev,_ZThn184_N9S19139C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev)();
extern void ABISELECT(_ZThn288_N9S19139C14D1Ev,_ZThn192_N9S19139C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev)();
extern void ABISELECT(_ZThn288_N9S19139C14D0Ev,_ZThn192_N9S19139C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19139C14[] = {
  ABISELECT(448,280),
  ABISELECT(432,268),
  ABISELECT(304,200),
  ABISELECT(296,196),
  ABISELECT(288,192),
  ABISELECT(280,188),
  ABISELECT(272,184),
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  (VTBL_ENTRY)&_ZN9S19139C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19139C14D0Ev,
  ABISELECT(128,68),
  ABISELECT(72,40),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  ABISELECT(-288,-192),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev),
  ABISELECT(144,80),
  ABISELECT(-80,-40),
  ABISELECT(128,68),
  ABISELECT(-304,-200),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  ABISELECT(-208,-108),
  ABISELECT(-432,-268),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
};
extern VTBL_ENTRY _ZTV9S19139C14[];
extern void _ZN8S19139C2D1Ev();
extern void _ZN8S19139C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19139C2__9S19139C14[] = {
  ABISELECT(280,188),
  ABISELECT(272,184),
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&_ZN8S19139C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19139C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt8S19139C2__9S19139C14[] = {
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt8S19139C2__9S19139C14[] = {
  ABISELECT(128,68),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt11S19139C9_nt8S19139C2__9S19139C14[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__11S19139C9_nt8S19139C2__9S19139C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S19139C2D1Ev,_ZThn184_N8S19139C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S19139C2D0Ev,_ZThn184_N8S19139C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19139C2__9S19139C14[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt__8S19139C2__9S19139C14[] = {
  ABISELECT(128,68),
  ABISELECT(72,40),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__8S19139C2__9S19139C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__9S19139C14[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19139C16_nt__9S19139C14[] = {
  ABISELECT(144,80),
  ABISELECT(-80,-40),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI12S19139C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__12S19139C16_nt__9S19139C14[] = {
  ABISELECT(-208,-108),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI12S19139C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__A1__9S19139C14[] = {
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTT_ENTRY vtt_S19139C14[] = {
  {&(_ZTV9S19139C14[10]),  10,37},
  {&(_tg__ZTV8S19139C2__9S19139C14[5]),  5,7},
  {&(_tg__ZTV11S19139C6_nt8S19139C2__9S19139C14[3]),  3,3},
  {&(_tg__ZTV11S19139C9_nt8S19139C2__9S19139C14[4]),  4,4},
  {&(_tg__ZTV11S19139C4_nt11S19139C9_nt8S19139C2__9S19139C14[3]),  3,3},
  {&(_tg__ZTV11S19139C6_nt__11S19139C9_nt8S19139C2__9S19139C14[3]),  3,3},
  {&(_tg__ZTV12S21216C26_nt__8S19139C2__9S19139C14[3]),  3,5},
  {&(_tg__ZTV11S19139C9_nt__8S19139C2__9S19139C14[4]),  4,4},
  {&(_tg__ZTV11S19139C6_nt__A1__8S19139C2__9S19139C14[3]),  3,3},
  {&(_ZTV9S19139C14[19]),  19,37},
  {&(_ZTV9S19139C14[16]),  16,37},
  {&(_ZTV9S19139C14[24]),  24,37},
  {&(_ZTV9S19139C14[27]),  27,37},
  {&(_ZTV9S19139C14[34]),  34,37},
  {&(_ZTV9S19139C14[37]),  37,37},
  {&(_tg__ZTV11S19139C6_nt__A1__9S19139C14[3]),  3,3},
  {&(_tg__ZTV12S19139C16_nt__9S19139C14[5]),  5,5},
  {&(_tg__ZTV11S19139C4_nt__12S19139C16_nt__9S19139C14[3]),  3,3},
  {&(_tg__ZTV11S19139C4_nt__A1__9S19139C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19139C14[];
extern  VTBL_ENTRY _ZTV9S19139C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19139C14[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19139C2D0Ev,_ZThn184_N8S19139C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19139C2D1Ev,_ZThn184_N8S19139C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19139C14D0Ev,_ZThn192_N9S19139C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19139C14D0Ev,_ZThn184_N9S19139C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19139C14D1Ev,_ZThn192_N9S19139C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19139C14D1Ev,_ZThn184_N9S19139C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19139C14 = {  "S19139C14", // class name
  bases_S19139C14, 17,
  &(vtc_S19139C14[0]), // expected_vtbl_contents
  &(vtt_S19139C14[0]), // expected_vtt_contents
  ABISELECT(528,360), // object size
  NSPAIRA(_ZTI9S19139C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19139C14),37, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19139C14),19, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19139C17_nt  : S19139C3_nt {
};
//SIG(1 S19139C17_nt) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}}}



//skip512 S19139C17_nt

#else // __cplusplus

extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
static Base_Class bases_S19139C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S19139C1  : virtual S19139C2 , S19894C34 , virtual S19139C11_nt , S19139C9_nt , S19139C14 {
  ::S19139C17_nt s19139c1f0[5];
  virtual  ~S19139C1(); // _ZN8S19139C1D2Ev
  S19139C1(); // tgen
};
//SIG(1 S19139C1) C1{ VBC2{ BC3{ m FC4{ VBC5{ m Fp[6]} FL}} BC6{ VBC5} BC7{ m FL[10]} VBC8{ vd m} BC9{ BC5 BC4 VBC6} vd} BC10{ m} VBC11{ VBC12{ vd m} BC13{ m} Fi:8} BC9 BC14{ BC2 VBC12 VBC15{ m Fi} VBC16{ BC3 BC5 VBC4 VBC7 Fi} Fi} vd FC17{ BC3}[5]}


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

static void Test_S19139C1()
{
  extern Class_Descriptor cd_S19139C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(142,185)];
    init_test(&cd_S19139C1, buf);
    S19139C1 *dp, &lv = *(dp=new (buf) S19139C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1128,736), "sizeof(S19139C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19139C1)");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C3_nt*)(S19139C2*), ABISELECT(616,380), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*)(S19139C2*), ABISELECT(824,532), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(824,532), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*), ABISELECT(824,532), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C9_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*)(S19139C9_nt*), ABISELECT(824,532), "S19139C1");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C6_nt*)(S19139C2*)(S19139C14*), ABISELECT(824,532), "S19139C1");
    check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*)(S19139C9_nt*)(S19139C2*)(S19139C14*), ABISELECT(824,532), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C4_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C4_nt*), ABISELECT(824,532), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C6_nt*)(S19139C2*), ABISELECT(608,376), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C7_nt*)(S19139C2*), ABISELECT(680,416), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19139C2*), ABISELECT(872,556), "S19139C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19139C2*)(S19139C14*), ABISELECT(872,556), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(776,508), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C4_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(760,496), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C6_nt*)(S19139C9_nt*)(S19139C2*), ABISELECT(880,560), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C9_nt */ AMB_check_base_class_offset(lv, (S19139C6_nt*)(S19139C9_nt*), ABISELECT(880,560), "S19139C1");
    check_base_class_offset(lv, (S19139C6_nt*)(S19139C9_nt*)(S19139C2*)(S19139C14*), ABISELECT(880,560), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C9_nt*)(S19139C2*), ABISELECT(760,496), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C2 */ AMB_check_base_class_offset(lv, (S19139C2*), ABISELECT(608,376), "S19139C1");
    check_base_class_offset(lv, (S19894C34*), 0, "S19139C1");
    check_base_class_offset(lv, (S19894C30_nt*)(S19139C11_nt*), ABISELECT(888,564), "S19139C1");
    check_base_class_offset(lv, (S19894C30_nt*)(S19139C14*), ABISELECT(888,564), "S19139C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19139C11_nt*), ABISELECT(888,564), "S19139C1");
    check_base_class_offset(lv, (S19139C11_nt*), ABISELECT(888,564), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C9_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C9_nt*), ABISELECT(16,12), "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C9_nt */ AMB_check_base_class_offset(lv, (S19139C4_nt*)(S19139C9_nt*), 0, "S19139C1");
    /*is_ambiguous_... S19139C1::S19139C9_nt */ AMB_check_base_class_offset(lv, (S19139C9_nt*), 0, "S19139C1");
    check_base_class_offset(lv, (S19139C3_nt*)(S19139C2*)(S19139C14*), ABISELECT(72,40), "S19139C1");
    /*is_ambiguous_... S19139C2::S19139C6_nt */ AMB_check_base_class_offset(lv, (S19139C6_nt*)(S19139C2*)(S19139C14*), ABISELECT(64,36), "S19139C1");
    check_base_class_offset(lv, (S19139C7_nt*)(S19139C2*)(S19139C14*), ABISELECT(136,76), "S19139C1");
    /*is_ambiguous_... S19139C9_nt::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C9_nt*)(S19139C2*)(S19139C14*), ABISELECT(232,168), "S19139C1");
    check_base_class_offset(lv, (S19139C4_nt*)(S19139C9_nt*)(S19139C2*)(S19139C14*), ABISELECT(216,156), "S19139C1");
    check_base_class_offset(lv, (S19139C9_nt*)(S19139C2*)(S19139C14*), ABISELECT(216,156), "S19139C1");
    check_base_class_offset(lv, (S19139C2*)(S19139C14*), ABISELECT(64,36), "S19139C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S19139C14*), ABISELECT(900,572), "S19139C1");
    check_base_class_offset(lv, (S19139C3_nt*)(S19139C16_nt*), ABISELECT(912,580), "S19139C1");
    /*is_ambiguous_... S19139C16_nt::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S19139C16_nt*), ABISELECT(976,616), "S19139C1");
    check_base_class_offset(lv, (S19139C4_nt*)(S19139C16_nt*), ABISELECT(1032,644), "S19139C1");
    check_base_class_offset(lv, (S19139C7_nt*)(S19139C16_nt*), ABISELECT(1048,656), "S19139C1");
    check_base_class_offset(lv, (S19139C16_nt*)(S19139C14*), ABISELECT(904,576), "S19139C1");
    check_base_class_offset(lv, (S19139C14*), ABISELECT(64,36), "S19139C1");
    check_field_offset(lv, s19139c1f0, ABISELECT(288,196), "S19139C1.s19139c1f0");
    test_class_info(&lv, &cd_S19139C1);
    dp->~S19139C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19139C1(Test_S19139C1, "S19139C1", ABISELECT(1128,736));

#else // __cplusplus

extern void _ZN8S19139C1C1Ev();
extern void _ZN8S19139C1D2Ev();
Name_Map name_map_S19139C1[] = {
  NSPAIR(_ZN8S19139C1C1Ev),
  NSPAIR(_ZN8S19139C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C9_nt;
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
extern  VTBL_ENTRY _ZTV11S19139C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C9_nt[];
extern Class_Descriptor cd_S19139C2;
extern VTBL_ENTRY _ZTI8S19139C2[];
extern  VTBL_ENTRY _ZTV8S19139C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19139C2[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C30_nt;
extern VTBL_ENTRY _ZTI12S19894C30_nt[];
extern  VTBL_ENTRY _ZTV12S19894C30_nt[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19139C11_nt;
extern VTBL_ENTRY _ZTI12S19139C11_nt[];
extern  VTBL_ENTRY _ZTV12S19139C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19139C11_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C9_nt;
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
extern  VTBL_ENTRY _ZTV11S19139C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C9_nt[];
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C6_nt;
extern VTBL_ENTRY _ZTI11S19139C6_nt[];
extern  VTBL_ENTRY _ZTV11S19139C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C6_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C9_nt;
extern VTBL_ENTRY _ZTI11S19139C9_nt[];
extern  VTBL_ENTRY _ZTV11S19139C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C9_nt[];
extern Class_Descriptor cd_S19139C2;
extern VTBL_ENTRY _ZTI8S19139C2[];
extern  VTBL_ENTRY _ZTV8S19139C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19139C2[];
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C4_nt;
extern VTBL_ENTRY _ZTI11S19139C4_nt[];
extern  VTBL_ENTRY _ZTV11S19139C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19139C4_nt[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S19139C16_nt;
extern VTBL_ENTRY _ZTI12S19139C16_nt[];
extern  VTBL_ENTRY _ZTV12S19139C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19139C16_nt[];
extern Class_Descriptor cd_S19139C14;
extern VTBL_ENTRY _ZTI9S19139C14[];
extern  VTBL_ENTRY _ZTV9S19139C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19139C14[];
static Base_Class bases_S19139C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C3_nt,    ABISELECT(616,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
    9, //immediately_derived
  0, 0},
  {&cd_S19139C5_nt,    ABISELECT(824,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19139C6_nt,    ABISELECT(608,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19139C7_nt,    ABISELECT(680,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
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(872,556), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19139C5_nt,    ABISELECT(776,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19139C4_nt,    ABISELECT(760,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19139C6_nt,    ABISELECT(880,560), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19139C9_nt,    ABISELECT(760,496), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19139C2,    ABISELECT(608,376), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C30_nt,    ABISELECT(888,564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19894C17_nt,    ABISELECT(888,564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19139C11_nt,    ABISELECT(888,564), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19139C5_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
    16, //immediately_derived
  0, 0},
  {&cd_S19139C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19139C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C3_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19139C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19139C7_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19139C5_nt,    ABISELECT(232,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19139C4_nt,    ABISELECT(216,156), //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
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19139C9_nt,    ABISELECT(216,156), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19139C2,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3223C8_nt,    ABISELECT(900,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19139C3_nt,    ABISELECT(912,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19139C5_nt,    ABISELECT(976,616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19139C4_nt,    ABISELECT(1032,644), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19139C7_nt,    ABISELECT(1048,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
    29, //immediately_derived
  0, 1},
  {&cd_S19139C16_nt,    ABISELECT(904,576), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19139C14,    ABISELECT(64,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19139C1[];
extern void _ZN8S19139C1D1Ev();
extern void _ZN8S19139C1D0Ev();
extern void ABISELECT(_ZThn64_N8S19139C1D1Ev,_ZThn36_N8S19139C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19139C1D0Ev,_ZThn36_N8S19139C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19139C1D1Ev,_ZTv0_n24_N8S19139C1D1Ev)();
extern void ABISELECT(_ZThn608_N8S19139C1D1Ev,_ZThn376_N8S19139C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19139C1D0Ev,_ZTv0_n24_N8S19139C1D0Ev)();
extern void ABISELECT(_ZThn608_N8S19139C1D0Ev,_ZThn376_N8S19139C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C1D1Ev,_ZTv0_n12_N8S19139C1D1Ev)();
extern void ABISELECT(_ZThn872_N8S19139C1D1Ev,_ZThn556_N8S19139C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C1D0Ev,_ZTv0_n12_N8S19139C1D0Ev)();
extern void ABISELECT(_ZThn872_N8S19139C1D0Ev,_ZThn556_N8S19139C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C1D1Ev,_ZTv0_n12_N8S19139C1D1Ev)();
extern void ABISELECT(_ZThn888_N8S19139C1D1Ev,_ZThn564_N8S19139C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C1D0Ev,_ZTv0_n12_N8S19139C1D0Ev)();
extern void ABISELECT(_ZThn888_N8S19139C1D0Ev,_ZThn564_N8S19139C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19139C1[] = {
  ABISELECT(1048,656),
  ABISELECT(1032,644),
  ABISELECT(904,576),
  ABISELECT(900,572),
  ABISELECT(888,564),
  ABISELECT(888,564),
  ABISELECT(872,556),
  ABISELECT(608,376),
  ABISELECT(880,560),
  ABISELECT(824,532),
  0,
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  (VTBL_ENTRY)&_ZN8S19139C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19139C1D0Ev,
  ABISELECT(984,620),
  ABISELECT(968,608),
  ABISELECT(840,540),
  ABISELECT(836,536),
  ABISELECT(824,528),
  ABISELECT(816,524),
  ABISELECT(808,520),
  ABISELECT(760,496),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19139C1D1Ev,_ZThn36_N8S19139C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19139C1D0Ev,_ZThn36_N8S19139C1D0Ev),
  ABISELECT(664,404),
  ABISELECT(608,376),
  ABISELECT(-216,-156),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  ABISELECT(-608,-376),
  ABISELECT(272,184),
  ABISELECT(264,180),
  ABISELECT(216,156),
  ABISELECT(-608,-376),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19139C1D1Ev,_ZTv0_n24_N8S19139C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19139C1D0Ev,_ZTv0_n24_N8S19139C1D0Ev),
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(-760,-496),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  ABISELECT(-872,-556),
  ABISELECT(-872,-556),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C1D1Ev,_ZTv0_n12_N8S19139C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C1D0Ev,_ZTv0_n12_N8S19139C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-880,-560),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  0,
  ABISELECT(-888,-564),
  ABISELECT(-888,-564),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C1D1Ev,_ZTv0_n12_N8S19139C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C1D0Ev,_ZTv0_n12_N8S19139C1D0Ev),
  ABISELECT(144,80),
  ABISELECT(-80,-44),
  ABISELECT(128,68),
  ABISELECT(-904,-576),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
  ABISELECT(-208,-112),
  ABISELECT(-1032,-644),
  (VTBL_ENTRY)&(_ZTI8S19139C1[0]),
};
extern VTBL_ENTRY _ZTV8S19139C1[];
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt__A1__8S19139C1[] = {
  ABISELECT(880,560),
  ABISELECT(824,532),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt11S19139C9_nt__A1__8S19139C1[] = {
  ABISELECT(824,532),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__11S19139C9_nt__A1__8S19139C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-880,-560),
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
extern void _ZN9S19139C14D1Ev();
extern void _ZN9S19139C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19139C14__8S19139C1[] = {
  ABISELECT(984,620),
  ABISELECT(968,608),
  ABISELECT(840,540),
  ABISELECT(836,536),
  ABISELECT(824,528),
  ABISELECT(816,524),
  ABISELECT(808,520),
  ABISELECT(760,496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  (VTBL_ENTRY)&_ZN9S19139C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19139C14D0Ev,
};
extern void _ZN8S19139C2D1Ev();
extern void _ZN8S19139C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19139C29S19139C14__A1__8S19139C1[] = {
  ABISELECT(816,524),
  ABISELECT(808,520),
  ABISELECT(760,496),
  0,
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&_ZN8S19139C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19139C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt8S19139C29S19139C14__A2__8S19139C1[] = {
  ABISELECT(760,496),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt8S19139C29S19139C14__A2__8S19139C1[] = {
  ABISELECT(664,404),
  ABISELECT(608,376),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt11S19139C9_nt8S19139C29S19139C14__A2__8S19139C1[] = {
  ABISELECT(608,376),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__11S19139C9_nt8S19139C29S19139C14__A2__8S19139C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-664,-404),
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev)();
extern void ABISELECT(_ZThn808_N8S19139C2D1Ev,_ZThn520_N8S19139C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev)();
extern void ABISELECT(_ZThn808_N8S19139C2D0Ev,_ZThn520_N8S19139C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19139C29S19139C14__A1__8S19139C1[] = {
  ABISELECT(-808,-520),
  ABISELECT(-808,-520),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt__8S19139C29S19139C14__A1__8S19139C1[] = {
  ABISELECT(664,404),
  ABISELECT(608,376),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__8S19139C29S19139C14__A1__8S19139C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-816,-524),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
extern void ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev)();
extern void ABISELECT(_ZThn808_N9S19139C14D1Ev,_ZThn520_N9S19139C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev)();
extern void ABISELECT(_ZThn808_N9S19139C14D0Ev,_ZThn520_N9S19139C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19139C14__8S19139C1[] = {
  ABISELECT(-808,-520),
  ABISELECT(-808,-520),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt8S19139C2__9S19139C14__8S19139C1[] = {
  ABISELECT(664,404),
  ABISELECT(608,376),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__9S19139C14__8S19139C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-816,-524),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
};
extern void ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev)();
extern void ABISELECT(_ZThn824_N9S19139C14D1Ev,_ZThn528_N9S19139C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev)();
extern void ABISELECT(_ZThn824_N9S19139C14D0Ev,_ZThn528_N9S19139C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19894C30_nt__9S19139C14__8S19139C1[] = {
  ABISELECT(-824,-528),
  ABISELECT(-824,-528),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S19139C16_nt__9S19139C14__8S19139C1[] = {
  ABISELECT(144,80),
  ABISELECT(-80,-44),
  ABISELECT(128,68),
  ABISELECT(-840,-540),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__A1__9S19139C14__8S19139C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-968,-608),
  (VTBL_ENTRY)&(_ZTI9S19139C14[0]),
};
extern void _ZN8S19139C2D1Ev();
extern void _ZN8S19139C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19139C2__8S19139C1[] = {
  ABISELECT(272,184),
  ABISELECT(264,180),
  ABISELECT(216,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&_ZN8S19139C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19139C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt8S19139C2__8S19139C1[] = {
  ABISELECT(216,156),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt8S19139C2__8S19139C1[] = {
  ABISELECT(120,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt11S19139C9_nt8S19139C2__8S19139C1[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__11S19139C9_nt8S19139C2__8S19139C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI11S19139C9_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S19139C2D1Ev,_ZThn180_N8S19139C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S19139C2D0Ev,_ZThn180_N8S19139C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19139C2__8S19139C1[] = {
  ABISELECT(-264,-180),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19139C9_nt__8S19139C2__8S19139C1[] = {
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__8S19139C2__8S19139C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S19139C2[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C6_nt__A1__8S19139C1[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C6_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N12S19139C11_ntD1Ev,_ZTv0_n12_N12S19139C11_ntD1Ev)();
extern void _ZN12S19139C11_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S19139C11_ntD0Ev,_ZTv0_n12_N12S19139C11_ntD0Ev)();
extern void _ZN12S19139C11_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19139C11_nt__8S19139C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19139C11_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S19139C11_ntD1Ev,_ZTv0_n12_N12S19139C11_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S19139C11_ntD0Ev,_ZTv0_n12_N12S19139C11_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S19139C16_nt__8S19139C1[] = {
  ABISELECT(144,80),
  ABISELECT(-80,-44),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI12S19139C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__12S19139C16_nt__8S19139C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI12S19139C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19139C4_nt__A3__8S19139C1[] = {
  ABISELECT(-208,-112),
  0,
  (VTBL_ENTRY)&(_ZTI11S19139C4_nt[0]),
};
static  VTT_ENTRY vtt_S19139C1[] = {
  {&(_ZTV8S19139C1[12]),  12,64},
  {&(_tg__ZTV11S19139C9_nt__A1__8S19139C1[4]),  4,4},
  {&(_tg__ZTV11S19139C4_nt11S19139C9_nt__A1__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C6_nt__11S19139C9_nt__A1__8S19139C1[3]),  3,3},
  {&(_tg__ZTV9S19139C14__8S19139C1[10]),  10,12},
  {&(_tg__ZTV8S19139C29S19139C14__A1__8S19139C1[5]),  5,7},
  {&(_tg__ZTV11S19139C6_nt8S19139C29S19139C14__A2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C9_nt8S19139C29S19139C14__A2__8S19139C1[4]),  4,4},
  {&(_tg__ZTV11S19139C4_nt11S19139C9_nt8S19139C29S19139C14__A2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C6_nt__11S19139C9_nt8S19139C29S19139C14__A2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV12S21216C26_nt__8S19139C29S19139C14__A1__8S19139C1[3]),  3,5},
  {&(_tg__ZTV11S19139C9_nt__8S19139C29S19139C14__A1__8S19139C1[4]),  4,4},
  {&(_tg__ZTV11S19139C6_nt__A1__8S19139C29S19139C14__A1__8S19139C1[3]),  3,3},
  {&(_tg__ZTV12S21216C26_nt__9S19139C14__8S19139C1[3]),  3,5},
  {&(_tg__ZTV11S19139C9_nt8S19139C2__9S19139C14__8S19139C1[4]),  4,4},
  {&(_tg__ZTV11S19139C6_nt__A1__9S19139C14__8S19139C1[3]),  3,3},
  {&(_tg__ZTV12S19894C30_nt__9S19139C14__8S19139C1[3]),  3,5},
  {&(_tg__ZTV12S19139C16_nt__9S19139C14__8S19139C1[5]),  5,5},
  {&(_tg__ZTV11S19139C4_nt__A1__9S19139C14__8S19139C1[3]),  3,3},
  {&(_ZTV8S19139C1[36]),  36,64},
  {&(_ZTV8S19139C1[45]),  45,64},
  {&(_ZTV8S19139C1[42]),  42,64},
  {&(_ZTV8S19139C1[50]),  50,64},
  {&(_ZTV8S19139C1[54]),  54,64},
  {&(_ZTV8S19139C1[54]),  54,64},
  {&(_ZTV8S19139C1[24]),  24,64},
  {&(_ZTV8S19139C1[30]),  30,64},
  {&(_ZTV8S19139C1[61]),  61,64},
  {&(_ZTV8S19139C1[64]),  64,64},
  {&(_tg__ZTV8S19139C2__8S19139C1[5]),  5,7},
  {&(_tg__ZTV11S19139C6_nt8S19139C2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C9_nt8S19139C2__8S19139C1[4]),  4,4},
  {&(_tg__ZTV11S19139C4_nt11S19139C9_nt8S19139C2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C6_nt__11S19139C9_nt8S19139C2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV12S21216C26_nt__8S19139C2__8S19139C1[3]),  3,5},
  {&(_tg__ZTV11S19139C9_nt__8S19139C2__8S19139C1[4]),  4,4},
  {&(_tg__ZTV11S19139C6_nt__A1__8S19139C2__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C6_nt__A1__8S19139C1[3]),  3,3},
  {&(_tg__ZTV12S19139C11_nt__8S19139C1[4]),  4,6},
  {&(_tg__ZTV12S19139C11_nt__8S19139C1[4]),  4,6},
  {&(_tg__ZTV12S19139C16_nt__8S19139C1[5]),  5,5},
  {&(_tg__ZTV11S19139C4_nt__12S19139C16_nt__8S19139C1[3]),  3,3},
  {&(_tg__ZTV11S19139C4_nt__A3__8S19139C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19139C1[];
extern  VTBL_ENTRY _ZTV8S19139C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19139C1[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S19139C11_ntD0Ev,_ZTv0_n12_N12S19139C11_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S19139C11_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S19139C11_ntD1Ev,_ZTv0_n12_N12S19139C11_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S19139C11_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19139C14D0Ev,_ZTv0_n12_N9S19139C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19139C14D0Ev,_ZThn528_N9S19139C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N9S19139C14D0Ev,_ZThn520_N9S19139C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19139C14D1Ev,_ZTv0_n12_N9S19139C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19139C14D1Ev,_ZThn528_N9S19139C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N9S19139C14D1Ev,_ZThn520_N9S19139C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C2D0Ev,_ZTv0_n12_N8S19139C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19139C2D0Ev,_ZThn180_N8S19139C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S19139C2D0Ev,_ZThn520_N8S19139C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C2D1Ev,_ZTv0_n12_N8S19139C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19139C2D1Ev,_ZThn180_N8S19139C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S19139C2D1Ev,_ZThn520_N8S19139C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C1D0Ev,_ZTv0_n12_N8S19139C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn888_N8S19139C1D0Ev,_ZThn564_N8S19139C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn872_N8S19139C1D0Ev,_ZThn556_N8S19139C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19139C1D1Ev,_ZTv0_n12_N8S19139C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn888_N8S19139C1D1Ev,_ZThn564_N8S19139C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn872_N8S19139C1D1Ev,_ZThn556_N8S19139C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19139C1D0Ev,_ZTv0_n24_N8S19139C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S19139C1D0Ev,_ZThn376_N8S19139C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19139C1D1Ev,_ZTv0_n24_N8S19139C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S19139C1D1Ev,_ZThn376_N8S19139C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19139C1 = {  "S19139C1", // class name
  bases_S19139C1, 31,
  &(vtc_S19139C1[0]), // expected_vtbl_contents
  &(vtt_S19139C1[0]), // expected_vtt_contents
  ABISELECT(1128,736), // object size
  NSPAIRA(_ZTI8S19139C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19139C1),64, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19139C1),43, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C4  : S19894C34 {
  int s5721c4f0;
};
//SIG(-1 S5721C4) C1{ BC2{ m} Fi}



static void Test_S5721C4()
{
  extern Class_Descriptor cd_S5721C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S5721C4, buf);
    S5721C4 &lv = *(new (buf) S5721C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S5721C4)");
    check2(__alignof__(lv), 4, "__alignof__(S5721C4)");
    check_base_class_offset(lv, (S19894C34*), 0, "S5721C4");
    check_field_offset(lv, s5721c4f0, 0, "S5721C4.s5721c4f0");
    test_class_info(&lv, &cd_S5721C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C4(Test_S5721C4, "S5721C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S5721C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5721C4[];
Class_Descriptor cd_S5721C4 = {  "S5721C4", // class name
  bases_S5721C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S5721C4),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  S5721C7  : S21216C26_nt , virtual S19894C34 {
  int s5721c7f0;
  virtual  ~S5721C7(); // _ZN7S5721C7D2Ev
  S5721C7(); // tgen
};
//SIG(-1 S5721C7) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S5721C7()
{
  extern Class_Descriptor cd_S5721C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S5721C7, buf);
    S5721C7 *dp, &lv = *(dp=new (buf) S5721C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5721C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C7)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S5721C7");
    check_base_class_offset(lv, (S19894C34*), 0, "S5721C7");
    check_field_offset(lv, s5721c7f0, ABISELECT(8,4), "S5721C7.s5721c7f0");
    test_class_info(&lv, &cd_S5721C7);
    dp->~S5721C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C7(Test_S5721C7, "S5721C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S5721C7C1Ev();
extern void _ZN7S5721C7D2Ev();
Name_Map name_map_S5721C7[] = {
  NSPAIR(_ZN7S5721C7C1Ev),
  NSPAIR(_ZN7S5721C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S5721C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5721C7[];
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY vtc_S5721C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S5721C7[];
static  VTT_ENTRY vtt_S5721C7[] = {
  {&(_ZTV7S5721C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
Class_Descriptor cd_S5721C7 = {  "S5721C7", // class name
  bases_S5721C7, 2,
  &(vtc_S5721C7[0]), // expected_vtbl_contents
  &(vtt_S5721C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S5721C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5721C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5721C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C11  : virtual S19894C34 , S5721C7 , S21216C26_nt {
  long s5721c11f0;
  ~S5721C11(); // tgen
  S5721C11(); // tgen
};
//SIG(-1 S5721C11) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S5721C11()
{
  extern Class_Descriptor cd_S5721C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S5721C11, buf);
    S5721C11 *dp, &lv = *(dp=new (buf) S5721C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5721C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C11)");
    check_base_class_offset(lv, (S19894C34*), 0, "S5721C11");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*), 0, "S5721C11");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), 0, "S5721C11");
    check_base_class_offset(lv, (S5721C7*), 0, "S5721C11");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S5721C11");
    check_field_offset(lv, s5721c11f0, ABISELECT(24,12), "S5721C11.s5721c11f0");
    test_class_info(&lv, &cd_S5721C11);
    dp->~S5721C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C11(Test_S5721C11, "S5721C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S5721C11C1Ev();
extern void _ZN8S5721C11D1Ev();
Name_Map name_map_S5721C11[] = {
  NSPAIR(_ZN8S5721C11C1Ev),
  NSPAIR(_ZN8S5721C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S5721C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5721C7,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI8S5721C11[];
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
extern void ABISELECT(_ZThn16_N8S5721C11D1Ev,_ZThn8_N8S5721C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S5721C11D0Ev,_ZThn8_N8S5721C11D0Ev)();
static  VTBL_ENTRY vtc_S5721C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S5721C11D1Ev,_ZThn8_N8S5721C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S5721C11D0Ev,_ZThn8_N8S5721C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S5721C11[];
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__8S5721C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
static  VTT_ENTRY vtt_S5721C11[] = {
  {&(_ZTV8S5721C11[3]),  3,9},
  {&(_tg__ZTV7S5721C7__8S5721C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
Class_Descriptor cd_S5721C11 = {  "S5721C11", // class name
  bases_S5721C11, 4,
  &(vtc_S5721C11[0]), // expected_vtbl_contents
  &(vtt_S5721C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S5721C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S5721C11),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5721C11),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  S5721C10  : S5721C11 , virtual S21216C26_nt , S19894C34 , virtual S5721C7 {
  virtual  ~S5721C10(); // _ZN8S5721C10D2Ev
  S5721C10(); // tgen
};
//SIG(-1 S5721C10) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} VBC3 vd Fi} BC5 Fl} VBC5 BC3 VBC4 vd}


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

static void Test_S5721C10()
{
  extern Class_Descriptor cd_S5721C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S5721C10, buf);
    S5721C10 *dp, &lv = *(dp=new (buf) S5721C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S5721C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C10)");
    check_base_class_offset(lv, (S19894C34*)(S5721C11*), ABISELECT(32,16), "S5721C10");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*), ABISELECT(32,16), "S5721C10");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), ABISELECT(32,16), "S5721C10");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*), 0, "S5721C10");
    check_base_class_offset(lv, (S5721C7*)(S5721C11*), 0, "S5721C10");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*), ABISELECT(16,8), "S5721C10");
    check_base_class_offset(lv, (S5721C11*), 0, "S5721C10");
    /*is_ambiguous_... S5721C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(32,16), "S5721C10");
    /*is_ambiguous_... S5721C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S5721C10");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(40,20), "S5721C10");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*), ABISELECT(40,20), "S5721C10");
    test_class_info(&lv, &cd_S5721C10);
    dp->~S5721C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C10(Test_S5721C10, "S5721C10", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S5721C10C1Ev();
extern void _ZN8S5721C10D2Ev();
Name_Map name_map_S5721C10[] = {
  NSPAIR(_ZN8S5721C10C1Ev),
  NSPAIR(_ZN8S5721C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
static Base_Class bases_S5721C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5721C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5721C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S5721C10[];
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
extern void ABISELECT(_ZThn16_N8S5721C10D1Ev,_ZThn8_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S5721C10D0Ev,_ZThn8_N8S5721C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S5721C10D1Ev,_ZThn16_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S5721C10D0Ev,_ZThn16_N8S5721C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S5721C10D1Ev,_ZThn20_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S5721C10D0Ev,_ZThn20_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5721C10[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S5721C10D1Ev,_ZThn8_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S5721C10D0Ev,_ZThn8_N8S5721C10D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S5721C10[];
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C11__8S5721C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C11__8S5721C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
static  VTT_ENTRY vtt_S5721C10[] = {
  {&(_ZTV8S5721C10[5]),  5,22},
  {&(_tg__ZTV8S5721C11__8S5721C10[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C11__8S5721C10[3]),  3,5},
  {&(_ZTV8S5721C10[14]),  14,22},
  {&(_ZTV8S5721C10[20]),  20,22},
  {&(_tg__ZTV7S5721C7__A1__8S5721C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S5721C10D0Ev,_ZThn20_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S5721C10D1Ev,_ZThn20_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5721C10D0Ev,_ZThn16_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5721C10D1Ev,_ZThn16_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5721C10 = {  "S5721C10", // class name
  bases_S5721C10, 9,
  &(vtc_S5721C10[0]), // expected_vtbl_contents
  &(vtt_S5721C10[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S5721C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S5721C10),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5721C10),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C9  : virtual S19894C34 , virtual S21216C26_nt , virtual S5721C7 , S5721C10 , S5721C11 {
  ::S5721C10 s5721c9f0;
  ~S5721C9(); // tgen
  S5721C9(); // tgen
};
//SIG(-1 S5721C9) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC3 VBC2 vd Fi} BC5{ BC6{ VBC2 BC4 BC3 Fl} VBC3 BC2 VBC4 vd} BC6 FC5}


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

static void Test_S5721C9()
{
  extern Class_Descriptor cd_S5721C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S5721C9, buf);
    S5721C9 *dp, &lv = *(dp=new (buf) S5721C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S5721C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C9)");
    /*is_ambiguous_... S5721C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), ABISELECT(120,60), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), ABISELECT(120,60), "S5721C9");
    check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*), ABISELECT(120,60), "S5721C9");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(120,60), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*), ABISELECT(120,60), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*), ABISELECT(120,60), "S5721C9");
    /*is_ambiguous_... S5721C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(120,60), "S5721C9");
    /*is_ambiguous_... S5721C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*), ABISELECT(120,60), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(128,64), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*), ABISELECT(128,64), "S5721C9");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*), ABISELECT(128,64), "S5721C9");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*), 0, "S5721C9");
    check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*), 0, "S5721C9");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*), ABISELECT(16,8), "S5721C9");
    check_base_class_offset(lv, (S5721C11*)(S5721C10*), 0, "S5721C9");
    /*is_ambiguous_... S5721C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*), 0, "S5721C9");
    check_base_class_offset(lv, (S5721C10*), 0, "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*), ABISELECT(32,16), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*), ABISELECT(32,16), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*), ABISELECT(48,24), "S5721C9");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C11*), ABISELECT(32,16), "S5721C9");
    check_field_offset(lv, s5721c9f0, ABISELECT(64,32), "S5721C9.s5721c9f0");
    test_class_info(&lv, &cd_S5721C9);
    dp->~S5721C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C9(Test_S5721C9, "S5721C9", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN7S5721C9C1Ev();
extern void _ZN7S5721C9D1Ev();
Name_Map name_map_S5721C9[] = {
  NSPAIR(_ZN7S5721C9C1Ev),
  NSPAIR(_ZN7S5721C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
static Base_Class bases_S5721C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(120,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(128,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5721C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5721C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5721C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5721C9[];
extern void _ZN7S5721C9D1Ev();
extern void _ZN7S5721C9D0Ev();
extern void ABISELECT(_ZThn16_N7S5721C9D1Ev,_ZThn8_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn16_N7S5721C9D0Ev,_ZThn8_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S5721C9D1Ev,_ZThn24_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S5721C9D0Ev,_ZThn24_N7S5721C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn120_N7S5721C9D1Ev,_ZThn60_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn120_N7S5721C9D0Ev,_ZThn60_N7S5721C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S5721C9D1Ev,_ZThn64_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S5721C9D0Ev,_ZThn64_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5721C9[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&_ZN7S5721C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C9D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5721C9D1Ev,_ZThn8_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5721C9D0Ev,_ZThn8_N7S5721C9D0Ev),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S5721C9D1Ev,_ZThn24_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S5721C9D0Ev,_ZThn24_N7S5721C9D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S5721C9[];
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C10__7S5721C9[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C10__7S5721C9[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C10__A1__7S5721C9[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S5721C10D1Ev,_ZThn60_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn120_N8S5721C10D0Ev,_ZThn60_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C10__7S5721C9[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S5721C10D1Ev,_ZThn64_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S5721C10D0Ev,_ZThn64_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C10__7S5721C9[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C11__A1__7S5721C9[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C11__A2__7S5721C9[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C9[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
static  VTT_ENTRY vtt_S5721C9[] = {
  {&(_ZTV7S5721C9[5]),  5,31},
  {&(_tg__ZTV8S5721C10__7S5721C9[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C10__7S5721C9[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C10__A1__7S5721C9[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C10__7S5721C9[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C10__7S5721C9[4]),  4,6},
  {&(_tg__ZTV8S5721C11__A1__7S5721C9[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C11__A2__7S5721C9[3]),  3,5},
  {&(_ZTV7S5721C9[23]),  23,31},
  {&(_ZTV7S5721C9[29]),  29,31},
  {&(_ZTV7S5721C9[14]),  14,31},
  {&(_tg__ZTV7S5721C7__7S5721C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5721C9[];
extern  VTBL_ENTRY _ZTV7S5721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C9[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S5721C10D0Ev,_ZThn64_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S5721C10D1Ev,_ZThn64_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S5721C10D0Ev,_ZThn60_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S5721C10D1Ev,_ZThn60_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S5721C9D0Ev,_ZThn64_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S5721C9D1Ev,_ZThn64_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S5721C9D0Ev,_ZThn60_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S5721C9D1Ev,_ZThn60_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5721C9 = {  "S5721C9", // class name
  bases_S5721C9, 14,
  &(vtc_S5721C9[0]), // expected_vtbl_contents
  &(vtt_S5721C9[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI7S5721C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S5721C9),31, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5721C9),12, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C6  : virtual S5721C4 , virtual S19894C34 , virtual S5721C7 , S21216C26_nt , S5721C9 {
  virtual void  v1(); // _ZN7S5721C62v1Ev
  ~S5721C6(); // tgen
  S5721C6(); // tgen
};
//SIG(-1 S5721C6) C1{ VBC2{ BC3{ m} Fi} VBC3 VBC4{ BC5{ vd m} VBC3 vd Fi} BC5 BC6{ VBC3 VBC5 VBC4 BC7{ BC8{ VBC3 BC4 BC5 Fl} VBC5 BC3 VBC4 vd} BC8 FC7} v1}


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

static void Test_S5721C6()
{
  extern Class_Descriptor cd_S5721C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S5721C6, buf);
    S5721C6 *dp, &lv = *(dp=new (buf) S5721C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S5721C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C6)");
    check_base_class_offset(lv, (S19894C34*)(S5721C4*), ABISELECT(128,64), "S5721C6");
    check_base_class_offset(lv, (S5721C4*), ABISELECT(128,64), "S5721C6");
    /*is_ambiguous_... S5721C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S5721C6");
    /*is_ambiguous_... S5721C6::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), 0, "S5721C6");
    /*is_ambiguous_... S5721C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C9*), 0, "S5721C6");
    check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*)(S5721C9*), 0, "S5721C6");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), 0, "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C9*), 0, "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C9*), 0, "S5721C6");
    /*is_ambiguous_... S5721C6::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(136,68), "S5721C6");
    /*is_ambiguous_... S5721C6::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*), ABISELECT(136,68), "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C9*), ABISELECT(136,68), "S5721C6");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*)(S5721C9*), ABISELECT(136,68), "S5721C6");
    /*is_ambiguous_... S5721C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S5721C6");
    /*is_ambiguous_... S5721C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C9*), ABISELECT(152,76), "S5721C6");
    /*is_ambiguous_... S5721C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*)(S5721C9*), ABISELECT(152,76), "S5721C6");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(8,4), "S5721C6");
    check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(8,4), "S5721C6");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(24,12), "S5721C6");
    check_base_class_offset(lv, (S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(8,4), "S5721C6");
    /*is_ambiguous_... S5721C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*)(S5721C9*), ABISELECT(8,4), "S5721C6");
    check_base_class_offset(lv, (S5721C10*)(S5721C9*), ABISELECT(8,4), "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C9*), ABISELECT(40,20), "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C9*), ABISELECT(40,20), "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C9*), ABISELECT(56,28), "S5721C6");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C9*), ABISELECT(40,20), "S5721C6");
    check_base_class_offset(lv, (S5721C9*), ABISELECT(8,4), "S5721C6");
    test_class_info(&lv, &cd_S5721C6);
    dp->~S5721C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C6(Test_S5721C6, "S5721C6", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN7S5721C6C1Ev();
extern void _ZN7S5721C6D1Ev();
Name_Map name_map_S5721C6[] = {
  NSPAIR(_ZN7S5721C6C1Ev),
  NSPAIR(_ZN7S5721C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C4;
extern VTBL_ENTRY _ZTI7S5721C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S5721C9;
extern VTBL_ENTRY _ZTI7S5721C9[];
extern  VTBL_ENTRY _ZTV7S5721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C9[];
static Base_Class bases_S5721C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5721C4,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(136,68), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C26_nt,    ABISELECT(152,76), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S5721C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5721C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S5721C9,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5721C6[];
extern void _ZN7S5721C6D1Ev();
extern void _ZN7S5721C6D0Ev();
extern void _ZN7S5721C62v1Ev();
extern void ABISELECT(_ZThn8_N7S5721C6D1Ev,_ZThn4_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S5721C6D0Ev,_ZThn4_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S5721C6D1Ev,_ZThn12_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S5721C6D0Ev,_ZThn12_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S5721C6D1Ev,_ZThn20_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S5721C6D0Ev,_ZThn20_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S5721C6D1Ev,_ZThn28_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S5721C6D0Ev,_ZThn28_N7S5721C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S5721C6D1Ev,_ZThn68_N7S5721C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S5721C6D0Ev,_ZThn68_N7S5721C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn152_N7S5721C6D1Ev,_ZThn76_N7S5721C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn152_N7S5721C6D0Ev,_ZThn76_N7S5721C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5721C6[] = {
  ABISELECT(152,76),
  ABISELECT(136,68),
  0,
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&_ZN7S5721C6D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C6D0Ev,
  (VTBL_ENTRY)&_ZN7S5721C62v1Ev,
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C6D1Ev,_ZThn4_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C6D0Ev,_ZThn4_N7S5721C6D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S5721C6D1Ev,_ZThn12_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S5721C6D0Ev,_ZThn12_N7S5721C6D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C6D1Ev,_ZThn20_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C6D0Ev,_ZThn20_N7S5721C6D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5721C6D1Ev,_ZThn28_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5721C6D0Ev,_ZThn28_N7S5721C6D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S5721C6[];
extern void _ZN7S5721C9D1Ev();
extern void _ZN7S5721C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C9__7S5721C6[] = {
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&_ZN7S5721C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C9D0Ev,
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C107S5721C9__7S5721C6[] = {
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C107S5721C9__7S5721C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C107S5721C9__A1__7S5721C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S5721C10D1Ev,_ZThn72_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S5721C10D0Ev,_ZThn72_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C9__7S5721C6[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S5721C10D1Ev,_ZThn64_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S5721C10D0Ev,_ZThn64_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C107S5721C9__7S5721C6[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C9__A1__7S5721C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C117S5721C9__A2__7S5721C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn144_N7S5721C9D1Ev,_ZThn72_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn144_N7S5721C9D0Ev,_ZThn72_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S5721C9__7S5721C6[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S5721C9D1Ev,_ZThn64_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S5721C9D0Ev,_ZThn64_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C9__7S5721C6[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C11__A1__7S5721C9__7S5721C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev),
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C6[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
static  VTT_ENTRY vtt_S5721C6[] = {
  {&(_ZTV7S5721C6[6]),  6,40},
  {&(_tg__ZTV7S5721C9__7S5721C6[5]),  5,7},
  {&(_tg__ZTV8S5721C107S5721C9__7S5721C6[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C107S5721C9__7S5721C6[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C107S5721C9__A1__7S5721C6[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C9__7S5721C6[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C107S5721C9__7S5721C6[4]),  4,6},
  {&(_tg__ZTV8S5721C117S5721C9__A1__7S5721C6[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C117S5721C9__A2__7S5721C6[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__7S5721C9__7S5721C6[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C9__7S5721C6[4]),  4,6},
  {&(_tg__ZTV8S5721C11__A1__7S5721C9__7S5721C6[3]),  3,5},
  {&(_ZTV7S5721C6[33]),  33,40},
  {&(_ZTV7S5721C6[14]),  14,40},
  {&(_ZTV7S5721C6[38]),  38,40},
  {&(_ZTV7S5721C6[23]),  23,40},
  {&(_tg__ZTV7S5721C7__7S5721C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5721C6[];
extern  VTBL_ENTRY _ZTV7S5721C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C6[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S5721C9D0Ev,_ZThn64_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S5721C9D1Ev,_ZThn64_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5721C9D0Ev,_ZThn72_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5721C9D1Ev,_ZThn72_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S5721C10D0Ev,_ZThn64_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S5721C10D1Ev,_ZThn64_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S5721C10D0Ev,_ZThn72_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S5721C10D1Ev,_ZThn72_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S5721C6D0Ev,_ZThn76_N7S5721C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S5721C6D1Ev,_ZThn76_N7S5721C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S5721C6D0Ev,_ZThn68_N7S5721C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S5721C6D1Ev,_ZThn68_N7S5721C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5721C6 = {  "S5721C6", // class name
  bases_S5721C6, 18,
  &(vtc_S5721C6[0]), // expected_vtbl_contents
  &(vtt_S5721C6[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI7S5721C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S5721C6),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5721C6),17, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C12  : virtual S19894C34 , virtual S5721C7 , virtual S5721C10 , S21216C26_nt {
  __tsi64 s5721c12f0;
  ~S5721C12(); // tgen
  S5721C12(); // tgen
};
//SIG(-1 S5721C12) C1{ VBC2{ m} VBC3{ BC4{ vd m} VBC2 vd Fi} VBC5{ BC6{ VBC2 BC3 BC4 Fl} VBC4 BC2 VBC3 vd} BC4 FL}


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

static void Test_S5721C12()
{
  extern Class_Descriptor cd_S5721C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S5721C12, buf);
    S5721C12 *dp, &lv = *(dp=new (buf) S5721C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S5721C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C12)");
    /*is_ambiguous_... S5721C12::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S5721C12");
    /*is_ambiguous_... S5721C12::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), 0, "S5721C12");
    check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*), 0, "S5721C12");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*), 0, "S5721C12");
    /*is_ambiguous_... S5721C12::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(16,12), "S5721C12");
    /*is_ambiguous_... S5721C12::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*), ABISELECT(16,12), "S5721C12");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*), ABISELECT(16,12), "S5721C12");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(32,20), "S5721C12");
    check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(32,20), "S5721C12");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*), ABISELECT(48,28), "S5721C12");
    check_base_class_offset(lv, (S5721C11*)(S5721C10*), ABISELECT(32,20), "S5721C12");
    /*is_ambiguous_... S5721C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*), ABISELECT(64,36), "S5721C12");
    /*is_ambiguous_... S5721C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*), ABISELECT(32,20), "S5721C12");
    check_base_class_offset(lv, (S5721C10*), ABISELECT(32,20), "S5721C12");
    /*is_ambiguous_... S5721C12::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S5721C12");
    check_field_offset(lv, s5721c12f0, ABISELECT(8,4), "S5721C12.s5721c12f0");
    test_class_info(&lv, &cd_S5721C12);
    dp->~S5721C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C12(Test_S5721C12, "S5721C12", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S5721C12C1Ev();
extern void _ZN8S5721C12D1Ev();
Name_Map name_map_S5721C12[] = {
  NSPAIR(_ZN8S5721C12C1Ev),
  NSPAIR(_ZN8S5721C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S5721C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,28), //bcp->offset
    22, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    9, //immediately_derived
  0, 0},
  {&cd_S5721C10,    ABISELECT(32,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5721C12[];
extern void _ZN8S5721C12D1Ev();
extern void _ZN8S5721C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S5721C12D1Ev,_ZThn12_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S5721C12D0Ev,_ZThn12_N8S5721C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S5721C12D1Ev,_ZThn20_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S5721C12D0Ev,_ZThn20_N8S5721C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S5721C12D1Ev,_ZTvn8_n24_N8S5721C12D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S5721C12D0Ev,_ZTvn8_n24_N8S5721C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S5721C12D1Ev,_ZThn36_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S5721C12D0Ev,_ZThn36_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5721C12[] = {
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&_ZN8S5721C12D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S5721C12D1Ev,_ZTvn8_n24_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S5721C12D0Ev,_ZTvn8_n24_N8S5721C12D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S5721C12[];
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__8S5721C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C10__8S5721C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C10__8S5721C12[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C10__A1__8S5721C12[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S5721C10D1Ev,_ZThn16_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S5721C10D0Ev,_ZThn16_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C10__8S5721C12[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C10__8S5721C12[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
static  VTT_ENTRY vtt_S5721C12[] = {
  {&(_ZTV8S5721C12[6]),  6,31},
  {&(_ZTV8S5721C12[12]),  12,31},
  {&(_ZTV8S5721C12[20]),  20,31},
  {&(_ZTV8S5721C12[24]),  24,31},
  {&(_ZTV8S5721C12[29]),  29,31},
  {&(_tg__ZTV7S5721C7__8S5721C12[3]),  3,5},
  {&(_tg__ZTV8S5721C10__8S5721C12[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C10__8S5721C12[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C10__A1__8S5721C12[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C10__8S5721C12[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C10__8S5721C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S5721C12[];
extern  VTBL_ENTRY _ZTV8S5721C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C12[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5721C10D0Ev,_ZThn16_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5721C10D1Ev,_ZThn16_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S5721C12D0Ev,_ZThn36_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S5721C12D1Ev,_ZThn36_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5721C12D0Ev,_ZThn20_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5721C12D1Ev,_ZThn20_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S5721C12D0Ev,_ZThn12_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S5721C12D1Ev,_ZThn12_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5721C12 = {  "S5721C12", // class name
  bases_S5721C12, 11,
  &(vtc_S5721C12[0]), // expected_vtbl_contents
  &(vtt_S5721C12[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S5721C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S5721C12),31, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5721C12),11, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C3  : S5721C4 , S5721C6 , virtual S5721C9 , S5721C7 , S5721C12 {
  virtual  ~S5721C3(); // _ZN7S5721C3D2Ev
  S5721C3(); // tgen
};
//SIG(-1 S5721C3) C1{ BC2{ BC3{ m} Fi} BC4{ VBC2 VBC3 VBC5{ BC6{ vd m} VBC3 vd Fi} BC6 BC7{ VBC3 VBC6 VBC5 BC8{ BC9{ VBC3 BC5 BC6 Fl} VBC6 BC3 VBC5 vd} BC9 FC8} v1} VBC7 BC5 BC10{ VBC3 VBC5 VBC8 BC6 FL} vd}


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

static void Test_S5721C3()
{
  extern Class_Descriptor cd_S5721C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,46)];
    init_test(&cd_S5721C3, buf);
    S5721C3 *dp, &lv = *(dp=new (buf) S5721C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,180), "sizeof(S5721C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5721C3)");
    /*is_ambiguous_... S5721C3::S5721C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C4*), ABISELECT(128,64), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C4 */ AMB_check_base_class_offset(lv, (S5721C4*), ABISELECT(128,64), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C4*), ABISELECT(168,88), "S5721C3");
    check_base_class_offset(lv, (S5721C4*)(S5721C6*), ABISELECT(168,88), "S5721C3");
    /*is_ambiguous_... S5721C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C6*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), 0, "S5721C3");
    /*is_ambiguous_... S5721C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C9*)(S5721C6*), 0, "S5721C3");
    check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*), 0, "S5721C3");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*), 0, "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C9*)(S5721C6*), 0, "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C9*)(S5721C6*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C9*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*)(S5721C9*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C9*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C9*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), 0, "S5721C3");
    /*is_ambiguous_... S5721C12::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C12*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C6::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C6*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C9*)(S5721C6*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C9*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*)(S5721C9*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C12::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C12*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*), ABISELECT(176,92), "S5721C3");
    /*is_ambiguous_... S5721C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C6*), 0, "S5721C3");
    /*is_ambiguous_... S5721C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C9*)(S5721C6*), ABISELECT(192,100), "S5721C3");
    /*is_ambiguous_... S5721C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(192,100), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C9*), ABISELECT(192,100), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*)(S5721C9*), ABISELECT(192,100), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*), ABISELECT(192,100), "S5721C3");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(8,4), "S5721C3");
    check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(8,4), "S5721C3");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(24,12), "S5721C3");
    check_base_class_offset(lv, (S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(8,4), "S5721C3");
    /*is_ambiguous_... S5721C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(8,4), "S5721C3");
    check_base_class_offset(lv, (S5721C10*)(S5721C9*)(S5721C6*), ABISELECT(8,4), "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C9*)(S5721C6*), ABISELECT(40,20), "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C9*)(S5721C6*), ABISELECT(40,20), "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C9*)(S5721C6*), ABISELECT(56,28), "S5721C3");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C9*)(S5721C6*), ABISELECT(40,20), "S5721C3");
    check_base_class_offset(lv, (S5721C9*)(S5721C6*), ABISELECT(8,4), "S5721C3");
    check_base_class_offset(lv, (S5721C6*), 0, "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(200,104), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(200,104), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(216,112), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(200,104), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*)(S5721C9*), ABISELECT(200,104), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C10*)(S5721C9*), ABISELECT(200,104), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C9*), ABISELECT(232,120), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C9*), ABISELECT(232,120), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C9*), ABISELECT(248,128), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C9*), ABISELECT(232,120), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C9*), ABISELECT(200,104), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(136,68), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*), ABISELECT(136,68), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(320,164), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(320,164), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*), ABISELECT(336,172), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C10*), ABISELECT(320,164), "S5721C3");
    /*is_ambiguous_... S5721C3::S5721C10 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*), ABISELECT(320,164), "S5721C3");
    check_base_class_offset(lv, (S5721C10*)(S5721C12*), ABISELECT(320,164), "S5721C3");
    /*is_ambiguous_... S5721C12::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C12*), ABISELECT(152,76), "S5721C3");
    check_base_class_offset(lv, (S5721C12*), ABISELECT(152,76), "S5721C3");
    test_class_info(&lv, &cd_S5721C3);
    dp->~S5721C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C3(Test_S5721C3, "S5721C3", ABISELECT(352,180));

#else // __cplusplus

extern void _ZN7S5721C3C1Ev();
extern void _ZN7S5721C3D2Ev();
Name_Map name_map_S5721C3[] = {
  NSPAIR(_ZN7S5721C3C1Ev),
  NSPAIR(_ZN7S5721C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C4;
extern VTBL_ENTRY _ZTI7S5721C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C4;
extern VTBL_ENTRY _ZTI7S5721C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S5721C9;
extern VTBL_ENTRY _ZTI7S5721C9[];
extern  VTBL_ENTRY _ZTV7S5721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C9[];
extern Class_Descriptor cd_S5721C6;
extern VTBL_ENTRY _ZTI7S5721C6[];
extern  VTBL_ENTRY _ZTV7S5721C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S5721C9;
extern VTBL_ENTRY _ZTI7S5721C9[];
extern  VTBL_ENTRY _ZTV7S5721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C12;
extern VTBL_ENTRY _ZTI8S5721C12[];
extern  VTBL_ENTRY _ZTV8S5721C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C12[];
static Base_Class bases_S5721C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5721C4,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    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
    3, //immediately_derived
  0, 0},
  {&cd_S5721C4,    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
    20, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(176,92), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21216C26_nt,    ABISELECT(192,100), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5721C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(40,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5721C9,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5721C6,    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_S21216C26_nt,    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
    4, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(216,112), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19894C34,    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
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5721C10,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(248,128), //bcp->offset
    72, //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
    11, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(232,120), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5721C9,    ABISELECT(200,104), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(136,68), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(320,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(320,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(336,172), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(320,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(320,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S5721C10,    ABISELECT(320,164), //bcp->offset
    76, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S5721C12,    ABISELECT(152,76), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5721C3[];
extern void _ZN7S5721C3D1Ev();
extern void _ZN7S5721C3D0Ev();
extern void _ZN7S5721C62v1Ev();
extern void ABISELECT(_ZThn8_N7S5721C3D1Ev,_ZThn4_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S5721C3D0Ev,_ZThn4_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S5721C3D1Ev,_ZThn12_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S5721C3D0Ev,_ZThn12_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S5721C3D1Ev,_ZThn20_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S5721C3D0Ev,_ZThn20_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S5721C3D1Ev,_ZThn28_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S5721C3D0Ev,_ZThn28_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S5721C3D1Ev,_ZThn68_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S5721C3D0Ev,_ZThn68_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S5721C3D1Ev,_ZThn76_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S5721C3D0Ev,_ZThn76_N7S5721C3D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S5721C3D1Ev,_ZTv0_n16_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S5721C3D1Ev,_ZThn92_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C3D0Ev,_ZTv0_n16_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S5721C3D0Ev,_ZThn92_N7S5721C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C3D1Ev,_ZTv0_n12_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S5721C3D1Ev,_ZThn100_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C3D0Ev,_ZTv0_n12_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn192_N7S5721C3D0Ev,_ZThn100_N7S5721C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn200_N7S5721C3D1Ev,_ZThn104_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn200_N7S5721C3D0Ev,_ZThn104_N7S5721C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S5721C3D1Ev,_ZTvn16_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S5721C3D0Ev,_ZTvn16_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S5721C3D1Ev,_ZTvn24_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S5721C3D0Ev,_ZTvn24_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn320_N7S5721C3D1Ev,_ZThn164_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn320_N7S5721C3D0Ev,_ZThn164_N7S5721C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev)();
static  VTBL_ENTRY vtc_S5721C3[] = {
  ABISELECT(320,164),
  ABISELECT(200,104),
  ABISELECT(192,100),
  ABISELECT(176,92),
  0,
  ABISELECT(168,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&_ZN7S5721C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5721C62v1Ev,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C3D1Ev,_ZThn4_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C3D0Ev,_ZThn4_N7S5721C3D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S5721C3D1Ev,_ZThn12_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S5721C3D0Ev,_ZThn12_N7S5721C3D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C3D1Ev,_ZThn20_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C3D0Ev,_ZThn20_N7S5721C3D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5721C3D1Ev,_ZThn28_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5721C3D0Ev,_ZThn28_N7S5721C3D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S5721C3D1Ev,_ZThn68_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S5721C3D0Ev,_ZThn68_N7S5721C3D0Ev),
  ABISELECT(40,24),
  ABISELECT(168,88),
  ABISELECT(24,16),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S5721C3D1Ev,_ZThn76_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S5721C3D0Ev,_ZThn76_N7S5721C3D0Ev),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C3D1Ev,_ZTv0_n16_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C3D0Ev,_ZTv0_n16_N7S5721C3D0Ev),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C3D1Ev,_ZTv0_n12_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C3D0Ev,_ZTv0_n12_N7S5721C3D0Ev),
  ABISELECT(-200,-104),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev),
  ABISELECT(-232,-120),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S5721C3D1Ev,_ZTvn16_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S5721C3D0Ev,_ZTvn16_n24_N7S5721C3D0Ev),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S5721C3D1Ev,_ZTvn24_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S5721C3D0Ev,_ZTvn24_n24_N7S5721C3D0Ev),
  ABISELECT(-320,-164),
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-320,-164),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev),
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S5721C3[];
extern void _ZN7S5721C6D1Ev();
extern void _ZN7S5721C6D0Ev();
extern void _ZN7S5721C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C6__7S5721C3[] = {
  ABISELECT(192,100),
  ABISELECT(176,92),
  0,
  ABISELECT(168,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&_ZN7S5721C6D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C6D0Ev,
  (VTBL_ENTRY)&_ZN7S5721C62v1Ev,
};
extern void _ZN7S5721C9D1Ev();
extern void _ZN7S5721C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&_ZN7S5721C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C9D0Ev,
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C107S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C107S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C107S5721C97S5721C6__A1__7S5721C3[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn184_N8S5721C10D1Ev,_ZThn96_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn184_N8S5721C10D0Ev,_ZThn96_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S5721C10D1Ev,_ZThn88_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S5721C10D0Ev,_ZThn88_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C107S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(-168,-88),
  ABISELECT(-176,-92),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C97S5721C6__A1__7S5721C3[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C117S5721C97S5721C6__A2__7S5721C3[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn184_N7S5721C9D1Ev,_ZThn96_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn184_N7S5721C9D0Ev,_ZThn96_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn168_N7S5721C9D1Ev,_ZThn88_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn168_N7S5721C9D0Ev,_ZThn88_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(-168,-88),
  ABISELECT(-176,-92),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C11__A1__7S5721C97S5721C6__7S5721C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S5721C6D1Ev,_ZThn92_N7S5721C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S5721C6D0Ev,_ZThn92_N7S5721C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C6__7S5721C3[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev),
};
extern void ABISELECT(_ZThn8_N7S5721C6D1Ev,_ZThn4_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S5721C6D0Ev,_ZThn4_N7S5721C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C9__7S5721C6__7S5721C3[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C6D1Ev,_ZThn4_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C6D0Ev,_ZThn4_N7S5721C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn192_N7S5721C6D1Ev,_ZThn100_N7S5721C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn192_N7S5721C6D0Ev,_ZThn100_N7S5721C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__7S5721C6__7S5721C3[] = {
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev),
};
extern void ABISELECT(_ZThn40_N7S5721C6D1Ev,_ZThn20_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S5721C6D0Ev,_ZThn20_N7S5721C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C9__A1__7S5721C6__7S5721C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C6D1Ev,_ZThn20_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C6D0Ev,_ZThn20_N7S5721C6D0Ev),
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A__7S5721C3[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN8S5721C12D1Ev();
extern void _ZN8S5721C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C12__7S5721C3[] = {
  ABISELECT(40,24),
  ABISELECT(168,88),
  ABISELECT(24,16),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&_ZN8S5721C12D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S5721C12D1Ev,_ZThn16_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S5721C12D0Ev,_ZThn16_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__8S5721C12__7S5721C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(-176,-92),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S5721C12D1Ev,_ZThn88_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S5721C12D0Ev,_ZThn88_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S5721C10__8S5721C12__7S5721C3[] = {
  ABISELECT(-168,-88),
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-320,-164),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S5721C12D1Ev,_ZTvn8_n24_N8S5721C12D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S5721C12D0Ev,_ZTvn8_n24_N8S5721C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S5721C118S5721C10__A2__8S5721C12__7S5721C3[] = {
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S5721C12D1Ev,_ZTvn8_n24_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S5721C12D0Ev,_ZTvn8_n24_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S5721C12D1Ev,_ZThn24_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S5721C12D0Ev,_ZThn24_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A3__8S5721C12__7S5721C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev),
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C3[] = {
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN7S5721C9D1Ev();
extern void _ZN7S5721C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C9__A1__7S5721C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&_ZN7S5721C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C9D0Ev,
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C107S5721C9__A1__7S5721C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C107S5721C9__A2__7S5721C3[] = {
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C107S5721C9__A3__7S5721C3[] = {
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C9__A1__7S5721C3[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C107S5721C9__A1__7S5721C3[] = {
  ABISELECT(24,12),
  ABISELECT(-176,-92),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C9__A3__7S5721C3[] = {
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C117S5721C9__A4__7S5721C3[] = {
  ABISELECT(-232,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S5721C9__A1__7S5721C3[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C9__A1__7S5721C3[] = {
  ABISELECT(24,12),
  ABISELECT(-176,-92),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C11__A1__7S5721C9__A1__7S5721C3[] = {
  ABISELECT(-232,-120),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev),
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C10__A2__7S5721C3[] = {
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-320,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C10__A4__7S5721C3[] = {
  ABISELECT(-320,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C10__A6__7S5721C3[] = {
  ABISELECT(-320,-164),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C10__A2__7S5721C3[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C10__A2__7S5721C3[] = {
  ABISELECT(144,72),
  ABISELECT(-176,-92),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
static  VTT_ENTRY vtt_S5721C3[] = {
  {&(_ZTV7S5721C3[8]),  8,88},
  {&(_tg__ZTV7S5721C6__7S5721C3[6]),  6,9},
  {&(_tg__ZTV7S5721C97S5721C6__7S5721C3[5]),  5,7},
  {&(_tg__ZTV8S5721C107S5721C97S5721C6__7S5721C3[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C107S5721C97S5721C6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C107S5721C97S5721C6__A1__7S5721C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C97S5721C6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C107S5721C97S5721C6__7S5721C3[4]),  4,6},
  {&(_tg__ZTV8S5721C117S5721C97S5721C6__A1__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C117S5721C97S5721C6__A2__7S5721C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__7S5721C97S5721C6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C97S5721C6__7S5721C3[4]),  4,6},
  {&(_tg__ZTV8S5721C11__A1__7S5721C97S5721C6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C6__7S5721C3[4]),  4,6},
  {&(_tg__ZTV7S5721C9__7S5721C6__7S5721C3[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A2__7S5721C6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV8S5721C117S5721C9__A1__7S5721C6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A__7S5721C3[3]),  3,5},
  {&(_tg__ZTV8S5721C12__7S5721C3[6]),  6,8},
  {&(_tg__ZTV7S5721C7__8S5721C12__7S5721C3[4]),  4,6},
  {&(_tg__ZTV8S5721C10__8S5721C12__7S5721C3[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S5721C118S5721C10__A2__8S5721C12__7S5721C3[2]),  2,4},
  {&(_tg__ZTV12S21216C26_nt__A3__8S5721C12__7S5721C3[3]),  3,5},
  {&(_ZTV7S5721C3[48]),  48,88},
  {&(_ZTV7S5721C3[16]),  16,88},
  {&(_ZTV7S5721C3[53]),  53,88},
  {&(_ZTV7S5721C3[25]),  25,88},
  {&(_ZTV7S5721C3[61]),  61,88},
  {&(_ZTV7S5721C3[65]),  65,88},
  {&(_ZTV7S5721C3[70]),  70,88},
  {&(_ZTV7S5721C3[74]),  74,88},
  {&(_ZTV7S5721C3[34]),  34,88},
  {&(_ZTV7S5721C3[42]),  42,88},
  {&(_ZTV7S5721C3[82]),  82,88},
  {&(_ZTV7S5721C3[86]),  86,88},
  {&(_tg__ZTV7S5721C7__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C9__A1__7S5721C3[5]),  5,7},
  {&(_tg__ZTV8S5721C107S5721C9__A1__7S5721C3[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C107S5721C9__A2__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C107S5721C9__A3__7S5721C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C9__A1__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C107S5721C9__A1__7S5721C3[4]),  4,6},
  {&(_tg__ZTV8S5721C117S5721C9__A3__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C117S5721C9__A4__7S5721C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__7S5721C9__A1__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C9__A1__7S5721C3[4]),  4,6},
  {&(_tg__ZTV8S5721C11__A1__7S5721C9__A1__7S5721C3[3]),  3,5},
  {&(_tg__ZTV8S5721C10__A2__7S5721C3[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C10__A4__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C10__A6__7S5721C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C10__A2__7S5721C3[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C10__A2__7S5721C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S5721C3[];
extern  VTBL_ENTRY _ZTV7S5721C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C3[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S5721C12D0Ev,_ZThn24_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S5721C12D1Ev,_ZThn24_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S5721C12D0Ev,_ZThn88_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S5721C12D1Ev,_ZThn88_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S5721C12D0Ev,_ZThn16_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S5721C12D1Ev,_ZThn16_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S5721C6D0Ev,_ZThn100_N7S5721C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S5721C6D1Ev,_ZThn100_N7S5721C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S5721C6D0Ev,_ZThn92_N7S5721C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S5721C6D1Ev,_ZThn92_N7S5721C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S5721C9D0Ev,_ZThn88_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S5721C9D1Ev,_ZThn88_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S5721C9D0Ev,_ZThn96_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S5721C9D1Ev,_ZThn96_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S5721C10D0Ev,_ZThn88_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S5721C10D1Ev,_ZThn88_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S5721C10D0Ev,_ZThn96_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S5721C10D1Ev,_ZThn96_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S5721C3D0Ev,_ZThn164_N7S5721C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S5721C3D0Ev,_ZThn104_N7S5721C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S5721C3D1Ev,_ZThn164_N7S5721C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S5721C3D1Ev,_ZThn104_N7S5721C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C3D0Ev,_ZTv0_n12_N7S5721C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S5721C3D0Ev,_ZThn100_N7S5721C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C3D1Ev,_ZTv0_n12_N7S5721C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S5721C3D1Ev,_ZThn100_N7S5721C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C3D0Ev,_ZTv0_n16_N7S5721C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S5721C3D0Ev,_ZThn92_N7S5721C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C3D1Ev,_ZTv0_n16_N7S5721C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S5721C3D1Ev,_ZThn92_N7S5721C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5721C3 = {  "S5721C3", // class name
  bases_S5721C3, 42,
  &(vtc_S5721C3[0]), // expected_vtbl_contents
  &(vtt_S5721C3[0]), // expected_vtt_contents
  ABISELECT(352,180), // object size
  NSPAIRA(_ZTI7S5721C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S5721C3),88, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5721C3),52, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5721C1  : S19486C9_nt , S5721C3 {
  int s5721c1f0[3];
  ~S5721C1(); // tgen
  S5721C1(); // tgen
};
//SIG(1 S5721C1) C1{ BC2{ m FD[10]} BC3{ BC4{ BC5{ m} Fi} BC6{ VBC4 VBC5 VBC7{ BC8{ vd m} VBC5 vd Fi} BC8 BC9{ VBC5 VBC8 VBC7 BC10{ BC11{ VBC5 BC7 BC8 Fl} VBC8 BC5 VBC7 vd} BC11 FC10} v1} VBC9 BC7 BC12{ VBC5 VBC7 VBC10 BC8 FL} vd} Fi[3]}


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

static void Test_S5721C1()
{
  extern Class_Descriptor cd_S5721C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,79)];
    init_test(&cd_S5721C1, buf);
    S5721C1 *dp, &lv = *(dp=new (buf) S5721C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,312), "sizeof(S5721C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5721C1)");
    check_base_class_offset(lv, (S19486C9_nt*), ABISELECT(176,88), "S5721C1");
    /*is_ambiguous_... S5721C3::S5721C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C4*)(S5721C3*), ABISELECT(128,64), "S5721C1");
    /*is_ambiguous_... S5721C3::S5721C4 */ AMB_check_base_class_offset(lv, (S5721C4*)(S5721C3*), ABISELECT(128,64), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C4*), ABISELECT(348,220), "S5721C1");
    check_base_class_offset(lv, (S5721C4*)(S5721C6*)(S5721C3*), ABISELECT(348,220), "S5721C1");
    /*is_ambiguous_... S5721C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*), 0, "S5721C1");
    /*is_ambiguous_... S5721C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C9*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C9*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C9*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C9*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*)(S5721C9*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C9*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C9*), 0, "S5721C1");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C12::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C12*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C11*)(S5721C10*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C7*)(S5721C11*)(S5721C10*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C6::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C6*)(S5721C3*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C10::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C9*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*)(S5721C9*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C12::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C12*)(S5721C3*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C10*), ABISELECT(352,224), "S5721C1");
    /*is_ambiguous_... S5721C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C6*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(368,232), "S5721C1");
    /*is_ambiguous_... S5721C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(368,232), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C9*), ABISELECT(368,232), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*)(S5721C9*), ABISELECT(368,232), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C10*), ABISELECT(368,232), "S5721C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(8,4), "S5721C1");
    check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(8,4), "S5721C1");
    /*is_ambiguous_... S5721C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(24,12), "S5721C1");
    check_base_class_offset(lv, (S5721C11*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(8,4), "S5721C1");
    /*is_ambiguous_... S5721C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(8,4), "S5721C1");
    check_base_class_offset(lv, (S5721C10*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(8,4), "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(40,20), "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(40,20), "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(56,28), "S5721C1");
    /*is_ambiguous_... S5721C9::S5721C11 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(40,20), "S5721C1");
    check_base_class_offset(lv, (S5721C9*)(S5721C6*)(S5721C3*), ABISELECT(8,4), "S5721C1");
    check_base_class_offset(lv, (S5721C6*)(S5721C3*), 0, "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(376,236), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(376,236), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(392,244), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C10*)(S5721C9*), ABISELECT(376,236), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*)(S5721C9*), ABISELECT(376,236), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C10*)(S5721C9*), ABISELECT(376,236), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C9*), ABISELECT(408,252), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C9*), ABISELECT(408,252), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C9*), ABISELECT(424,260), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C9*), ABISELECT(408,252), "S5721C1");
    /*is_ambiguous_... S5721C3::S5721C9 */ AMB_check_base_class_offset(lv, (S5721C9*)(S5721C3*), ABISELECT(376,236), "S5721C1");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C3*), ABISELECT(136,68), "S5721C1");
    /*is_ambiguous_... S5721C3::S5721C7 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C3*), ABISELECT(136,68), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(496,296), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S5721C7*)(S5721C11*)(S5721C10*), ABISELECT(496,296), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C11*)(S5721C10*), ABISELECT(512,304), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S5721C11*)(S5721C10*), ABISELECT(496,296), "S5721C1");
    /*is_ambiguous_... S5721C1::S5721C10 */ AMB_check_base_class_offset(lv, (S19894C34*)(S5721C10*), ABISELECT(496,296), "S5721C1");
    check_base_class_offset(lv, (S5721C10*)(S5721C12*)(S5721C3*), ABISELECT(496,296), "S5721C1");
    /*is_ambiguous_... S5721C12::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5721C12*)(S5721C3*), ABISELECT(152,76), "S5721C1");
    check_base_class_offset(lv, (S5721C12*)(S5721C3*), ABISELECT(152,76), "S5721C1");
    check_base_class_offset(lv, (S5721C3*), 0, "S5721C1");
    check_field_offset(lv, s5721c1f0, ABISELECT(336,208), "S5721C1.s5721c1f0");
    test_class_info(&lv, &cd_S5721C1);
    dp->~S5721C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5721C1(Test_S5721C1, "S5721C1", ABISELECT(528,312));

#else // __cplusplus

extern void _ZN7S5721C1C1Ev();
extern void _ZN7S5721C1D1Ev();
Name_Map name_map_S5721C1[] = {
  NSPAIR(_ZN7S5721C1C1Ev),
  NSPAIR(_ZN7S5721C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19486C9_nt;
extern VTBL_ENTRY _ZTI11S19486C9_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C4;
extern VTBL_ENTRY _ZTI7S5721C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C4;
extern VTBL_ENTRY _ZTI7S5721C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S5721C9;
extern VTBL_ENTRY _ZTI7S5721C9[];
extern  VTBL_ENTRY _ZTV7S5721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C9[];
extern Class_Descriptor cd_S5721C6;
extern VTBL_ENTRY _ZTI7S5721C6[];
extern  VTBL_ENTRY _ZTV7S5721C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S5721C9;
extern VTBL_ENTRY _ZTI7S5721C9[];
extern  VTBL_ENTRY _ZTV7S5721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C7;
extern VTBL_ENTRY _ZTI7S5721C7[];
extern  VTBL_ENTRY _ZTV7S5721C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C11;
extern VTBL_ENTRY _ZTI8S5721C11[];
extern  VTBL_ENTRY _ZTV8S5721C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C11[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S5721C10;
extern VTBL_ENTRY _ZTI8S5721C10[];
extern  VTBL_ENTRY _ZTV8S5721C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5721C12;
extern VTBL_ENTRY _ZTI8S5721C12[];
extern  VTBL_ENTRY _ZTV8S5721C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5721C12[];
extern Class_Descriptor cd_S5721C3;
extern VTBL_ENTRY _ZTI7S5721C3[];
extern  VTBL_ENTRY _ZTV7S5721C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C3[];
static Base_Class bases_S5721C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19486C9_nt,    ABISELECT(176,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_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5721C4,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(348,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5721C4,    ABISELECT(348,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C26_nt,    ABISELECT(352,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(352,224), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(368,232), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5721C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(40,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5721C9,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S5721C6,    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
    30, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(376,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(376,236), //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
    5, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(392,244), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(376,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(376,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S5721C10,    ABISELECT(376,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(408,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(408,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(424,260), //bcp->offset
    72, //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
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(408,252), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S5721C9,    ABISELECT(376,236), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(136,68), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(496,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S5721C7,    ABISELECT(496,296), //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
    15, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(512,304), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S5721C11,    ABISELECT(496,296), //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
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(496,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S5721C10,    ABISELECT(496,296), //bcp->offset
    76, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S5721C12,    ABISELECT(152,76), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S5721C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5721C1[];
extern void _ZN7S5721C1D1Ev();
extern void _ZN7S5721C1D0Ev();
extern void _ZN7S5721C62v1Ev();
extern void ABISELECT(_ZThn8_N7S5721C1D1Ev,_ZThn4_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S5721C1D0Ev,_ZThn4_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S5721C1D1Ev,_ZThn12_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S5721C1D0Ev,_ZThn12_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S5721C1D1Ev,_ZThn20_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S5721C1D0Ev,_ZThn20_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S5721C1D1Ev,_ZThn28_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S5721C1D0Ev,_ZThn28_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S5721C1D1Ev,_ZThn68_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S5721C1D0Ev,_ZThn68_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S5721C1D1Ev,_ZThn76_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S5721C1D0Ev,_ZThn76_N7S5721C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S5721C1D1Ev,_ZTv0_n16_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S5721C1D1Ev,_ZThn224_N7S5721C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C1D0Ev,_ZTv0_n16_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn352_N7S5721C1D0Ev,_ZThn224_N7S5721C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C1D1Ev,_ZTv0_n12_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S5721C1D1Ev,_ZThn232_N7S5721C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C1D0Ev,_ZTv0_n12_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn368_N7S5721C1D0Ev,_ZThn232_N7S5721C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C1D1Ev,_ZTv0_n24_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn376_N7S5721C1D1Ev,_ZThn236_N7S5721C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C1D0Ev,_ZTv0_n24_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn376_N7S5721C1D0Ev,_ZThn236_N7S5721C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S5721C1D1Ev,_ZTvn8_n24_N7S5721C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S5721C1D0Ev,_ZTvn8_n24_N7S5721C1D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S5721C1D1Ev,_ZTvn16_n24_N7S5721C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S5721C1D0Ev,_ZTvn16_n24_N7S5721C1D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S5721C1D1Ev,_ZTvn24_n24_N7S5721C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S5721C1D0Ev,_ZTvn24_n24_N7S5721C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S5721C1D1Ev,_ZTv0_n24_N7S5721C1D1Ev)();
extern void ABISELECT(_ZThn496_N7S5721C1D1Ev,_ZThn296_N7S5721C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C1D0Ev,_ZTv0_n24_N7S5721C1D0Ev)();
extern void ABISELECT(_ZThn496_N7S5721C1D0Ev,_ZThn296_N7S5721C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S5721C1D1Ev,_ZTvn8_n24_N7S5721C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S5721C1D0Ev,_ZTvn8_n24_N7S5721C1D0Ev)();
static  VTBL_ENTRY vtc_S5721C1[] = {
  ABISELECT(496,296),
  ABISELECT(376,236),
  ABISELECT(368,232),
  ABISELECT(352,224),
  0,
  ABISELECT(348,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&_ZN7S5721C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5721C62v1Ev,
  ABISELECT(344,220),
  ABISELECT(360,228),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C1D1Ev,_ZThn4_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C1D0Ev,_ZThn4_N7S5721C1D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S5721C1D1Ev,_ZThn12_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S5721C1D0Ev,_ZThn12_N7S5721C1D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C1D1Ev,_ZThn20_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C1D0Ev,_ZThn20_N7S5721C1D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5721C1D1Ev,_ZThn28_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S5721C1D0Ev,_ZThn28_N7S5721C1D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S5721C1D1Ev,_ZThn68_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S5721C1D0Ev,_ZThn68_N7S5721C1D0Ev),
  ABISELECT(216,156),
  ABISELECT(344,220),
  ABISELECT(200,148),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S5721C1D1Ev,_ZThn76_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S5721C1D0Ev,_ZThn76_N7S5721C1D0Ev),
  ABISELECT(-352,-224),
  ABISELECT(-352,-224),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C1D1Ev,_ZTv0_n16_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C1D0Ev,_ZTv0_n16_N7S5721C1D0Ev),
  ABISELECT(-368,-232),
  ABISELECT(-368,-232),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C1D1Ev,_ZTv0_n12_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C1D0Ev,_ZTv0_n12_N7S5721C1D0Ev),
  ABISELECT(-376,-236),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-376,-236),
  ABISELECT(-376,-236),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C1D1Ev,_ZTv0_n24_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C1D0Ev,_ZTv0_n24_N7S5721C1D0Ev),
  ABISELECT(-392,-244),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C1D1Ev,_ZTvn8_n24_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C1D0Ev,_ZTvn8_n24_N7S5721C1D0Ev),
  ABISELECT(-408,-252),
  ABISELECT(-408,-252),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S5721C1D1Ev,_ZTvn16_n24_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S5721C1D0Ev,_ZTvn16_n24_N7S5721C1D0Ev),
  ABISELECT(-424,-260),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S5721C1D1Ev,_ZTvn24_n24_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S5721C1D0Ev,_ZTvn24_n24_N7S5721C1D0Ev),
  ABISELECT(-496,-296),
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-496,-296),
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C1D1Ev,_ZTv0_n24_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C1D0Ev,_ZTv0_n24_N7S5721C1D0Ev),
  ABISELECT(-512,-304),
  (VTBL_ENTRY)&(_ZTI7S5721C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C1D1Ev,_ZTvn8_n24_N7S5721C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C1D0Ev,_ZTvn8_n24_N7S5721C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S5721C1[];
extern void _ZN7S5721C3D1Ev();
extern void _ZN7S5721C3D0Ev();
extern void _ZN7S5721C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C3__7S5721C1[] = {
  ABISELECT(496,296),
  ABISELECT(376,236),
  ABISELECT(368,232),
  ABISELECT(352,224),
  0,
  ABISELECT(348,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&_ZN7S5721C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5721C62v1Ev,
};
extern void _ZN7S5721C6D1Ev();
extern void _ZN7S5721C6D0Ev();
extern void _ZN7S5721C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(368,232),
  ABISELECT(352,224),
  0,
  ABISELECT(348,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&_ZN7S5721C6D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C6D0Ev,
  (VTBL_ENTRY)&_ZN7S5721C62v1Ev,
};
extern void _ZN7S5721C9D1Ev();
extern void _ZN7S5721C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(344,220),
  ABISELECT(360,228),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&_ZN7S5721C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C9D0Ev,
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C107S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(344,220),
  ABISELECT(360,228),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C107S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C107S5721C97S5721C67S5721C3__A1__7S5721C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn360_N8S5721C10D1Ev,_ZThn228_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn360_N8S5721C10D0Ev,_ZThn228_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-360,-228),
  ABISELECT(-360,-228),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZThn344_N8S5721C10D1Ev,_ZThn220_N8S5721C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
extern void ABISELECT(_ZThn344_N8S5721C10D0Ev,_ZThn220_N8S5721C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C107S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-344,-220),
  ABISELECT(-352,-224),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C97S5721C67S5721C3__A1__7S5721C1[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C117S5721C97S5721C67S5721C3__A2__7S5721C1[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn360_N7S5721C9D1Ev,_ZThn228_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn360_N7S5721C9D0Ev,_ZThn228_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-360,-228),
  ABISELECT(-360,-228),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn344_N7S5721C9D1Ev,_ZThn220_N7S5721C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev)();
extern void ABISELECT(_ZThn344_N7S5721C9D0Ev,_ZThn220_N7S5721C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-344,-220),
  ABISELECT(-352,-224),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C11__A1__7S5721C97S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn352_N7S5721C6D1Ev,_ZThn224_N7S5721C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn352_N7S5721C6D0Ev,_ZThn224_N7S5721C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-352,-224),
  ABISELECT(-352,-224),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev),
};
extern void ABISELECT(_ZThn8_N7S5721C6D1Ev,_ZThn4_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S5721C6D0Ev,_ZThn4_N7S5721C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C9__7S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(344,220),
  ABISELECT(360,228),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C6D1Ev,_ZThn4_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C6D0Ev,_ZThn4_N7S5721C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S5721C6D1Ev,_ZThn232_N7S5721C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev)();
extern void ABISELECT(_ZThn368_N7S5721C6D0Ev,_ZThn232_N7S5721C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__7S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-368,-232),
  ABISELECT(-368,-232),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev),
};
extern void ABISELECT(_ZThn40_N7S5721C6D1Ev,_ZThn20_N7S5721C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S5721C6D0Ev,_ZThn20_N7S5721C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C9__A1__7S5721C67S5721C3__7S5721C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S5721C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C6D1Ev,_ZThn20_N7S5721C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C6D0Ev,_ZThn20_N7S5721C6D0Ev),
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C77S5721C3__A5__7S5721C1[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN8S5721C12D1Ev();
extern void _ZN8S5721C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C127S5721C3__7S5721C1[] = {
  ABISELECT(216,156),
  ABISELECT(344,220),
  ABISELECT(200,148),
  ABISELECT(-152,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&_ZN8S5721C12D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S5721C12D1Ev,_ZThn148_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S5721C12D0Ev,_ZThn148_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__8S5721C127S5721C3__7S5721C1[] = {
  ABISELECT(-200,-148),
  ABISELECT(-352,-224),
  ABISELECT(-200,-148),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn344_N8S5721C12D1Ev,_ZThn220_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn344_N8S5721C12D0Ev,_ZThn220_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S5721C10__8S5721C127S5721C3__7S5721C1[] = {
  ABISELECT(-344,-220),
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-496,-296),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S5721C12D1Ev,_ZTvn8_n24_N8S5721C12D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S5721C12D0Ev,_ZTvn8_n24_N8S5721C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S5721C118S5721C10__A2__8S5721C127S5721C3__7S5721C1[] = {
  ABISELECT(-360,-228),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S5721C12D1Ev,_ZTvn8_n24_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S5721C12D0Ev,_ZTvn8_n24_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev)();
extern void ABISELECT(_ZThn216_N8S5721C12D1Ev,_ZThn156_N8S5721C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev)();
extern void ABISELECT(_ZThn216_N8S5721C12D0Ev,_ZThn156_N8S5721C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A3__8S5721C127S5721C3__7S5721C1[] = {
  ABISELECT(-216,-156),
  ABISELECT(-216,-156),
  (VTBL_ENTRY)&(_ZTI8S5721C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C3D1Ev,_ZTv0_n16_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn352_N7S5721C3D1Ev,_ZThn224_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5721C3D0Ev,_ZTv0_n16_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn352_N7S5721C3D0Ev,_ZThn224_N7S5721C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C3__7S5721C1[] = {
  ABISELECT(-352,-224),
  ABISELECT(-352,-224),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C3D1Ev,_ZTv0_n16_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C3D0Ev,_ZTv0_n16_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZThn8_N7S5721C3D1Ev,_ZThn4_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S5721C3D0Ev,_ZThn4_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C97S5721C6__7S5721C3__7S5721C1[] = {
  ABISELECT(344,220),
  ABISELECT(360,228),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C3D1Ev,_ZThn4_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5721C3D0Ev,_ZThn4_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S5721C3D1Ev,_ZTv0_n12_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S5721C3D1Ev,_ZThn232_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5721C3D0Ev,_ZTv0_n12_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S5721C3D0Ev,_ZThn232_N7S5721C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__7S5721C3__7S5721C1[] = {
  ABISELECT(-368,-232),
  ABISELECT(-368,-232),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C3D1Ev,_ZTv0_n12_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C3D0Ev,_ZTv0_n12_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZThn40_N7S5721C3D1Ev,_ZThn20_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S5721C3D0Ev,_ZThn20_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C97S5721C6__A1__7S5721C3__7S5721C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C3D1Ev,_ZThn20_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S5721C3D0Ev,_ZThn20_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn376_N7S5721C3D1Ev,_ZThn236_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn376_N7S5721C3D0Ev,_ZThn236_N7S5721C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5721C9__A1__7S5721C3__7S5721C1[] = {
  ABISELECT(-376,-236),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-376,-236),
  ABISELECT(-376,-236),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S5721C118S5721C107S5721C9__A8__7S5721C3__7S5721C1[] = {
  ABISELECT(-392,-244),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n48_N7S5721C3D1Ev,_ZTvn16_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S5721C3D0Ev,_ZTvn16_n24_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C9__A3__7S5721C3__7S5721C1[] = {
  ABISELECT(-408,-252),
  ABISELECT(-408,-252),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S5721C3D1Ev,_ZTvn16_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S5721C3D0Ev,_ZTvn16_n24_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S5721C3D1Ev,_ZTvn24_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S5721C3D0Ev,_ZTvn24_n24_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S5721C117S5721C9__A10__7S5721C3__7S5721C1[] = {
  ABISELECT(-424,-260),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S5721C3D1Ev,_ZTvn24_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S5721C3D0Ev,_ZTvn24_n24_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZThn136_N7S5721C3D1Ev,_ZThn68_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S5721C3D0Ev,_ZThn68_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A__7S5721C3__7S5721C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S5721C3D1Ev,_ZThn68_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S5721C3D0Ev,_ZThn68_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZThn152_N7S5721C3D1Ev,_ZThn76_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S5721C3D0Ev,_ZThn76_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C12__7S5721C3__7S5721C1[] = {
  ABISELECT(216,156),
  ABISELECT(344,220),
  ABISELECT(200,148),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S5721C3D1Ev,_ZThn76_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S5721C3D0Ev,_ZThn76_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZThn496_N7S5721C3D1Ev,_ZThn296_N7S5721C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev)();
extern void ABISELECT(_ZThn496_N7S5721C3D0Ev,_ZThn296_N7S5721C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S5721C10__A2__7S5721C3__7S5721C1[] = {
  ABISELECT(-496,-296),
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-496,-296),
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S5721C118S5721C10__A13__7S5721C3__7S5721C1[] = {
  ABISELECT(-512,-304),
  (VTBL_ENTRY)&(_ZTI7S5721C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D1Ev,_ZTvn8_n24_N7S5721C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S5721C3D0Ev,_ZTvn8_n24_N7S5721C3D0Ev),
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C1[] = {
  ABISELECT(-352,-224),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void _ZN7S5721C9D1Ev();
extern void _ZN7S5721C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C9__A1__7S5721C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-376,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&_ZN7S5721C9D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C9D0Ev,
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C107S5721C9__A1__7S5721C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  ABISELECT(-376,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C107S5721C9__A2__7S5721C1[] = {
  ABISELECT(-376,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C107S5721C9__A3__7S5721C1[] = {
  ABISELECT(-376,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C9__A1__7S5721C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C107S5721C9__A1__7S5721C1[] = {
  ABISELECT(24,12),
  ABISELECT(-352,-224),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C117S5721C9__A3__7S5721C1[] = {
  ABISELECT(-408,-252),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C117S5721C9__A4__7S5721C1[] = {
  ABISELECT(-408,-252),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__7S5721C9__A1__7S5721C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__7S5721C9__A1__7S5721C1[] = {
  ABISELECT(24,12),
  ABISELECT(-352,-224),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev),
};
extern void ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S5721C11__A1__7S5721C9__A1__7S5721C1[] = {
  ABISELECT(-408,-252),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5721C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D1Ev,_ZThn16_N7S5721C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5721C9D0Ev,_ZThn16_N7S5721C9D0Ev),
};
extern void _ZN8S5721C10D1Ev();
extern void _ZN8S5721C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C10__A2__7S5721C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-128,-64),
  ABISELECT(-496,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&_ZN8S5721C10D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C10D0Ev,
};
extern void _ZN8S5721C11D1Ev();
extern void _ZN8S5721C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5721C118S5721C10__A4__7S5721C1[] = {
  ABISELECT(-496,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S5721C11[0]),
  (VTBL_ENTRY)&_ZN8S5721C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5721C11D0Ev,
};
extern void _ZN7S5721C7D1Ev();
extern void _ZN7S5721C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5721C78S5721C118S5721C10__A6__7S5721C1[] = {
  ABISELECT(-496,-296),
  0,
  (VTBL_ENTRY)&(_ZTI7S5721C7[0]),
  (VTBL_ENTRY)&_ZN7S5721C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5721C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S5721C10__A2__7S5721C1[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S5721C7__A1__8S5721C10__A2__7S5721C1[] = {
  ABISELECT(144,72),
  ABISELECT(-352,-224),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S5721C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev),
};
static  VTT_ENTRY vtt_S5721C1[] = {
  {&(_ZTV7S5721C1[8]),  8,88},
  {&(_tg__ZTV7S5721C3__7S5721C1[8]),  8,11},
  {&(_tg__ZTV7S5721C67S5721C3__7S5721C1[6]),  6,9},
  {&(_tg__ZTV7S5721C97S5721C67S5721C3__7S5721C1[5]),  5,7},
  {&(_tg__ZTV8S5721C107S5721C97S5721C67S5721C3__7S5721C1[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C107S5721C97S5721C67S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C107S5721C97S5721C67S5721C3__A1__7S5721C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C97S5721C67S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C107S5721C97S5721C67S5721C3__7S5721C1[4]),  4,6},
  {&(_tg__ZTV8S5721C117S5721C97S5721C67S5721C3__A1__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C117S5721C97S5721C67S5721C3__A2__7S5721C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__7S5721C97S5721C67S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C97S5721C67S5721C3__7S5721C1[4]),  4,6},
  {&(_tg__ZTV8S5721C11__A1__7S5721C97S5721C67S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C67S5721C3__7S5721C1[4]),  4,6},
  {&(_tg__ZTV7S5721C9__7S5721C67S5721C3__7S5721C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A2__7S5721C67S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV8S5721C117S5721C9__A1__7S5721C67S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C77S5721C3__A5__7S5721C1[3]),  3,5},
  {&(_tg__ZTV8S5721C127S5721C3__7S5721C1[6]),  6,8},
  {&(_tg__ZTV7S5721C7__8S5721C127S5721C3__7S5721C1[4]),  4,6},
  {&(_tg__ZTV8S5721C10__8S5721C127S5721C3__7S5721C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S5721C118S5721C10__A2__8S5721C127S5721C3__7S5721C1[2]),  2,4},
  {&(_tg__ZTV12S21216C26_nt__A3__8S5721C127S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C3__7S5721C1[4]),  4,6},
  {&(_tg__ZTV7S5721C97S5721C6__7S5721C3__7S5721C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A2__7S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV8S5721C117S5721C97S5721C6__A1__7S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C9__A1__7S5721C3__7S5721C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S5721C118S5721C107S5721C9__A8__7S5721C3__7S5721C1[2]),  2,4},
  {&(_tg__ZTV8S5721C117S5721C9__A3__7S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt8S5721C117S5721C9__A10__7S5721C3__7S5721C1[2]),  2,4},
  {&(_tg__ZTV7S5721C7__A__7S5721C3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV8S5721C12__7S5721C3__7S5721C1[6]),  6,8},
  {&(_tg__ZTV8S5721C10__A2__7S5721C3__7S5721C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S5721C118S5721C10__A13__7S5721C3__7S5721C1[2]),  2,4},
  {&(_ZTV7S5721C1[48]),  48,88},
  {&(_ZTV7S5721C1[16]),  16,88},
  {&(_ZTV7S5721C1[53]),  53,88},
  {&(_ZTV7S5721C1[25]),  25,88},
  {&(_ZTV7S5721C1[61]),  61,88},
  {&(_ZTV7S5721C1[65]),  65,88},
  {&(_ZTV7S5721C1[70]),  70,88},
  {&(_ZTV7S5721C1[74]),  74,88},
  {&(_ZTV7S5721C1[34]),  34,88},
  {&(_ZTV7S5721C1[42]),  42,88},
  {&(_ZTV7S5721C1[82]),  82,88},
  {&(_ZTV7S5721C1[86]),  86,88},
  {&(_tg__ZTV7S5721C7__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C9__A1__7S5721C1[5]),  5,7},
  {&(_tg__ZTV8S5721C107S5721C9__A1__7S5721C1[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C107S5721C9__A2__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C107S5721C9__A3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C107S5721C9__A1__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C107S5721C9__A1__7S5721C1[4]),  4,6},
  {&(_tg__ZTV8S5721C117S5721C9__A3__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C117S5721C9__A4__7S5721C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__7S5721C9__A1__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__7S5721C9__A1__7S5721C1[4]),  4,6},
  {&(_tg__ZTV8S5721C11__A1__7S5721C9__A1__7S5721C1[3]),  3,5},
  {&(_tg__ZTV8S5721C10__A2__7S5721C1[5]),  5,7},
  {&(_tg__ZTV8S5721C118S5721C10__A4__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C78S5721C118S5721C10__A6__7S5721C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S5721C10__A2__7S5721C1[3]),  3,5},
  {&(_tg__ZTV7S5721C7__A1__8S5721C10__A2__7S5721C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S5721C1[];
extern  VTBL_ENTRY _ZTV7S5721C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5721C1[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S5721C3D0Ev,_ZTv0_n24_N7S5721C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S5721C3D0Ev,_ZThn296_N7S5721C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S5721C3D0Ev,_ZThn236_N7S5721C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S5721C3D1Ev,_ZTv0_n24_N7S5721C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S5721C3D1Ev,_ZThn296_N7S5721C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S5721C3D1Ev,_ZThn236_N7S5721C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C3D0Ev,_ZTv0_n12_N7S5721C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S5721C3D0Ev,_ZThn232_N7S5721C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C3D1Ev,_ZTv0_n12_N7S5721C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S5721C3D1Ev,_ZThn232_N7S5721C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C3D0Ev,_ZTv0_n16_N7S5721C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S5721C3D0Ev,_ZThn224_N7S5721C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C3D1Ev,_ZTv0_n16_N7S5721C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S5721C3D1Ev,_ZThn224_N7S5721C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C12D0Ev,_ZTv0_n12_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S5721C12D0Ev,_ZThn156_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C12D1Ev,_ZTv0_n12_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S5721C12D1Ev,_ZThn156_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S5721C12D0Ev,_ZTv0_n24_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S5721C12D0Ev,_ZThn220_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S5721C12D1Ev,_ZTv0_n24_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S5721C12D1Ev,_ZThn220_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C12D0Ev,_ZTv0_n16_N8S5721C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S5721C12D0Ev,_ZThn148_N8S5721C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C12D1Ev,_ZTv0_n16_N8S5721C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S5721C12D1Ev,_ZThn148_N8S5721C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C6D0Ev,_ZTv0_n12_N7S5721C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S5721C6D0Ev,_ZThn232_N7S5721C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C6D1Ev,_ZTv0_n12_N7S5721C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S5721C6D1Ev,_ZThn232_N7S5721C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C6D0Ev,_ZTv0_n16_N7S5721C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S5721C6D0Ev,_ZThn224_N7S5721C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C6D1Ev,_ZTv0_n16_N7S5721C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S5721C6D1Ev,_ZThn224_N7S5721C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D0Ev,_ZTv0_n16_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S5721C9D0Ev,_ZThn220_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C9D1Ev,_ZTv0_n16_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S5721C9D1Ev,_ZThn220_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D0Ev,_ZTv0_n12_N7S5721C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S5721C9D0Ev,_ZThn228_N7S5721C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C9D1Ev,_ZTv0_n12_N7S5721C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S5721C9D1Ev,_ZThn228_N7S5721C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D0Ev,_ZTv0_n16_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S5721C10D0Ev,_ZThn220_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S5721C10D1Ev,_ZTv0_n16_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S5721C10D1Ev,_ZThn220_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D0Ev,_ZTv0_n12_N8S5721C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S5721C10D0Ev,_ZThn228_N8S5721C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5721C10D1Ev,_ZTv0_n12_N8S5721C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S5721C10D1Ev,_ZThn228_N8S5721C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S5721C1D0Ev,_ZTv0_n24_N7S5721C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S5721C1D0Ev,_ZThn296_N7S5721C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S5721C1D0Ev,_ZThn236_N7S5721C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S5721C1D1Ev,_ZTv0_n24_N7S5721C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S5721C1D1Ev,_ZThn296_N7S5721C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S5721C1D1Ev,_ZThn236_N7S5721C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C1D0Ev,_ZTv0_n12_N7S5721C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S5721C1D0Ev,_ZThn232_N7S5721C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5721C1D1Ev,_ZTv0_n12_N7S5721C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S5721C1D1Ev,_ZThn232_N7S5721C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C1D0Ev,_ZTv0_n16_N7S5721C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S5721C1D0Ev,_ZThn224_N7S5721C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5721C1D1Ev,_ZTv0_n16_N7S5721C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S5721C1D1Ev,_ZThn224_N7S5721C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5721C1 = {  "S5721C1", // class name
  bases_S5721C1, 44,
  &(vtc_S5721C1[0]), // expected_vtbl_contents
  &(vtt_S5721C1[0]), // expected_vtt_contents
  ABISELECT(528,312), // object size
  NSPAIRA(_ZTI7S5721C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5721C1),88, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5721C1),65, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2796C5_nt  {
  ::S9526C11_nt s2796c5f0;
  int s2796c5f1;
  void  mf2796c5(); // _ZN10S2796C5_nt8mf2796c5Ev
};
//SIG(-1 S2796C5_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S2796C5_nt ::mf2796c5(){}

//skip512 S2796C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2796C2  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s2796c2f0;
  int s2796c2f1;
  void *s2796c2f2;
  char s2796c2f3;
  int s2796c2f4;
  virtual  ~S2796C2(); // _ZN7S2796C2D1Ev
  virtual void  v3(); // _ZN7S2796C22v3Ev
  virtual void  v4(); // _ZN7S2796C22v4Ev
  virtual void  v5(); // _ZN7S2796C22v5Ev
  virtual void  v6(); // _ZN7S2796C22v6Ev
  S2796C2(); // tgen
};
//SIG(-1 S2796C2) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S2796C2 ::~S2796C2(){ note_dtor("S2796C2", this);}
void  S2796C2 ::v3(){vfunc_called(this, "_ZN7S2796C22v3Ev");}
void  S2796C2 ::v4(){vfunc_called(this, "_ZN7S2796C22v4Ev");}
void  S2796C2 ::v5(){vfunc_called(this, "_ZN7S2796C22v5Ev");}
void  S2796C2 ::v6(){vfunc_called(this, "_ZN7S2796C22v6Ev");}
S2796C2 ::S2796C2(){ note_ctor("S2796C2", this);} // tgen

static void Test_S2796C2()
{
  extern Class_Descriptor cd_S2796C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S2796C2, buf);
    S2796C2 *dp, &lv = *(dp=new (buf) S2796C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S2796C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2796C2)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S2796C2");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S2796C2");
    check_field_offset(lv, s2796c2f0, ABISELECT(24,12), "S2796C2.s2796c2f0");
    check_field_offset(lv, s2796c2f1, ABISELECT(48,28), "S2796C2.s2796c2f1");
    check_field_offset(lv, s2796c2f2, ABISELECT(56,32), "S2796C2.s2796c2f2");
    check_field_offset(lv, s2796c2f3, ABISELECT(64,36), "S2796C2.s2796c2f3");
    check_field_offset(lv, s2796c2f4, ABISELECT(68,40), "S2796C2.s2796c2f4");
    test_class_info(&lv, &cd_S2796C2);
    dp->~S2796C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2796C2(Test_S2796C2, "S2796C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S2796C2C1Ev();
extern void _ZN7S2796C2D1Ev();
Name_Map name_map_S2796C2[] = {
  NSPAIR(_ZN7S2796C2C1Ev),
  NSPAIR(_ZN7S2796C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S2796C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2796C2[];
extern void _ZN7S2796C2D1Ev();
extern void _ZN7S2796C2D0Ev();
extern void _ZN7S2796C22v3Ev();
extern void _ZN7S2796C22v4Ev();
extern void _ZN7S2796C22v5Ev();
extern void _ZN7S2796C22v6Ev();
static  VTBL_ENTRY vtc_S2796C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2796C2[0]),
  (VTBL_ENTRY)&_ZN7S2796C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2796C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S2796C2[];
extern  VTBL_ENTRY _ZTV7S2796C2[];
Class_Descriptor cd_S2796C2 = {  "S2796C2", // class name
  bases_S2796C2, 2,
  &(vtc_S2796C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S2796C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2796C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2796C12_nt  : S9740C25 {
};
//SIG(-1 S2796C12_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S2796C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S9740C25;
static Base_Class bases_S2796C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9740C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2796C1  : S2796C2 {
  ::S2328C15_nt s2796c1f0;
  void *s2796c1f1[4];
  ::S2796C12_nt s2796c1f2;
  void *s2796c1f3;
  ::S3620C26_nt s2796c1f4;
  int s2796c1f5;
  virtual  ~S2796C1(); // _ZN7S2796C1D1Ev
  virtual void  v1(); // _ZN7S2796C12v1Ev
  virtual void  v2(); // _ZN7S2796C12v2Ev
  S2796C1(); // tgen
};
//SIG(1 S2796C1) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v3 v4 v5 v6 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd v1 v2 FC8{ BC9{ m Fp Fi FC10{ m} FC10}} Fp[4] FC11{ BC12{ m Fp Fi FC7 FC13{ m}}} Fp FC14{ m Fp Fi[2] FC15{ m}} Fi}


 S2796C1 ::~S2796C1(){ note_dtor("S2796C1", this);}
void  S2796C1 ::v1(){vfunc_called(this, "_ZN7S2796C12v1Ev");}
void  S2796C1 ::v2(){vfunc_called(this, "_ZN7S2796C12v2Ev");}
S2796C1 ::S2796C1(){ note_ctor("S2796C1", this);} // tgen

static void Test_S2796C1()
{
  extern Class_Descriptor cd_S2796C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S2796C1, buf);
    S2796C1 *dp, &lv = *(dp=new (buf) S2796C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S2796C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2796C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S2796C2*), ABISELECT(8,4), "S2796C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S2796C2*), ABISELECT(16,8), "S2796C1");
    check_base_class_offset(lv, (S2796C2*), 0, "S2796C1");
    check_field_offset(lv, s2796c1f0, ABISELECT(72,44), "S2796C1.s2796c1f0");
    check_field_offset(lv, s2796c1f1, ABISELECT(88,56), "S2796C1.s2796c1f1");
    check_field_offset(lv, s2796c1f2, ABISELECT(120,72), "S2796C1.s2796c1f2");
    check_field_offset(lv, s2796c1f3, ABISELECT(136,84), "S2796C1.s2796c1f3");
    check_field_offset(lv, s2796c1f4, ABISELECT(144,88), "S2796C1.s2796c1f4");
    check_field_offset(lv, s2796c1f5, ABISELECT(168,104), "S2796C1.s2796c1f5");
    test_class_info(&lv, &cd_S2796C1);
    dp->~S2796C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2796C1(Test_S2796C1, "S2796C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S2796C1C1Ev();
extern void _ZN7S2796C1D1Ev();
Name_Map name_map_S2796C1[] = {
  NSPAIR(_ZN7S2796C1C1Ev),
  NSPAIR(_ZN7S2796C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S2796C2;
extern VTBL_ENTRY _ZTI7S2796C2[];
extern  VTBL_ENTRY _ZTV7S2796C2[];
static Base_Class bases_S2796C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2796C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2796C1[];
extern void _ZN7S2796C1D1Ev();
extern void _ZN7S2796C1D0Ev();
extern void _ZN7S2796C22v3Ev();
extern void _ZN7S2796C22v4Ev();
extern void _ZN7S2796C22v5Ev();
extern void _ZN7S2796C22v6Ev();
extern void _ZN7S2796C12v1Ev();
extern void _ZN7S2796C12v2Ev();
static  VTBL_ENTRY vtc_S2796C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2796C1[0]),
  (VTBL_ENTRY)&_ZN7S2796C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2796C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2796C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2796C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2796C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2796C1[];
extern  VTBL_ENTRY _ZTV7S2796C1[];
Class_Descriptor cd_S2796C1 = {  "S2796C1", // class name
  bases_S2796C1, 3,
  &(vtc_S2796C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S2796C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2796C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C6  : S21216C26_nt , virtual S19894C34 {
  int s19198c6f0;
  virtual  ~S19198C6(); // _ZN8S19198C6D2Ev
  S19198C6(); // tgen
};
//SIG(-1 S19198C6) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S19198C6()
{
  extern Class_Descriptor cd_S19198C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19198C6, buf);
    S19198C6 *dp, &lv = *(dp=new (buf) S19198C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19198C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C6)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S19198C6");
    check_base_class_offset(lv, (S19894C34*), 0, "S19198C6");
    check_field_offset(lv, s19198c6f0, ABISELECT(8,4), "S19198C6.s19198c6f0");
    test_class_info(&lv, &cd_S19198C6);
    dp->~S19198C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C6(Test_S19198C6, "S19198C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19198C6C1Ev();
extern void _ZN8S19198C6D2Ev();
Name_Map name_map_S19198C6[] = {
  NSPAIR(_ZN8S19198C6C1Ev),
  NSPAIR(_ZN8S19198C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19198C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19198C6[];
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY vtc_S19198C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern VTBL_ENTRY _ZTV8S19198C6[];
static  VTT_ENTRY vtt_S19198C6[] = {
  {&(_ZTV8S19198C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
Class_Descriptor cd_S19198C6 = {  "S19198C6", // class name
  bases_S19198C6, 2,
  &(vtc_S19198C6[0]), // expected_vtbl_contents
  &(vtt_S19198C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19198C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19198C6),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19198C6),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C5  : virtual S19894C34 , S19198C6 , S21216C26_nt {
  long s19198c5f0;
  ~S19198C5(); // tgen
  S19198C5(); // tgen
};
//SIG(-1 S19198C5) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S19198C5()
{
  extern Class_Descriptor cd_S19198C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19198C5, buf);
    S19198C5 *dp, &lv = *(dp=new (buf) S19198C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19198C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19198C5");
    check_base_class_offset(lv, (S19894C34*)(S19198C6*), 0, "S19198C5");
    check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), 0, "S19198C5");
    check_base_class_offset(lv, (S19198C6*), 0, "S19198C5");
    /*is_ambiguous_... S19198C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S19198C5");
    check_field_offset(lv, s19198c5f0, ABISELECT(24,12), "S19198C5.s19198c5f0");
    test_class_info(&lv, &cd_S19198C5);
    dp->~S19198C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C5(Test_S19198C5, "S19198C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19198C5C1Ev();
extern void _ZN8S19198C5D1Ev();
Name_Map name_map_S19198C5[] = {
  NSPAIR(_ZN8S19198C5C1Ev),
  NSPAIR(_ZN8S19198C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19198C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19198C6,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI8S19198C5[];
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
extern void ABISELECT(_ZThn16_N8S19198C5D1Ev,_ZThn8_N8S19198C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S19198C5D0Ev,_ZThn8_N8S19198C5D0Ev)();
static  VTBL_ENTRY vtc_S19198C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19198C5D1Ev,_ZThn8_N8S19198C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19198C5D0Ev,_ZThn8_N8S19198C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19198C5[];
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__8S19198C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
static  VTT_ENTRY vtt_S19198C5[] = {
  {&(_ZTV8S19198C5[3]),  3,9},
  {&(_tg__ZTV8S19198C6__8S19198C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
Class_Descriptor cd_S19198C5 = {  "S19198C5", // class name
  bases_S19198C5, 4,
  &(vtc_S19198C5[0]), // expected_vtbl_contents
  &(vtt_S19198C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19198C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19198C5),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19198C5),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  S19198C4  : S19198C5 , virtual S21216C26_nt , S19894C34 , virtual S19198C6 {
  virtual  ~S19198C4(); // _ZN8S19198C4D2Ev
  S19198C4(); // tgen
};
//SIG(-1 S19198C4) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} VBC3 vd Fi} BC5 Fl} VBC5 BC3 VBC4 vd}


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

static void Test_S19198C4()
{
  extern Class_Descriptor cd_S19198C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19198C4, buf);
    S19198C4 *dp, &lv = *(dp=new (buf) S19198C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19198C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C4)");
    check_base_class_offset(lv, (S19894C34*)(S19198C5*), ABISELECT(32,16), "S19198C4");
    check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*), ABISELECT(32,16), "S19198C4");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*), ABISELECT(32,16), "S19198C4");
    check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*), 0, "S19198C4");
    check_base_class_offset(lv, (S19198C6*)(S19198C5*), 0, "S19198C4");
    /*is_ambiguous_... S19198C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*), ABISELECT(16,8), "S19198C4");
    check_base_class_offset(lv, (S19198C5*), 0, "S19198C4");
    /*is_ambiguous_... S19198C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(32,16), "S19198C4");
    /*is_ambiguous_... S19198C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19198C4");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), ABISELECT(40,20), "S19198C4");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*), ABISELECT(40,20), "S19198C4");
    test_class_info(&lv, &cd_S19198C4);
    dp->~S19198C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C4(Test_S19198C4, "S19198C4", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19198C4C1Ev();
extern void _ZN8S19198C4D2Ev();
Name_Map name_map_S19198C4[] = {
  NSPAIR(_ZN8S19198C4C1Ev),
  NSPAIR(_ZN8S19198C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
static Base_Class bases_S19198C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19198C4[];
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
extern void ABISELECT(_ZThn16_N8S19198C4D1Ev,_ZThn8_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19198C4D0Ev,_ZThn8_N8S19198C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19198C4D1Ev,_ZThn16_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19198C4D0Ev,_ZThn16_N8S19198C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19198C4D1Ev,_ZThn20_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19198C4D0Ev,_ZThn20_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19198C4[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19198C4D1Ev,_ZThn8_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19198C4D0Ev,_ZThn8_N8S19198C4D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19198C4[];
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C5__8S19198C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C5__8S19198C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
static  VTT_ENTRY vtt_S19198C4[] = {
  {&(_ZTV8S19198C4[5]),  5,22},
  {&(_tg__ZTV8S19198C5__8S19198C4[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C5__8S19198C4[3]),  3,5},
  {&(_ZTV8S19198C4[14]),  14,22},
  {&(_ZTV8S19198C4[20]),  20,22},
  {&(_tg__ZTV8S19198C6__A1__8S19198C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C4D0Ev,_ZThn20_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C4D1Ev,_ZThn20_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19198C4D0Ev,_ZThn16_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19198C4D1Ev,_ZThn16_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19198C4 = {  "S19198C4", // class name
  bases_S19198C4, 9,
  &(vtc_S19198C4[0]), // expected_vtbl_contents
  &(vtt_S19198C4[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19198C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19198C4),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19198C4),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C8  : S19894C34 {
  int s19198c8f0;
};
//SIG(-1 S19198C8) C1{ BC2{ m} Fi}



static void Test_S19198C8()
{
  extern Class_Descriptor cd_S19198C8;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S19198C8, buf);
    S19198C8 &lv = *(new (buf) S19198C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S19198C8)");
    check2(__alignof__(lv), 4, "__alignof__(S19198C8)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19198C8");
    check_field_offset(lv, s19198c8f0, 0, "S19198C8.s19198c8f0");
    test_class_info(&lv, &cd_S19198C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C8(Test_S19198C8, "S19198C8", 4);

#else // __cplusplus

extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19198C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19198C8[];
Class_Descriptor cd_S19198C8 = {  "S19198C8", // class name
  bases_S19198C8, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI8S19198C8),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  S19198C9  : virtual S19894C34 , virtual S19198C6 , virtual S19198C4 , S21216C26_nt {
  __tsi64 s19198c9f0;
  ~S19198C9(); // tgen
  S19198C9(); // tgen
};
//SIG(-1 S19198C9) C1{ VBC2{ m} VBC3{ BC4{ vd m} VBC2 vd Fi} VBC5{ BC6{ VBC2 BC3 BC4 Fl} VBC4 BC2 VBC3 vd} BC4 FL}


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

static void Test_S19198C9()
{
  extern Class_Descriptor cd_S19198C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S19198C9, buf);
    S19198C9 *dp, &lv = *(dp=new (buf) S19198C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S19198C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C9)");
    /*is_ambiguous_... S19198C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19198C9");
    /*is_ambiguous_... S19198C9::S19198C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*), 0, "S19198C9");
    check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*), 0, "S19198C9");
    check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*), 0, "S19198C9");
    /*is_ambiguous_... S19198C9::S19198C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), ABISELECT(16,12), "S19198C9");
    /*is_ambiguous_... S19198C9::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*), ABISELECT(16,12), "S19198C9");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*), ABISELECT(16,12), "S19198C9");
    check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(32,20), "S19198C9");
    check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(32,20), "S19198C9");
    /*is_ambiguous_... S19198C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*), ABISELECT(48,28), "S19198C9");
    check_base_class_offset(lv, (S19198C5*)(S19198C4*), ABISELECT(32,20), "S19198C9");
    /*is_ambiguous_... S19198C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*), ABISELECT(64,36), "S19198C9");
    /*is_ambiguous_... S19198C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*), ABISELECT(32,20), "S19198C9");
    check_base_class_offset(lv, (S19198C4*), ABISELECT(32,20), "S19198C9");
    /*is_ambiguous_... S19198C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19198C9");
    check_field_offset(lv, s19198c9f0, ABISELECT(8,4), "S19198C9.s19198c9f0");
    test_class_info(&lv, &cd_S19198C9);
    dp->~S19198C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C9(Test_S19198C9, "S19198C9", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S19198C9C1Ev();
extern void _ZN8S19198C9D1Ev();
Name_Map name_map_S19198C9[] = {
  NSPAIR(_ZN8S19198C9C1Ev),
  NSPAIR(_ZN8S19198C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19198C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,28), //bcp->offset
    22, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19198C4,    ABISELECT(32,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19198C9[];
extern void _ZN8S19198C9D1Ev();
extern void _ZN8S19198C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19198C9D1Ev,_ZThn12_N8S19198C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19198C9D0Ev,_ZThn12_N8S19198C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19198C9D1Ev,_ZThn20_N8S19198C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19198C9D0Ev,_ZThn20_N8S19198C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19198C9D1Ev,_ZTvn8_n24_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19198C9D0Ev,_ZTvn8_n24_N8S19198C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19198C9D1Ev,_ZThn36_N8S19198C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19198C9D0Ev,_ZThn36_N8S19198C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19198C9[] = {
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&_ZN8S19198C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C9D1Ev,_ZTvn8_n24_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C9D0Ev,_ZTvn8_n24_N8S19198C9D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19198C9[];
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__8S19198C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C4__8S19198C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C4__8S19198C9[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C4__A1__8S19198C9[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19198C4D1Ev,_ZThn16_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19198C4D0Ev,_ZThn16_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C4__8S19198C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C4__8S19198C9[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
static  VTT_ENTRY vtt_S19198C9[] = {
  {&(_ZTV8S19198C9[6]),  6,31},
  {&(_ZTV8S19198C9[12]),  12,31},
  {&(_ZTV8S19198C9[20]),  20,31},
  {&(_ZTV8S19198C9[24]),  24,31},
  {&(_ZTV8S19198C9[29]),  29,31},
  {&(_tg__ZTV8S19198C6__8S19198C9[3]),  3,5},
  {&(_tg__ZTV8S19198C4__8S19198C9[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C4__8S19198C9[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C4__A1__8S19198C9[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C4__8S19198C9[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C4__8S19198C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19198C9[];
extern  VTBL_ENTRY _ZTV8S19198C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C9[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19198C4D0Ev,_ZThn16_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19198C4D1Ev,_ZThn16_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19198C9D0Ev,_ZThn36_N8S19198C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19198C9D1Ev,_ZThn36_N8S19198C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19198C9D0Ev,_ZThn20_N8S19198C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19198C9D1Ev,_ZThn20_N8S19198C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19198C9D0Ev,_ZThn12_N8S19198C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19198C9D1Ev,_ZThn12_N8S19198C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19198C9 = {  "S19198C9", // class name
  bases_S19198C9, 11,
  &(vtc_S19198C9[0]), // expected_vtbl_contents
  &(vtt_S19198C9[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S19198C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19198C9),31, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19198C9),11, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C2  : S19894C34 , S19198C4 , virtual S19198C8 , virtual S19198C9 {
  void *s19198c2f0;
  virtual  ~S19198C2(); // _ZN8S19198C2D2Ev
  S19198C2(); // tgen
};
//SIG(-1 S19198C2) C1{ BC2{ m} BC3{ BC4{ VBC2 BC5{ BC6{ vd m} VBC2 vd Fi} BC6 Fl} VBC6 BC2 VBC5 vd} VBC7{ BC2 Fi} VBC8{ VBC2 VBC5 VBC3 BC6 FL} vd Fp}


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

static void Test_S19198C2()
{
  extern Class_Descriptor cd_S19198C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S19198C2, buf);
    S19198C2 *dp, &lv = *(dp=new (buf) S19198C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S19198C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C2)");
    /*is_ambiguous_... S19198C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), ABISELECT(32,16), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C9*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*), 0, "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*), 0, "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*), ABISELECT(16,8), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C4*), 0, "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*), ABISELECT(40,20), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*), 0, "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), ABISELECT(48,24), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*), ABISELECT(48,24), "S19198C2");
    /*is_ambiguous_... S19198C9::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C9*), ABISELECT(48,24), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*), ABISELECT(48,24), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C4*), 0, "S19198C2");
    check_base_class_offset(lv, (S19894C34*)(S19198C8*), ABISELECT(60,32), "S19198C2");
    check_base_class_offset(lv, (S19198C8*), ABISELECT(60,32), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(80,48), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(80,48), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*), ABISELECT(96,56), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C4*), ABISELECT(80,48), "S19198C2");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*), ABISELECT(80,48), "S19198C2");
    check_base_class_offset(lv, (S19198C4*)(S19198C9*), ABISELECT(80,48), "S19198C2");
    /*is_ambiguous_... S19198C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C9*), ABISELECT(64,36), "S19198C2");
    check_base_class_offset(lv, (S19198C9*), ABISELECT(64,36), "S19198C2");
    check_field_offset(lv, s19198c2f0, ABISELECT(32,16), "S19198C2.s19198c2f0");
    test_class_info(&lv, &cd_S19198C2);
    dp->~S19198C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C2(Test_S19198C2, "S19198C2", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S19198C2C1Ev();
extern void _ZN8S19198C2D2Ev();
Name_Map name_map_S19198C2[] = {
  NSPAIR(_ZN8S19198C2C1Ev),
  NSPAIR(_ZN8S19198C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C8;
extern VTBL_ENTRY _ZTI8S19198C8[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C9;
extern VTBL_ENTRY _ZTI8S19198C9[];
extern  VTBL_ENTRY _ZTV8S19198C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C9[];
static Base_Class bases_S19198C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C26_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(48,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    ABISELECT(60,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19198C8,    ABISELECT(60,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(96,56), //bcp->offset
    42, //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
    16, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19198C4,    ABISELECT(80,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19198C9,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19198C2[];
extern void _ZN8S19198C2D1Ev();
extern void _ZN8S19198C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19198C2D1Ev,_ZThn8_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19198C2D0Ev,_ZThn8_N8S19198C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C2D1Ev,_ZTv0_n12_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19198C2D1Ev,_ZThn20_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C2D0Ev,_ZTv0_n12_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19198C2D0Ev,_ZThn20_N8S19198C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C2D1Ev,_ZTv0_n16_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19198C2D1Ev,_ZThn24_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C2D0Ev,_ZTv0_n16_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19198C2D0Ev,_ZThn24_N8S19198C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19198C2D1Ev,_ZTv0_n28_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19198C2D1Ev,_ZThn36_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19198C2D0Ev,_ZTv0_n28_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19198C2D0Ev,_ZThn36_N8S19198C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C2D1Ev,_ZTv0_n24_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S19198C2D1Ev,_ZThn48_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C2D0Ev,_ZTv0_n24_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S19198C2D0Ev,_ZThn48_N8S19198C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19198C2D1Ev,_ZTvn8_n24_N8S19198C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19198C2D0Ev,_ZTvn8_n24_N8S19198C2D0Ev)();
static  VTBL_ENTRY vtc_S19198C2[] = {
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&_ZN8S19198C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C2D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19198C2D1Ev,_ZThn8_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19198C2D0Ev,_ZThn8_N8S19198C2D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C2D1Ev,_ZTv0_n12_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C2D0Ev,_ZTv0_n12_N8S19198C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-8,-4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C2D1Ev,_ZTv0_n16_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C2D0Ev,_ZTv0_n16_N8S19198C2D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(-24,-16),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19198C2D1Ev,_ZTv0_n28_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19198C2D0Ev,_ZTv0_n28_N8S19198C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C2D1Ev,_ZTv0_n24_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C2D0Ev,_ZTv0_n24_N8S19198C2D0Ev),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C2D1Ev,_ZTvn8_n24_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C2D0Ev,_ZTvn8_n24_N8S19198C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19198C2[];
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C4__A__8S19198C2[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C4__8S19198C2[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C4__8S19198C2[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19198C4D1Ev,_ZThn20_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19198C4D0Ev,_ZThn20_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C4__A__8S19198C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19198C4D1Ev,_ZThn24_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19198C4D0Ev,_ZThn24_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C4__A__8S19198C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(-8,-4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void _ZN8S19198C9D1Ev();
extern void _ZN8S19198C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C9__8S19198C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&_ZN8S19198C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C6__8S19198C9__8S19198C2[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19198C9D1Ev,_ZThn12_N8S19198C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19198C9D0Ev,_ZThn12_N8S19198C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C4__8S19198C9__8S19198C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S19198C9D1Ev,_ZTvn8_n24_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19198C9D0Ev,_ZTvn8_n24_N8S19198C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19198C58S19198C4__A2__8S19198C9__8S19198C2[] = {
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C9D1Ev,_ZTvn8_n24_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C9D0Ev,_ZTvn8_n24_N8S19198C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A3__8S19198C9__8S19198C2[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev),
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C4__A1__8S19198C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C4__A1__8S19198C2[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C4__A2__8S19198C2[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C4__A1__8S19198C2[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C4__A1__8S19198C2[] = {
  ABISELECT(32,24),
  ABISELECT(-8,-4),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
static  VTT_ENTRY vtt_S19198C2[] = {
  {&(_ZTV8S19198C2[8]),  8,46},
  {&(_tg__ZTV8S19198C4__A__8S19198C2[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C4__8S19198C2[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C4__8S19198C2[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C4__A__8S19198C2[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C4__A__8S19198C2[4]),  4,6},
  {&(_ZTV8S19198C2[17]),  17,46},
  {&(_ZTV8S19198C2[23]),  23,46},
  {&(_ZTV8S19198C2[32]),  32,46},
  {&(_ZTV8S19198C2[40]),  40,46},
  {&(_ZTV8S19198C2[44]),  44,46},
  {&(_tg__ZTV8S19198C6__A1__8S19198C2[3]),  3,5},
  {&(_tg__ZTV8S19198C9__8S19198C2[6]),  6,8},
  {&(_tg__ZTV8S19198C6__8S19198C9__8S19198C2[4]),  4,6},
  {&(_tg__ZTV8S19198C4__8S19198C9__8S19198C2[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S19198C58S19198C4__A2__8S19198C9__8S19198C2[2]),  2,4},
  {&(_tg__ZTV12S21216C26_nt__A3__8S19198C9__8S19198C2[3]),  3,5},
  {&(_tg__ZTV8S19198C4__A1__8S19198C2[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C4__A1__8S19198C2[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C4__A2__8S19198C2[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C4__A1__8S19198C2[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C4__A1__8S19198C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19198C2[];
extern  VTBL_ENTRY _ZTV8S19198C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C2[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19198C9D0Ev,_ZThn12_N8S19198C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19198C9D1Ev,_ZThn12_N8S19198C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C4D0Ev,_ZThn24_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C4D1Ev,_ZThn24_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C4D0Ev,_ZThn20_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C4D1Ev,_ZThn20_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C2D0Ev,_ZTv0_n24_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19198C2D0Ev,_ZThn48_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C2D1Ev,_ZTv0_n24_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19198C2D1Ev,_ZThn48_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19198C2D0Ev,_ZTv0_n28_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19198C2D0Ev,_ZThn36_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19198C2D1Ev,_ZTv0_n28_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19198C2D1Ev,_ZThn36_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C2D0Ev,_ZTv0_n16_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C2D0Ev,_ZThn24_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C2D1Ev,_ZTv0_n16_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C2D1Ev,_ZThn24_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C2D0Ev,_ZTv0_n12_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C2D0Ev,_ZThn20_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C2D1Ev,_ZTv0_n12_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C2D1Ev,_ZThn20_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19198C2 = {  "S19198C2", // class name
  bases_S19198C2, 21,
  &(vtc_S19198C2[0]), // expected_vtbl_contents
  &(vtt_S19198C2[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S19198C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19198C2),46, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19198C2),22, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C11  : virtual S19894C34 , virtual S21216C26_nt , virtual S19198C6 , S19198C4 , S19198C5 {
  ::S19198C4 s19198c11f0;
  ~S19198C11(); // tgen
  S19198C11(); // tgen
};
//SIG(-1 S19198C11) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC3 VBC2 vd Fi} BC5{ BC6{ VBC2 BC4 BC3 Fl} VBC3 BC2 VBC4 vd} BC6 FC5}


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

static void Test_S19198C11()
{
  extern Class_Descriptor cd_S19198C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S19198C11, buf);
    S19198C11 *dp, &lv = *(dp=new (buf) S19198C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S19198C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C11)");
    /*is_ambiguous_... S19198C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), ABISELECT(120,60), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*), ABISELECT(120,60), "S19198C11");
    check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*), ABISELECT(120,60), "S19198C11");
    check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(120,60), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*), ABISELECT(120,60), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*), ABISELECT(120,60), "S19198C11");
    /*is_ambiguous_... S19198C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(120,60), "S19198C11");
    /*is_ambiguous_... S19198C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*), ABISELECT(120,60), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), ABISELECT(128,64), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*), ABISELECT(128,64), "S19198C11");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*), ABISELECT(128,64), "S19198C11");
    check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*), 0, "S19198C11");
    check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*), 0, "S19198C11");
    /*is_ambiguous_... S19198C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*), ABISELECT(16,8), "S19198C11");
    check_base_class_offset(lv, (S19198C5*)(S19198C4*), 0, "S19198C11");
    /*is_ambiguous_... S19198C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*), 0, "S19198C11");
    check_base_class_offset(lv, (S19198C4*), 0, "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*), ABISELECT(32,16), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*), ABISELECT(32,16), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*), ABISELECT(48,24), "S19198C11");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C5*), ABISELECT(32,16), "S19198C11");
    check_field_offset(lv, s19198c11f0, ABISELECT(64,32), "S19198C11.s19198c11f0");
    test_class_info(&lv, &cd_S19198C11);
    dp->~S19198C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C11(Test_S19198C11, "S19198C11", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN9S19198C11C1Ev();
extern void _ZN9S19198C11D1Ev();
Name_Map name_map_S19198C11[] = {
  NSPAIR(_ZN9S19198C11C1Ev),
  NSPAIR(_ZN9S19198C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
static Base_Class bases_S19198C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(120,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(128,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19198C11[];
extern void _ZN9S19198C11D1Ev();
extern void _ZN9S19198C11D0Ev();
extern void ABISELECT(_ZThn16_N9S19198C11D1Ev,_ZThn8_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19198C11D0Ev,_ZThn8_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19198C11D1Ev,_ZThn24_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19198C11D0Ev,_ZThn24_N9S19198C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19198C11D1Ev,_ZThn60_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19198C11D0Ev,_ZThn60_N9S19198C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19198C11D1Ev,_ZThn64_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19198C11D0Ev,_ZThn64_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19198C11[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&_ZN9S19198C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19198C11D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19198C11D1Ev,_ZThn8_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19198C11D0Ev,_ZThn8_N9S19198C11D0Ev),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19198C11D1Ev,_ZThn24_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19198C11D0Ev,_ZThn24_N9S19198C11D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19198C11[];
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C4__9S19198C11[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C4__9S19198C11[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C4__A1__9S19198C11[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19198C4D1Ev,_ZThn60_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19198C4D0Ev,_ZThn60_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C4__9S19198C11[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S19198C4D1Ev,_ZThn64_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S19198C4D0Ev,_ZThn64_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C4__9S19198C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C5__A1__9S19198C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C5__A2__9S19198C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__9S19198C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
static  VTT_ENTRY vtt_S19198C11[] = {
  {&(_ZTV9S19198C11[5]),  5,31},
  {&(_tg__ZTV8S19198C4__9S19198C11[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C4__9S19198C11[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C4__A1__9S19198C11[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C4__9S19198C11[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C4__9S19198C11[4]),  4,6},
  {&(_tg__ZTV8S19198C5__A1__9S19198C11[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C5__A2__9S19198C11[3]),  3,5},
  {&(_ZTV9S19198C11[23]),  23,31},
  {&(_ZTV9S19198C11[29]),  29,31},
  {&(_ZTV9S19198C11[14]),  14,31},
  {&(_tg__ZTV8S19198C6__9S19198C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19198C11[];
extern  VTBL_ENTRY _ZTV9S19198C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19198C11[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19198C4D0Ev,_ZThn64_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19198C4D1Ev,_ZThn64_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19198C4D0Ev,_ZThn60_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19198C4D1Ev,_ZThn60_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19198C11D0Ev,_ZThn64_N9S19198C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19198C11D1Ev,_ZThn64_N9S19198C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19198C11D0Ev,_ZThn60_N9S19198C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19198C11D1Ev,_ZThn60_N9S19198C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19198C11 = {  "S19198C11", // class name
  bases_S19198C11, 14,
  &(vtc_S19198C11[0]), // expected_vtbl_contents
  &(vtt_S19198C11[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI9S19198C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19198C11),31, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19198C11),12, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C10  : virtual S19198C8 , virtual S19894C34 , virtual S19198C6 , S21216C26_nt , S19198C11 {
  virtual void  v1(); // _ZN9S19198C102v1Ev
  ~S19198C10(); // tgen
  S19198C10(); // tgen
};
//SIG(-1 S19198C10) C1{ VBC2{ BC3{ m} Fi} VBC3 VBC4{ BC5{ vd m} VBC3 vd Fi} BC5 BC6{ VBC3 VBC5 VBC4 BC7{ BC8{ VBC3 BC4 BC5 Fl} VBC5 BC3 VBC4 vd} BC8 FC7} v1}


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

static void Test_S19198C10()
{
  extern Class_Descriptor cd_S19198C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S19198C10, buf);
    S19198C10 *dp, &lv = *(dp=new (buf) S19198C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19198C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C10)");
    check_base_class_offset(lv, (S19894C34*)(S19198C8*), ABISELECT(128,64), "S19198C10");
    check_base_class_offset(lv, (S19198C8*), ABISELECT(128,64), "S19198C10");
    /*is_ambiguous_... S19198C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19198C10");
    /*is_ambiguous_... S19198C10::S19198C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*), 0, "S19198C10");
    /*is_ambiguous_... S19198C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C11*), 0, "S19198C10");
    check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*)(S19198C11*), 0, "S19198C10");
    check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*), 0, "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C11*), 0, "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C11*), 0, "S19198C10");
    /*is_ambiguous_... S19198C10::S19198C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), ABISELECT(136,68), "S19198C10");
    /*is_ambiguous_... S19198C10::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*), ABISELECT(136,68), "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C11*), ABISELECT(136,68), "S19198C10");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*)(S19198C11*), ABISELECT(136,68), "S19198C10");
    /*is_ambiguous_... S19198C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19198C10");
    /*is_ambiguous_... S19198C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C11*), ABISELECT(152,76), "S19198C10");
    /*is_ambiguous_... S19198C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*)(S19198C11*), ABISELECT(152,76), "S19198C10");
    check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(8,4), "S19198C10");
    check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(8,4), "S19198C10");
    /*is_ambiguous_... S19198C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(24,12), "S19198C10");
    check_base_class_offset(lv, (S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(8,4), "S19198C10");
    /*is_ambiguous_... S19198C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*)(S19198C11*), ABISELECT(8,4), "S19198C10");
    check_base_class_offset(lv, (S19198C4*)(S19198C11*), ABISELECT(8,4), "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C11*), ABISELECT(40,20), "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C11*), ABISELECT(40,20), "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C11*), ABISELECT(56,28), "S19198C10");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C11*), ABISELECT(40,20), "S19198C10");
    check_base_class_offset(lv, (S19198C11*), ABISELECT(8,4), "S19198C10");
    test_class_info(&lv, &cd_S19198C10);
    dp->~S19198C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C10(Test_S19198C10, "S19198C10", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S19198C10C1Ev();
extern void _ZN9S19198C10D1Ev();
Name_Map name_map_S19198C10[] = {
  NSPAIR(_ZN9S19198C10C1Ev),
  NSPAIR(_ZN9S19198C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C8;
extern VTBL_ENTRY _ZTI8S19198C8[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19198C11;
extern VTBL_ENTRY _ZTI9S19198C11[];
extern  VTBL_ENTRY _ZTV9S19198C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19198C11[];
static Base_Class bases_S19198C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19198C8,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(136,68), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21216C26_nt,    ABISELECT(152,76), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19198C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19198C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19198C11,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19198C10[];
extern void _ZN9S19198C10D1Ev();
extern void _ZN9S19198C10D0Ev();
extern void _ZN9S19198C102v1Ev();
extern void ABISELECT(_ZThn8_N9S19198C10D1Ev,_ZThn4_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S19198C10D0Ev,_ZThn4_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19198C10D1Ev,_ZThn12_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19198C10D0Ev,_ZThn12_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn40_N9S19198C10D1Ev,_ZThn20_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S19198C10D0Ev,_ZThn20_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn56_N9S19198C10D1Ev,_ZThn28_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn56_N9S19198C10D0Ev,_ZThn28_N9S19198C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19198C10D1Ev,_ZTv0_n16_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19198C10D1Ev,_ZThn68_N9S19198C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C10D0Ev,_ZTv0_n16_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19198C10D0Ev,_ZThn68_N9S19198C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C10D1Ev,_ZTv0_n12_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19198C10D1Ev,_ZThn76_N9S19198C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C10D0Ev,_ZTv0_n12_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19198C10D0Ev,_ZThn76_N9S19198C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19198C10[] = {
  ABISELECT(152,76),
  ABISELECT(136,68),
  0,
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&_ZN9S19198C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19198C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19198C102v1Ev,
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19198C10D1Ev,_ZThn4_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19198C10D0Ev,_ZThn4_N9S19198C10D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19198C10D1Ev,_ZThn12_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19198C10D0Ev,_ZThn12_N9S19198C10D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19198C10D1Ev,_ZThn20_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19198C10D0Ev,_ZThn20_N9S19198C10D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19198C10D1Ev,_ZThn28_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19198C10D0Ev,_ZThn28_N9S19198C10D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C10D1Ev,_ZTv0_n16_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C10D0Ev,_ZTv0_n16_N9S19198C10D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C10D1Ev,_ZTv0_n12_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C10D0Ev,_ZTv0_n12_N9S19198C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19198C10[];
extern void _ZN9S19198C11D1Ev();
extern void _ZN9S19198C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19198C11__9S19198C10[] = {
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&_ZN9S19198C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19198C11D0Ev,
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C49S19198C11__9S19198C10[] = {
  ABISELECT(128,64),
  ABISELECT(144,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C49S19198C11__9S19198C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C49S19198C11__A1__9S19198C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn144_N8S19198C4D1Ev,_ZThn72_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn144_N8S19198C4D0Ev,_ZThn72_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C49S19198C11__9S19198C10[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S19198C4D1Ev,_ZThn64_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S19198C4D0Ev,_ZThn64_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C49S19198C11__9S19198C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C59S19198C11__A1__9S19198C10[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C59S19198C11__A2__9S19198C10[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S19198C11D1Ev,_ZThn72_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S19198C11D0Ev,_ZThn72_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19198C11__9S19198C10[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19198C11D1Ev,_ZThn64_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19198C11D0Ev,_ZThn64_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__9S19198C11__9S19198C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C5__A1__9S19198C11__9S19198C10[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev),
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__9S19198C10[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
static  VTT_ENTRY vtt_S19198C10[] = {
  {&(_ZTV9S19198C10[6]),  6,40},
  {&(_tg__ZTV9S19198C11__9S19198C10[5]),  5,7},
  {&(_tg__ZTV8S19198C49S19198C11__9S19198C10[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C49S19198C11__9S19198C10[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C49S19198C11__A1__9S19198C10[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C49S19198C11__9S19198C10[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C49S19198C11__9S19198C10[4]),  4,6},
  {&(_tg__ZTV8S19198C59S19198C11__A1__9S19198C10[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C59S19198C11__A2__9S19198C10[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19198C11__9S19198C10[3]),  3,5},
  {&(_tg__ZTV8S19198C6__9S19198C11__9S19198C10[4]),  4,6},
  {&(_tg__ZTV8S19198C5__A1__9S19198C11__9S19198C10[3]),  3,5},
  {&(_ZTV9S19198C10[33]),  33,40},
  {&(_ZTV9S19198C10[14]),  14,40},
  {&(_ZTV9S19198C10[38]),  38,40},
  {&(_ZTV9S19198C10[23]),  23,40},
  {&(_tg__ZTV8S19198C6__9S19198C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19198C10[];
extern  VTBL_ENTRY _ZTV9S19198C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19198C10[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19198C11D0Ev,_ZThn64_N9S19198C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19198C11D1Ev,_ZThn64_N9S19198C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19198C11D0Ev,_ZThn72_N9S19198C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19198C11D1Ev,_ZThn72_N9S19198C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19198C4D0Ev,_ZThn64_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19198C4D1Ev,_ZThn64_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19198C4D0Ev,_ZThn72_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19198C4D1Ev,_ZThn72_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C10D0Ev,_ZTv0_n12_N9S19198C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19198C10D0Ev,_ZThn76_N9S19198C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C10D1Ev,_ZTv0_n12_N9S19198C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19198C10D1Ev,_ZThn76_N9S19198C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C10D0Ev,_ZTv0_n16_N9S19198C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19198C10D0Ev,_ZThn68_N9S19198C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C10D1Ev,_ZTv0_n16_N9S19198C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19198C10D1Ev,_ZThn68_N9S19198C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19198C10 = {  "S19198C10", // class name
  bases_S19198C10, 18,
  &(vtc_S19198C10[0]), // expected_vtbl_contents
  &(vtt_S19198C10[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S19198C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19198C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19198C10),17, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19198C1  : virtual S19198C2 , S19198C10 , S19198C5 , S19198C11 {
  virtual  ~S19198C1(); // _ZN8S19198C1D2Ev
  S19198C1(); // tgen
};
//SIG(1 S19198C1) C1{ VBC2{ BC3{ m} BC4{ BC5{ VBC3 BC6{ BC7{ vd m} VBC3 vd Fi} BC7 Fl} VBC7 BC3 VBC6 vd} VBC8{ BC3 Fi} VBC9{ VBC3 VBC6 VBC4 BC7 FL} vd Fp} BC10{ VBC8 VBC3 VBC6 BC7 BC11{ VBC3 VBC7 VBC6 BC4 BC5 FC4} v1} BC5 BC11 vd}


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

static void Test_S19198C1()
{
  extern Class_Descriptor cd_S19198C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,52)];
    init_test(&cd_S19198C1, buf);
    S19198C1 *dp, &lv = *(dp=new (buf) S19198C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,204), "sizeof(S19198C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19198C1)");
    /*is_ambiguous_... S19198C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C2*), ABISELECT(312,156), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*)(S19198C2*), 0, "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C2*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*), 0, "S19198C1");
    /*is_ambiguous_... S19198C9::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C9*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*), 0, "S19198C1");
    /*is_ambiguous_... S19198C10::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C10*), 0, "S19198C1");
    /*is_ambiguous_... S19198C11::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C11*)(S19198C10*), 0, "S19198C1");
    check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*)(S19198C11*)(S19198C10*), 0, "S19198C1");
    check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*)(S19198C10*), 0, "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C11*)(S19198C10*), 0, "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C11*)(S19198C10*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C11*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C4*)(S19198C11*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C5*)(S19198C11*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C6*)(S19198C5*)(S19198C11*), 0, "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C2*), ABISELECT(280,140), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*)(S19198C2*), ABISELECT(280,140), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*)(S19198C2*), ABISELECT(296,148), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C4*)(S19198C2*), ABISELECT(280,140), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*)(S19198C2*), ABISELECT(320,160), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*), ABISELECT(320,160), "S19198C1");
    /*is_ambiguous_... S19198C11::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C11*)(S19198C10*), ABISELECT(320,160), "S19198C1");
    /*is_ambiguous_... S19198C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(320,160), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C11*), ABISELECT(320,160), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C4*)(S19198C11*), ABISELECT(320,160), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*)(S19198C2*), ABISELECT(280,140), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*)(S19198C2*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C9::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C9*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C10::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C10*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C11*)(S19198C10*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C4::S19198C6 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C11*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C4*)(S19198C11*), ABISELECT(328,164), "S19198C1");
    /*is_ambiguous_... S19198C2::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C4*)(S19198C2*), ABISELECT(280,140), "S19198C1");
    check_base_class_offset(lv, (S19894C34*)(S19198C8*), ABISELECT(340,172), "S19198C1");
    check_base_class_offset(lv, (S19198C8*)(S19198C2*), ABISELECT(340,172), "S19198C1");
    check_base_class_offset(lv, (S19198C8*)(S19198C10*), ABISELECT(340,172), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(360,188), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*), ABISELECT(360,188), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*), ABISELECT(376,196), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C4*), ABISELECT(360,188), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*), ABISELECT(360,188), "S19198C1");
    check_base_class_offset(lv, (S19198C4*)(S19198C9*), ABISELECT(360,188), "S19198C1");
    /*is_ambiguous_... S19198C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C9*), ABISELECT(344,176), "S19198C1");
    check_base_class_offset(lv, (S19198C9*)(S19198C2*), ABISELECT(344,176), "S19198C1");
    check_base_class_offset(lv, (S19198C2*), ABISELECT(280,140), "S19198C1");
    /*is_ambiguous_... S19198C10::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C10*), 0, "S19198C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(8,4), "S19198C1");
    check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(8,4), "S19198C1");
    /*is_ambiguous_... S19198C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(24,12), "S19198C1");
    check_base_class_offset(lv, (S19198C5*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(8,4), "S19198C1");
    /*is_ambiguous_... S19198C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(8,4), "S19198C1");
    check_base_class_offset(lv, (S19198C4*)(S19198C11*)(S19198C10*), ABISELECT(8,4), "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C11*)(S19198C10*), ABISELECT(40,20), "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C11*)(S19198C10*), ABISELECT(40,20), "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C11*)(S19198C10*), ABISELECT(56,28), "S19198C1");
    /*is_ambiguous_... S19198C11::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C11*)(S19198C10*), ABISELECT(40,20), "S19198C1");
    check_base_class_offset(lv, (S19198C11*)(S19198C10*), ABISELECT(8,4), "S19198C1");
    check_base_class_offset(lv, (S19198C10*), 0, "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*), ABISELECT(128,64), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*), ABISELECT(128,64), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*), ABISELECT(144,72), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C5 */ AMB_check_base_class_offset(lv, (S19198C5*), ABISELECT(128,64), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(160,80), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(160,80), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(176,88), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C4*)(S19198C11*), ABISELECT(160,80), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19198C4*)(S19198C11*), ABISELECT(160,80), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C4*)(S19198C11*), ABISELECT(160,80), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C6*)(S19198C5*)(S19198C11*), ABISELECT(192,96), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C6*)(S19198C5*)(S19198C11*), ABISELECT(192,96), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19198C5*)(S19198C11*), ABISELECT(208,104), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C5*)(S19198C11*), ABISELECT(192,96), "S19198C1");
    /*is_ambiguous_... S19198C1::S19198C11 */ AMB_check_base_class_offset(lv, (S19198C11*), ABISELECT(160,80), "S19198C1");
    test_class_info(&lv, &cd_S19198C1);
    dp->~S19198C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19198C1(Test_S19198C1, "S19198C1", ABISELECT(392,204));

#else // __cplusplus

extern void _ZN8S19198C1C1Ev();
extern void _ZN8S19198C1D2Ev();
Name_Map name_map_S19198C1[] = {
  NSPAIR(_ZN8S19198C1C1Ev),
  NSPAIR(_ZN8S19198C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C8;
extern VTBL_ENTRY _ZTI8S19198C8[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C9;
extern VTBL_ENTRY _ZTI8S19198C9[];
extern  VTBL_ENTRY _ZTV8S19198C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C9[];
extern Class_Descriptor cd_S19198C2;
extern VTBL_ENTRY _ZTI8S19198C2[];
extern  VTBL_ENTRY _ZTV8S19198C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19198C11;
extern VTBL_ENTRY _ZTI9S19198C11[];
extern  VTBL_ENTRY _ZTV9S19198C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19198C11[];
extern Class_Descriptor cd_S19198C10;
extern VTBL_ENTRY _ZTI9S19198C10[];
extern  VTBL_ENTRY _ZTV9S19198C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19198C10[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19198C4;
extern VTBL_ENTRY _ZTI8S19198C4[];
extern  VTBL_ENTRY _ZTV8S19198C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C4[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C6;
extern VTBL_ENTRY _ZTI8S19198C6[];
extern  VTBL_ENTRY _ZTV8S19198C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19198C5;
extern VTBL_ENTRY _ZTI8S19198C5[];
extern  VTBL_ENTRY _ZTV8S19198C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C5[];
extern Class_Descriptor cd_S19198C11;
extern VTBL_ENTRY _ZTI9S19198C11[];
extern  VTBL_ENTRY _ZTV9S19198C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19198C11[];
static Base_Class bases_S19198C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(312,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(296,148), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(320,160), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(328,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(328,164), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19198C4,    ABISELECT(280,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(340,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19198C8,    ABISELECT(340,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(360,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(360,188), //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
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(376,196), //bcp->offset
    104, //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
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(360,188), //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
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(360,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19198C4,    ABISELECT(360,188), //bcp->offset
    96, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(344,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19198C9,    ABISELECT(344,176), //bcp->offset
    87, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19198C2,    ABISELECT(280,140), //bcp->offset
    61, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19198C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(40,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19198C11,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19198C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(144,72), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(128,64), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(176,88), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(160,80), //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
    36, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19198C4,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    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
    38, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19198C6,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(208,104), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19198C5,    ABISELECT(192,96), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19198C11,    ABISELECT(160,80), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19198C1[];
extern void _ZN8S19198C1D1Ev();
extern void _ZN8S19198C1D0Ev();
extern void _ZN9S19198C102v1Ev();
extern void ABISELECT(_ZThn8_N8S19198C1D1Ev,_ZThn4_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19198C1D0Ev,_ZThn4_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19198C1D1Ev,_ZThn12_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19198C1D0Ev,_ZThn12_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S19198C1D1Ev,_ZThn20_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19198C1D0Ev,_ZThn20_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19198C1D1Ev,_ZThn28_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19198C1D0Ev,_ZThn28_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19198C1D1Ev,_ZThn64_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19198C1D0Ev,_ZThn64_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19198C1D1Ev,_ZThn72_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19198C1D0Ev,_ZThn72_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S19198C1D1Ev,_ZThn80_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S19198C1D0Ev,_ZThn80_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19198C1D1Ev,_ZThn88_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19198C1D0Ev,_ZThn88_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19198C1D1Ev,_ZThn96_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19198C1D0Ev,_ZThn96_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S19198C1D1Ev,_ZThn104_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S19198C1D0Ev,_ZThn104_N8S19198C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19198C1D1Ev,_ZTv0_n36_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S19198C1D1Ev,_ZThn140_N8S19198C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19198C1D0Ev,_ZTv0_n36_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S19198C1D0Ev,_ZThn140_N8S19198C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n72_N8S19198C1D1Ev,_ZTvn8_n36_N8S19198C1D1Ev)();
extern void ABISELECT(_ZTvn16_n72_N8S19198C1D0Ev,_ZTvn8_n36_N8S19198C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C1D1Ev,_ZTv0_n12_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S19198C1D1Ev,_ZThn160_N8S19198C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C1D0Ev,_ZTv0_n12_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S19198C1D0Ev,_ZThn160_N8S19198C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C1D1Ev,_ZTv0_n16_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn328_N8S19198C1D1Ev,_ZThn164_N8S19198C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C1D0Ev,_ZTv0_n16_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn328_N8S19198C1D0Ev,_ZThn164_N8S19198C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19198C1D1Ev,_ZTv0_n28_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S19198C1D1Ev,_ZThn176_N8S19198C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19198C1D0Ev,_ZTv0_n28_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S19198C1D0Ev,_ZThn176_N8S19198C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C1D1Ev,_ZTv0_n24_N8S19198C1D1Ev)();
extern void ABISELECT(_ZThn360_N8S19198C1D1Ev,_ZThn188_N8S19198C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C1D0Ev,_ZTv0_n24_N8S19198C1D0Ev)();
extern void ABISELECT(_ZThn360_N8S19198C1D0Ev,_ZThn188_N8S19198C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19198C1D1Ev,_ZTvn8_n24_N8S19198C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19198C1D0Ev,_ZTvn8_n24_N8S19198C1D0Ev)();
static  VTBL_ENTRY vtc_S19198C1[] = {
  ABISELECT(360,188),
  ABISELECT(344,176),
  ABISELECT(280,140),
  ABISELECT(320,160),
  ABISELECT(328,164),
  0,
  ABISELECT(340,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&_ZN8S19198C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19198C102v1Ev,
  ABISELECT(320,160),
  ABISELECT(312,156),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19198C1D1Ev,_ZThn4_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19198C1D0Ev,_ZThn4_N8S19198C1D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19198C1D1Ev,_ZThn12_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19198C1D0Ev,_ZThn12_N8S19198C1D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19198C1D1Ev,_ZThn20_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19198C1D0Ev,_ZThn20_N8S19198C1D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19198C1D1Ev,_ZThn28_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19198C1D0Ev,_ZThn28_N8S19198C1D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S19198C1D1Ev,_ZThn64_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S19198C1D0Ev,_ZThn64_N8S19198C1D0Ev),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19198C1D1Ev,_ZThn72_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19198C1D0Ev,_ZThn72_N8S19198C1D0Ev),
  ABISELECT(168,84),
  ABISELECT(160,80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19198C1D1Ev,_ZThn80_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19198C1D0Ev,_ZThn80_N8S19198C1D0Ev),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19198C1D1Ev,_ZThn88_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19198C1D0Ev,_ZThn88_N8S19198C1D0Ev),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S19198C1D1Ev,_ZThn96_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S19198C1D0Ev,_ZThn96_N8S19198C1D0Ev),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19198C1D1Ev,_ZThn104_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19198C1D0Ev,_ZThn104_N8S19198C1D0Ev),
  ABISELECT(-280,-140),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-280,-140),
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19198C1D1Ev,_ZTv0_n36_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19198C1D0Ev,_ZTv0_n36_N8S19198C1D0Ev),
  ABISELECT(-296,-148),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n72_N8S19198C1D1Ev,_ZTvn8_n36_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n72_N8S19198C1D0Ev,_ZTvn8_n36_N8S19198C1D0Ev),
  ABISELECT(-320,-160),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C1D1Ev,_ZTv0_n12_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C1D0Ev,_ZTv0_n12_N8S19198C1D0Ev),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C1D1Ev,_ZTv0_n16_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C1D0Ev,_ZTv0_n16_N8S19198C1D0Ev),
  ABISELECT(-344,-176),
  ABISELECT(-24,-16),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(-344,-176),
  ABISELECT(-344,-176),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19198C1D1Ev,_ZTv0_n28_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19198C1D0Ev,_ZTv0_n28_N8S19198C1D0Ev),
  ABISELECT(-360,-188),
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C1D1Ev,_ZTv0_n24_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C1D0Ev,_ZTv0_n24_N8S19198C1D0Ev),
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI8S19198C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C1D1Ev,_ZTvn8_n24_N8S19198C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C1D0Ev,_ZTvn8_n24_N8S19198C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19198C1[];
extern void _ZN9S19198C10D1Ev();
extern void _ZN9S19198C10D0Ev();
extern void _ZN9S19198C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19198C10__8S19198C1[] = {
  ABISELECT(320,160),
  ABISELECT(328,164),
  0,
  ABISELECT(340,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&_ZN9S19198C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19198C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19198C102v1Ev,
};
extern void _ZN9S19198C11D1Ev();
extern void _ZN9S19198C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19198C119S19198C10__8S19198C1[] = {
  ABISELECT(320,160),
  ABISELECT(312,156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&_ZN9S19198C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19198C11D0Ev,
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C49S19198C119S19198C10__A2__8S19198C1[] = {
  ABISELECT(320,160),
  ABISELECT(312,156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C49S19198C119S19198C10__A2__8S19198C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C49S19198C119S19198C10__A3__8S19198C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn312_N8S19198C4D1Ev,_ZThn156_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn312_N8S19198C4D0Ev,_ZThn156_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C49S19198C119S19198C10__A2__8S19198C1[] = {
  ABISELECT(-312,-156),
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S19198C4D1Ev,_ZThn160_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S19198C4D0Ev,_ZThn160_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C49S19198C119S19198C10__A2__8S19198C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C59S19198C119S19198C10__A3__8S19198C1[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C59S19198C119S19198C10__A4__8S19198C1[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn312_N9S19198C11D1Ev,_ZThn156_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn312_N9S19198C11D0Ev,_ZThn156_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19198C119S19198C10__8S19198C1[] = {
  ABISELECT(-312,-156),
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19198C11D1Ev,_ZThn160_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19198C11D0Ev,_ZThn160_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__9S19198C119S19198C10__8S19198C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-328,-164),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C5__A1__9S19198C119S19198C10__8S19198C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19198C10D1Ev,_ZTv0_n16_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn328_N9S19198C10D1Ev,_ZThn164_N9S19198C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C10D0Ev,_ZTv0_n16_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn328_N9S19198C10D0Ev,_ZThn164_N9S19198C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__9S19198C10__8S19198C1[] = {
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C10D1Ev,_ZTv0_n16_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C10D0Ev,_ZTv0_n16_N9S19198C10D0Ev),
};
extern void ABISELECT(_ZThn8_N9S19198C10D1Ev,_ZThn4_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S19198C10D0Ev,_ZThn4_N9S19198C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19198C11__9S19198C10__8S19198C1[] = {
  ABISELECT(320,160),
  ABISELECT(312,156),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19198C10D1Ev,_ZThn4_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19198C10D0Ev,_ZThn4_N9S19198C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19198C10D1Ev,_ZTv0_n12_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn320_N9S19198C10D1Ev,_ZThn160_N9S19198C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C10D0Ev,_ZTv0_n12_N9S19198C10D0Ev)();
extern void ABISELECT(_ZThn320_N9S19198C10D0Ev,_ZThn160_N9S19198C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__9S19198C10__8S19198C1[] = {
  ABISELECT(-320,-160),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C10D1Ev,_ZTv0_n12_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C10D0Ev,_ZTv0_n12_N9S19198C10D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19198C10D1Ev,_ZThn20_N9S19198C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S19198C10D0Ev,_ZThn20_N9S19198C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C59S19198C11__A1__9S19198C10__8S19198C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19198C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19198C10D1Ev,_ZThn20_N9S19198C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19198C10D0Ev,_ZThn20_N9S19198C10D0Ev),
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C5__A4__8S19198C1[] = {
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C5__A5__8S19198C1[] = {
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void _ZN9S19198C11D1Ev();
extern void _ZN9S19198C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19198C11__A1__8S19198C1[] = {
  ABISELECT(168,84),
  ABISELECT(160,80),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&_ZN9S19198C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19198C11D0Ev,
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C49S19198C11__A3__8S19198C1[] = {
  ABISELECT(168,84),
  ABISELECT(160,80),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C49S19198C11__A5__8S19198C1[] = {
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C49S19198C11__A6__8S19198C1[] = {
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S19198C4D1Ev,_ZThn80_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S19198C4D0Ev,_ZThn80_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C49S19198C11__A3__8S19198C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S19198C4D1Ev,_ZThn84_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S19198C4D0Ev,_ZThn84_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C49S19198C11__A3__8S19198C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(-328,-164),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C59S19198C11__A6__8S19198C1[] = {
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C59S19198C11__A7__8S19198C1[] = {
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S19198C11D1Ev,_ZThn80_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S19198C11D0Ev,_ZThn80_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__9S19198C11__A1__8S19198C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn168_N9S19198C11D1Ev,_ZThn84_N9S19198C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev)();
extern void ABISELECT(_ZThn168_N9S19198C11D0Ev,_ZThn84_N9S19198C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__9S19198C11__A1__8S19198C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(-328,-164),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C5__A1__9S19198C11__A1__8S19198C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19198C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D1Ev,_ZThn16_N9S19198C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19198C11D0Ev,_ZThn16_N9S19198C11D0Ev),
};
extern void _ZN8S19198C2D1Ev();
extern void _ZN8S19198C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C2__8S19198C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-280,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&_ZN8S19198C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C2D0Ev,
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C48S19198C2__8S19198C1[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-280,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C48S19198C2__8S19198C1[] = {
  ABISELECT(-280,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C48S19198C2__8S19198C1[] = {
  ABISELECT(-280,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19198C4D1Ev,_ZThn20_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19198C4D0Ev,_ZThn20_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C48S19198C2__8S19198C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19198C4D1Ev,_ZThn24_N8S19198C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19198C4D0Ev,_ZThn24_N8S19198C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C48S19198C2__8S19198C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-328,-164),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19198C2D1Ev,_ZTv0_n12_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19198C2D1Ev,_ZThn20_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19198C2D0Ev,_ZTv0_n12_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19198C2D0Ev,_ZThn20_N8S19198C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C2__8S19198C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C2D1Ev,_ZTv0_n12_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C2D0Ev,_ZTv0_n12_N8S19198C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C2D1Ev,_ZTv0_n16_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19198C2D1Ev,_ZThn24_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19198C2D0Ev,_ZTv0_n16_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19198C2D0Ev,_ZThn24_N8S19198C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C2__8S19198C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-328,-164),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C2D1Ev,_ZTv0_n16_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C2D0Ev,_ZTv0_n16_N8S19198C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19198C2D1Ev,_ZTv0_n28_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19198C2D1Ev,_ZThn36_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19198C2D0Ev,_ZTv0_n28_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19198C2D0Ev,_ZThn36_N8S19198C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C9__8S19198C2__8S19198C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(-344,-176),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19198C2D1Ev,_ZTv0_n28_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19198C2D0Ev,_ZTv0_n28_N8S19198C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19198C2D1Ev,_ZTv0_n24_N8S19198C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S19198C2D1Ev,_ZThn48_N8S19198C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C2D0Ev,_ZTv0_n24_N8S19198C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S19198C2D0Ev,_ZThn48_N8S19198C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C4__A1__8S19198C2__8S19198C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-360,-188),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C2D1Ev,_ZTv0_n24_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C2D0Ev,_ZTv0_n24_N8S19198C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S19198C2D1Ev,_ZTvn8_n24_N8S19198C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19198C2D0Ev,_ZTvn8_n24_N8S19198C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19198C58S19198C4__A5__8S19198C2__8S19198C1[] = {
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19198C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C2D1Ev,_ZTvn8_n24_N8S19198C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C2D0Ev,_ZTvn8_n24_N8S19198C2D0Ev),
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C1[] = {
  ABISELECT(-328,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void _ZN8S19198C9D1Ev();
extern void _ZN8S19198C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C9__8S19198C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(-344,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&_ZN8S19198C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C6__8S19198C9__8S19198C1[] = {
  ABISELECT(16,12),
  ABISELECT(-328,-164),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C9D1Ev,_ZTv0_n16_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C9D0Ev,_ZTv0_n16_N8S19198C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19198C9D1Ev,_ZThn12_N8S19198C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19198C9D0Ev,_ZThn12_N8S19198C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19198C4__8S19198C9__8S19198C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-360,-188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S19198C9D1Ev,_ZTvn8_n24_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19198C9D0Ev,_ZTvn8_n24_N8S19198C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19198C58S19198C4__A2__8S19198C9__8S19198C1[] = {
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C9D1Ev,_ZTvn8_n24_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19198C9D0Ev,_ZTvn8_n24_N8S19198C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A3__8S19198C9__8S19198C1[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19198C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C9D1Ev,_ZTv0_n12_N8S19198C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C9D0Ev,_ZTv0_n12_N8S19198C9D0Ev),
};
extern void _ZN8S19198C4D1Ev();
extern void _ZN8S19198C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C4__A1__8S19198C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-40,-28),
  ABISELECT(-360,-188),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&_ZN8S19198C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C4D0Ev,
};
extern void _ZN8S19198C5D1Ev();
extern void _ZN8S19198C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C58S19198C4__A1__8S19198C1[] = {
  ABISELECT(-360,-188),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C5[0]),
  (VTBL_ENTRY)&_ZN8S19198C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C5D0Ev,
};
extern void _ZN8S19198C6D1Ev();
extern void _ZN8S19198C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19198C68S19198C58S19198C4__A2__8S19198C1[] = {
  ABISELECT(-360,-188),
  0,
  (VTBL_ENTRY)&(_ZTI8S19198C6[0]),
  (VTBL_ENTRY)&_ZN8S19198C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19198C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19198C4__A1__8S19198C1[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19198C6__A1__8S19198C4__A1__8S19198C1[] = {
  ABISELECT(32,24),
  ABISELECT(-328,-164),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S19198C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev),
};
static  VTT_ENTRY vtt_S19198C1[] = {
  {&(_ZTV8S19198C1[9]),  9,108},
  {&(_tg__ZTV9S19198C10__8S19198C1[6]),  6,9},
  {&(_tg__ZTV9S19198C119S19198C10__8S19198C1[5]),  5,7},
  {&(_tg__ZTV8S19198C49S19198C119S19198C10__A2__8S19198C1[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C49S19198C119S19198C10__A2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C49S19198C119S19198C10__A3__8S19198C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C49S19198C119S19198C10__A2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C49S19198C119S19198C10__A2__8S19198C1[4]),  4,6},
  {&(_tg__ZTV8S19198C59S19198C119S19198C10__A3__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C59S19198C119S19198C10__A4__8S19198C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19198C119S19198C10__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__9S19198C119S19198C10__8S19198C1[4]),  4,6},
  {&(_tg__ZTV8S19198C5__A1__9S19198C119S19198C10__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__9S19198C10__8S19198C1[4]),  4,6},
  {&(_tg__ZTV9S19198C11__9S19198C10__8S19198C1[5]),  5,7},
  {&(_tg__ZTV12S21216C26_nt__A2__9S19198C10__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C59S19198C11__A1__9S19198C10__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C5__A4__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C5__A5__8S19198C1[3]),  3,5},
  {&(_tg__ZTV9S19198C11__A1__8S19198C1[5]),  5,7},
  {&(_tg__ZTV8S19198C49S19198C11__A3__8S19198C1[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C49S19198C11__A5__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C49S19198C11__A6__8S19198C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C49S19198C11__A3__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C49S19198C11__A3__8S19198C1[4]),  4,6},
  {&(_tg__ZTV8S19198C59S19198C11__A6__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C59S19198C11__A7__8S19198C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__9S19198C11__A1__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__9S19198C11__A1__8S19198C1[4]),  4,6},
  {&(_tg__ZTV8S19198C5__A1__9S19198C11__A1__8S19198C1[3]),  3,5},
  {&(_ZTV8S19198C1[70]),  70,108},
  {&(_ZTV8S19198C1[74]),  74,108},
  {&(_ZTV8S19198C1[79]),  79,108},
  {&(_ZTV8S19198C1[85]),  85,108},
  {&(_ZTV8S19198C1[94]),  94,108},
  {&(_ZTV8S19198C1[102]),  102,108},
  {&(_ZTV8S19198C1[106]),  106,108},
  {&(_ZTV8S19198C1[17]),  17,108},
  {&(_ZTV8S19198C1[26]),  26,108},
  {&(_ZTV8S19198C1[35]),  35,108},
  {&(_ZTV8S19198C1[46]),  46,108},
  {&(_ZTV8S19198C1[55]),  55,108},
  {&(_tg__ZTV8S19198C2__8S19198C1[8]),  8,10},
  {&(_tg__ZTV8S19198C48S19198C2__8S19198C1[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C48S19198C2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C48S19198C2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C48S19198C2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C48S19198C2__8S19198C1[4]),  4,6},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C2__8S19198C1[4]),  4,6},
  {&(_tg__ZTV8S19198C9__8S19198C2__8S19198C1[7]),  7,9},
  {&(_tg__ZTV8S19198C4__A1__8S19198C2__8S19198C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S19198C58S19198C4__A5__8S19198C2__8S19198C1[2]),  2,4},
  {&(_tg__ZTV8S19198C6__A1__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C9__8S19198C1[6]),  6,8},
  {&(_tg__ZTV8S19198C6__8S19198C9__8S19198C1[4]),  4,6},
  {&(_tg__ZTV8S19198C4__8S19198C9__8S19198C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S19198C58S19198C4__A2__8S19198C9__8S19198C1[2]),  2,4},
  {&(_tg__ZTV12S21216C26_nt__A3__8S19198C9__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C4__A1__8S19198C1[5]),  5,7},
  {&(_tg__ZTV8S19198C58S19198C4__A1__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C68S19198C58S19198C4__A2__8S19198C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19198C4__A1__8S19198C1[3]),  3,5},
  {&(_tg__ZTV8S19198C6__A1__8S19198C4__A1__8S19198C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19198C1[];
extern  VTBL_ENTRY _ZTV8S19198C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19198C1[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C9D0Ev,_ZTv0_n24_N8S19198C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19198C9D0Ev,_ZThn12_N8S19198C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C9D1Ev,_ZTv0_n24_N8S19198C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19198C9D1Ev,_ZThn12_N8S19198C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C2D0Ev,_ZTv0_n24_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19198C2D0Ev,_ZThn48_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C2D1Ev,_ZTv0_n24_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19198C2D1Ev,_ZThn48_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19198C2D0Ev,_ZTv0_n28_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19198C2D0Ev,_ZThn36_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19198C2D1Ev,_ZTv0_n28_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19198C2D1Ev,_ZThn36_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C2D0Ev,_ZTv0_n16_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C2D0Ev,_ZThn24_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C2D1Ev,_ZTv0_n16_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C2D1Ev,_ZThn24_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C2D0Ev,_ZTv0_n12_N8S19198C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C2D0Ev,_ZThn20_N8S19198C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C2D1Ev,_ZTv0_n12_N8S19198C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C2D1Ev,_ZThn20_N8S19198C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C10D0Ev,_ZTv0_n12_N9S19198C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19198C10D0Ev,_ZThn160_N9S19198C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C10D1Ev,_ZTv0_n12_N9S19198C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19198C10D1Ev,_ZThn160_N9S19198C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C10D0Ev,_ZTv0_n16_N9S19198C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19198C10D0Ev,_ZThn164_N9S19198C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C10D1Ev,_ZTv0_n16_N9S19198C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19198C10D1Ev,_ZThn164_N9S19198C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C11D0Ev,_ZTv0_n16_N9S19198C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19198C11D0Ev,_ZThn84_N9S19198C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19198C11D0Ev,_ZThn160_N9S19198C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19198C11D1Ev,_ZTv0_n16_N9S19198C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19198C11D1Ev,_ZThn84_N9S19198C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19198C11D1Ev,_ZThn160_N9S19198C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C11D0Ev,_ZTv0_n12_N9S19198C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19198C11D0Ev,_ZThn80_N9S19198C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19198C11D0Ev,_ZThn156_N9S19198C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19198C11D1Ev,_ZTv0_n12_N9S19198C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19198C11D1Ev,_ZThn80_N9S19198C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19198C11D1Ev,_ZThn156_N9S19198C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D0Ev,_ZTv0_n16_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C4D0Ev,_ZThn24_N8S19198C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19198C4D0Ev,_ZThn84_N8S19198C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19198C4D0Ev,_ZThn160_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C4D1Ev,_ZTv0_n16_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19198C4D1Ev,_ZThn24_N8S19198C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19198C4D1Ev,_ZThn84_N8S19198C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19198C4D1Ev,_ZThn160_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D0Ev,_ZTv0_n12_N8S19198C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C4D0Ev,_ZThn20_N8S19198C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19198C4D0Ev,_ZThn80_N8S19198C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19198C4D0Ev,_ZThn156_N8S19198C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C4D1Ev,_ZTv0_n12_N8S19198C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19198C4D1Ev,_ZThn20_N8S19198C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19198C4D1Ev,_ZThn80_N8S19198C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19198C4D1Ev,_ZThn156_N8S19198C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C1D0Ev,_ZTv0_n24_N8S19198C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19198C1D0Ev,_ZThn188_N8S19198C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19198C1D1Ev,_ZTv0_n24_N8S19198C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19198C1D1Ev,_ZThn188_N8S19198C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19198C1D0Ev,_ZTv0_n28_N8S19198C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19198C1D0Ev,_ZThn176_N8S19198C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19198C1D1Ev,_ZTv0_n28_N8S19198C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19198C1D1Ev,_ZThn176_N8S19198C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C1D0Ev,_ZTv0_n16_N8S19198C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19198C1D0Ev,_ZThn164_N8S19198C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19198C1D1Ev,_ZTv0_n16_N8S19198C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19198C1D1Ev,_ZThn164_N8S19198C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C1D0Ev,_ZTv0_n12_N8S19198C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19198C1D0Ev,_ZThn160_N8S19198C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19198C1D1Ev,_ZTv0_n12_N8S19198C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19198C1D1Ev,_ZThn160_N8S19198C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19198C1D0Ev,_ZTv0_n36_N8S19198C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19198C1D0Ev,_ZThn140_N8S19198C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19198C1D1Ev,_ZTv0_n36_N8S19198C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19198C1D1Ev,_ZThn140_N8S19198C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19198C1 = {  "S19198C1", // class name
  bases_S19198C1, 50,
  &(vtc_S19198C1[0]), // expected_vtbl_contents
  &(vtt_S19198C1[0]), // expected_vtt_contents
  ABISELECT(392,204), // object size
  NSPAIRA(_ZTI8S19198C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19198C1),108, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19198C1),64, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2205C4  {
  ::S5757C13_nt s2205c4f0;
  unsigned int s2205c4f1:1;
  virtual  ~S2205C4(); // _ZN7S2205C4D1Ev
  virtual void  v3(); // _ZN7S2205C42v3Ev
  virtual void  v4(); // _ZN7S2205C42v4Ev
  virtual void  v5(); // _ZN7S2205C42v5Ev
  virtual void  v6(); // _ZN7S2205C42v6Ev
  virtual void  v7(); // _ZN7S2205C42v7Ev
  virtual void  v8(); // _ZN7S2205C42v8Ev
  virtual void  v9(); // _ZN7S2205C42v9Ev
  S2205C4(); // tgen
};
//SIG(-1 S2205C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S2205C4 ::~S2205C4(){ note_dtor("S2205C4", this);}
void  S2205C4 ::v3(){vfunc_called(this, "_ZN7S2205C42v3Ev");}
void  S2205C4 ::v4(){vfunc_called(this, "_ZN7S2205C42v4Ev");}
void  S2205C4 ::v5(){vfunc_called(this, "_ZN7S2205C42v5Ev");}
void  S2205C4 ::v6(){vfunc_called(this, "_ZN7S2205C42v6Ev");}
void  S2205C4 ::v7(){vfunc_called(this, "_ZN7S2205C42v7Ev");}
void  S2205C4 ::v8(){vfunc_called(this, "_ZN7S2205C42v8Ev");}
void  S2205C4 ::v9(){vfunc_called(this, "_ZN7S2205C42v9Ev");}
S2205C4 ::S2205C4(){ note_ctor("S2205C4", this);} // tgen

static void Test_S2205C4()
{
  extern Class_Descriptor cd_S2205C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S2205C4, buf);
    S2205C4 *dp, &lv = *(dp=new (buf) S2205C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S2205C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2205C4)");
    check_field_offset(lv, s2205c4f0, ABISELECT(8,4), "S2205C4.s2205c4f0");
    set_bf_and_test(lv, s2205c4f1, ABISELECT(32,16), 0, 1, 1, "S2205C4");
    test_class_info(&lv, &cd_S2205C4);
    dp->~S2205C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2205C4(Test_S2205C4, "S2205C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S2205C4C1Ev();
extern void _ZN7S2205C4D1Ev();
Name_Map name_map_S2205C4[] = {
  NSPAIR(_ZN7S2205C4C1Ev),
  NSPAIR(_ZN7S2205C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2205C4[];
extern void _ZN7S2205C4D1Ev();
extern void _ZN7S2205C4D0Ev();
extern void _ZN7S2205C42v3Ev();
extern void _ZN7S2205C42v4Ev();
extern void _ZN7S2205C42v5Ev();
extern void _ZN7S2205C42v6Ev();
extern void _ZN7S2205C42v7Ev();
extern void _ZN7S2205C42v8Ev();
extern void _ZN7S2205C42v9Ev();
static  VTBL_ENTRY vtc_S2205C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2205C4[0]),
  (VTBL_ENTRY)&_ZN7S2205C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2205C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S2205C4[];
extern  VTBL_ENTRY _ZTV7S2205C4[];
Class_Descriptor cd_S2205C4 = {  "S2205C4", // class name
  0,0,//no base classes
  &(vtc_S2205C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S2205C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2205C4),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  S2205C3  : S2205C4 {
  ::S5757C17_nt s2205c3f0;
  ::S5757C17_nt s2205c3f1;
  ::S19894C6_nt s2205c3f2;
  ::S19894C6_nt s2205c3f3;
  ::S19894C6_nt s2205c3f4;
  ::S19894C6_nt s2205c3f5;
  ::S19894C6_nt s2205c3f6;
  ::S5757C20_nt s2205c3f7;
  virtual void  v10(); // _ZN7S2205C33v10Ev
  virtual void  v11(); // _ZN7S2205C33v11Ev
  virtual void  v12(); // _ZN7S2205C33v12Ev
  ~S2205C3(); // tgen
  S2205C3(); // tgen
};
//SIG(-1 S2205C3) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S2205C3 ::v10(){vfunc_called(this, "_ZN7S2205C33v10Ev");}
void  S2205C3 ::v11(){vfunc_called(this, "_ZN7S2205C33v11Ev");}
void  S2205C3 ::v12(){vfunc_called(this, "_ZN7S2205C33v12Ev");}
S2205C3 ::~S2205C3(){ note_dtor("S2205C3", this);} // tgen
S2205C3 ::S2205C3(){ note_ctor("S2205C3", this);} // tgen

static void Test_S2205C3()
{
  extern Class_Descriptor cd_S2205C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S2205C3, buf);
    S2205C3 *dp, &lv = *(dp=new (buf) S2205C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S2205C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2205C3)");
    check_base_class_offset(lv, (S2205C4*), 0, "S2205C3");
    check_field_offset(lv, s2205c3f0, ABISELECT(40,20), "S2205C3.s2205c3f0");
    check_field_offset(lv, s2205c3f1, ABISELECT(304,216), "S2205C3.s2205c3f1");
    check_field_offset(lv, s2205c3f2, ABISELECT(568,412), "S2205C3.s2205c3f2");
    check_field_offset(lv, s2205c3f3, ABISELECT(576,416), "S2205C3.s2205c3f3");
    check_field_offset(lv, s2205c3f4, ABISELECT(584,420), "S2205C3.s2205c3f4");
    check_field_offset(lv, s2205c3f5, ABISELECT(592,424), "S2205C3.s2205c3f5");
    check_field_offset(lv, s2205c3f6, ABISELECT(600,428), "S2205C3.s2205c3f6");
    check_field_offset(lv, s2205c3f7, ABISELECT(608,432), "S2205C3.s2205c3f7");
    test_class_info(&lv, &cd_S2205C3);
    dp->~S2205C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2205C3(Test_S2205C3, "S2205C3", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN7S2205C3C1Ev();
extern void _ZN7S2205C3D1Ev();
Name_Map name_map_S2205C3[] = {
  NSPAIR(_ZN7S2205C3C1Ev),
  NSPAIR(_ZN7S2205C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2205C4;
extern VTBL_ENTRY _ZTI7S2205C4[];
extern  VTBL_ENTRY _ZTV7S2205C4[];
static Base_Class bases_S2205C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2205C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2205C3[];
extern void _ZN7S2205C3D1Ev();
extern void _ZN7S2205C3D0Ev();
extern void _ZN7S2205C42v3Ev();
extern void _ZN7S2205C42v4Ev();
extern void _ZN7S2205C42v5Ev();
extern void _ZN7S2205C42v6Ev();
extern void _ZN7S2205C42v7Ev();
extern void _ZN7S2205C42v8Ev();
extern void _ZN7S2205C42v9Ev();
extern void _ZN7S2205C33v10Ev();
extern void _ZN7S2205C33v11Ev();
extern void _ZN7S2205C33v12Ev();
static  VTBL_ENTRY vtc_S2205C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2205C3[0]),
  (VTBL_ENTRY)&_ZN7S2205C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2205C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S2205C3[];
extern  VTBL_ENTRY _ZTV7S2205C3[];
Class_Descriptor cd_S2205C3 = {  "S2205C3", // class name
  bases_S2205C3, 1,
  &(vtc_S2205C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI7S2205C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2205C3),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2205C2  : S2205C3 {
  char s2205c2f0[2];
  ::S3223C13_nt s2205c2f1;
  ::S3223C13_nt s2205c2f2;
  virtual void  v13(); // _ZN7S2205C23v13Ev
  virtual void  v14(); // _ZN7S2205C23v14Ev
  ~S2205C2(); // tgen
  S2205C2(); // tgen
};
//SIG(-1 S2205C2) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 FC4{ m Fp[3]} Fi:1} v10 v11 v12 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 Fc[2] FC10{ m Fi[3]} FC10}


void  S2205C2 ::v13(){vfunc_called(this, "_ZN7S2205C23v13Ev");}
void  S2205C2 ::v14(){vfunc_called(this, "_ZN7S2205C23v14Ev");}
S2205C2 ::~S2205C2(){ note_dtor("S2205C2", this);} // tgen
S2205C2 ::S2205C2(){ note_ctor("S2205C2", this);} // tgen

static void Test_S2205C2()
{
  extern Class_Descriptor cd_S2205C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(83,120)];
    init_test(&cd_S2205C2, buf);
    S2205C2 *dp, &lv = *(dp=new (buf) S2205C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(656,476), "sizeof(S2205C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2205C2)");
    check_base_class_offset(lv, (S2205C4*)(S2205C3*), 0, "S2205C2");
    check_base_class_offset(lv, (S2205C3*), 0, "S2205C2");
    check_field_offset(lv, s2205c2f0, ABISELECT(624,448), "S2205C2.s2205c2f0");
    check_field_offset(lv, s2205c2f1, ABISELECT(628,452), "S2205C2.s2205c2f1");
    check_field_offset(lv, s2205c2f2, ABISELECT(640,464), "S2205C2.s2205c2f2");
    test_class_info(&lv, &cd_S2205C2);
    dp->~S2205C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2205C2(Test_S2205C2, "S2205C2", ABISELECT(656,476));

#else // __cplusplus

extern void _ZN7S2205C2C1Ev();
extern void _ZN7S2205C2D1Ev();
Name_Map name_map_S2205C2[] = {
  NSPAIR(_ZN7S2205C2C1Ev),
  NSPAIR(_ZN7S2205C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2205C4;
extern VTBL_ENTRY _ZTI7S2205C4[];
extern  VTBL_ENTRY _ZTV7S2205C4[];
extern Class_Descriptor cd_S2205C3;
extern VTBL_ENTRY _ZTI7S2205C3[];
extern  VTBL_ENTRY _ZTV7S2205C3[];
static Base_Class bases_S2205C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2205C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2205C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2205C2[];
extern void _ZN7S2205C2D1Ev();
extern void _ZN7S2205C2D0Ev();
extern void _ZN7S2205C42v3Ev();
extern void _ZN7S2205C42v4Ev();
extern void _ZN7S2205C42v5Ev();
extern void _ZN7S2205C42v6Ev();
extern void _ZN7S2205C42v7Ev();
extern void _ZN7S2205C42v8Ev();
extern void _ZN7S2205C42v9Ev();
extern void _ZN7S2205C33v10Ev();
extern void _ZN7S2205C33v11Ev();
extern void _ZN7S2205C33v12Ev();
extern void _ZN7S2205C23v13Ev();
extern void _ZN7S2205C23v14Ev();
static  VTBL_ENTRY vtc_S2205C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2205C2[0]),
  (VTBL_ENTRY)&_ZN7S2205C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2205C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2205C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2205C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S2205C2[];
extern  VTBL_ENTRY _ZTV7S2205C2[];
Class_Descriptor cd_S2205C2 = {  "S2205C2", // class name
  bases_S2205C2, 2,
  &(vtc_S2205C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(656,476), // object size
  NSPAIRA(_ZTI7S2205C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2205C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2205C1  : S2205C2 {
  virtual void  v1(); // _ZN7S2205C12v1Ev
  virtual void  v2(); // _ZN7S2205C12v2Ev
  ~S2205C1(); // tgen
  S2205C1(); // tgen
};
//SIG(1 S2205C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 v7 v8 v9 FC5{ m Fp[3]} Fi:1} v10 v11 v12 FC6{ m FC7{ Fp Fi[2]}[16] Fi} FC6 FC8{ m Fp} FC8 FC8 FC8 FC8 FC9{ m FC10{ Fc[3] Fi} Fi[2]}} v13 v14 Fc[2] FC11{ m Fi[3]} FC11} v1 v2}


void  S2205C1 ::v1(){vfunc_called(this, "_ZN7S2205C12v1Ev");}
void  S2205C1 ::v2(){vfunc_called(this, "_ZN7S2205C12v2Ev");}
S2205C1 ::~S2205C1(){ note_dtor("S2205C1", this);} // tgen
S2205C1 ::S2205C1(){ note_ctor("S2205C1", this);} // tgen

static void Test_S2205C1()
{
  extern Class_Descriptor cd_S2205C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(83,120)];
    init_test(&cd_S2205C1, buf);
    S2205C1 *dp, &lv = *(dp=new (buf) S2205C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(656,476), "sizeof(S2205C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2205C1)");
    check_base_class_offset(lv, (S2205C4*)(S2205C3*)(S2205C2*), 0, "S2205C1");
    check_base_class_offset(lv, (S2205C3*)(S2205C2*), 0, "S2205C1");
    check_base_class_offset(lv, (S2205C2*), 0, "S2205C1");
    test_class_info(&lv, &cd_S2205C1);
    dp->~S2205C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2205C1(Test_S2205C1, "S2205C1", ABISELECT(656,476));

#else // __cplusplus

extern void _ZN7S2205C1C1Ev();
extern void _ZN7S2205C1D1Ev();
Name_Map name_map_S2205C1[] = {
  NSPAIR(_ZN7S2205C1C1Ev),
  NSPAIR(_ZN7S2205C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2205C4;
extern VTBL_ENTRY _ZTI7S2205C4[];
extern  VTBL_ENTRY _ZTV7S2205C4[];
extern Class_Descriptor cd_S2205C3;
extern VTBL_ENTRY _ZTI7S2205C3[];
extern  VTBL_ENTRY _ZTV7S2205C3[];
extern Class_Descriptor cd_S2205C2;
extern VTBL_ENTRY _ZTI7S2205C2[];
extern  VTBL_ENTRY _ZTV7S2205C2[];
static Base_Class bases_S2205C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2205C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2205C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2205C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2205C1[];
extern void _ZN7S2205C1D1Ev();
extern void _ZN7S2205C1D0Ev();
extern void _ZN7S2205C42v3Ev();
extern void _ZN7S2205C42v4Ev();
extern void _ZN7S2205C42v5Ev();
extern void _ZN7S2205C42v6Ev();
extern void _ZN7S2205C42v7Ev();
extern void _ZN7S2205C42v8Ev();
extern void _ZN7S2205C42v9Ev();
extern void _ZN7S2205C33v10Ev();
extern void _ZN7S2205C33v11Ev();
extern void _ZN7S2205C33v12Ev();
extern void _ZN7S2205C23v13Ev();
extern void _ZN7S2205C23v14Ev();
extern void _ZN7S2205C12v1Ev();
extern void _ZN7S2205C12v2Ev();
static  VTBL_ENTRY vtc_S2205C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2205C1[0]),
  (VTBL_ENTRY)&_ZN7S2205C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2205C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2205C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2205C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2205C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2205C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2205C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2205C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2205C1[];
extern  VTBL_ENTRY _ZTV7S2205C1[];
Class_Descriptor cd_S2205C1 = {  "S2205C1", // class name
  bases_S2205C1, 3,
  &(vtc_S2205C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(656,476), // object size
  NSPAIRA(_ZTI7S2205C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2205C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18615C1  {
  ::S20832C2 s18615c1f0;
  char s18615c1f1;
  void *s18615c1f2;
  virtual void  v1(); // _ZN8S18615C12v1Ev
  virtual void  v2(); // _ZN8S18615C12v2Ev
  virtual void  v3(); // _ZN8S18615C12v3Ev
  ~S18615C1(); // tgen
  S18615C1(); // tgen
};
//SIG(1 S18615C1) C1{ v1 v2 v3 FC2{ VBC3{ v9 v10 Fp} VBC4{ VBC5{ VBC6{ VBC3 v11 v12 v13 v14 v15 v16} BC7{ VBC6 v17 v18 Fp FC3 FC3} v19 v20} BC6 v21 v22 v23 v24 v25 v26 v27 v28 Fp} v4 v5 v6 v7 v8 FL FC7 FL} Fc Fp}


void  S18615C1 ::v1(){vfunc_called(this, "_ZN8S18615C12v1Ev");}
void  S18615C1 ::v2(){vfunc_called(this, "_ZN8S18615C12v2Ev");}
void  S18615C1 ::v3(){vfunc_called(this, "_ZN8S18615C12v3Ev");}
S18615C1 ::~S18615C1(){ note_dtor("S18615C1", this);} // tgen
S18615C1 ::S18615C1(){ note_ctor("S18615C1", this);} // tgen

static void Test_S18615C1()
{
  extern Class_Descriptor cd_S18615C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,27)];
    init_test(&cd_S18615C1, buf);
    S18615C1 *dp, &lv = *(dp=new (buf) S18615C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S18615C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18615C1)");
    check_field_offset(lv, s18615c1f0, ABISELECT(8,4), "S18615C1.s18615c1f0");
    check_field_offset(lv, s18615c1f1, ABISELECT(176,96), "S18615C1.s18615c1f1");
    check_field_offset(lv, s18615c1f2, ABISELECT(184,100), "S18615C1.s18615c1f2");
    test_class_info(&lv, &cd_S18615C1);
    dp->~S18615C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18615C1(Test_S18615C1, "S18615C1", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S18615C1C1Ev();
extern void _ZN8S18615C1D1Ev();
Name_Map name_map_S18615C1[] = {
  NSPAIR(_ZN8S18615C1C1Ev),
  NSPAIR(_ZN8S18615C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18615C1[];
extern void _ZN8S18615C12v1Ev();
extern void _ZN8S18615C12v2Ev();
extern void _ZN8S18615C12v3Ev();
static  VTBL_ENTRY vtc_S18615C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18615C1[0]),
  (VTBL_ENTRY)&_ZN8S18615C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18615C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18615C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18615C1[];
extern  VTBL_ENTRY _ZTV8S18615C1[];
Class_Descriptor cd_S18615C1 = {  "S18615C1", // class name
  0,0,//no base classes
  &(vtc_S18615C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S18615C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18615C1),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  S6476C2  {
  int s6476c2f0[2];
  virtual  ~S6476C2(); // _ZN7S6476C2D1Ev
  virtual void  v14(); // _ZN7S6476C23v14Ev
  virtual void  v15(); // _ZN7S6476C23v15Ev
  virtual void  v16(); // _ZN7S6476C23v16Ev
  virtual void  v17(); // _ZN7S6476C23v17Ev
  virtual void  v18(); // _ZN7S6476C23v18Ev
  virtual void  v19(); // _ZN7S6476C23v19Ev
  virtual void  v20(); // _ZN7S6476C23v20Ev
  virtual void  v21(); // _ZN7S6476C23v21Ev
  virtual void  v22(); // _ZN7S6476C23v22Ev
  virtual void  v23(); // _ZN7S6476C23v23Ev
  virtual void  v24(); // _ZN7S6476C23v24Ev
  virtual void  v25(); // _ZN7S6476C23v25Ev
  virtual void  v26(); // _ZN7S6476C23v26Ev
  virtual void  v27(); // _ZN7S6476C23v27Ev
  S6476C2(); // tgen
};
//SIG(-1 S6476C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6476C2 ::~S6476C2(){ note_dtor("S6476C2", this);}
void  S6476C2 ::v14(){vfunc_called(this, "_ZN7S6476C23v14Ev");}
void  S6476C2 ::v15(){vfunc_called(this, "_ZN7S6476C23v15Ev");}
void  S6476C2 ::v16(){vfunc_called(this, "_ZN7S6476C23v16Ev");}
void  S6476C2 ::v17(){vfunc_called(this, "_ZN7S6476C23v17Ev");}
void  S6476C2 ::v18(){vfunc_called(this, "_ZN7S6476C23v18Ev");}
void  S6476C2 ::v19(){vfunc_called(this, "_ZN7S6476C23v19Ev");}
void  S6476C2 ::v20(){vfunc_called(this, "_ZN7S6476C23v20Ev");}
void  S6476C2 ::v21(){vfunc_called(this, "_ZN7S6476C23v21Ev");}
void  S6476C2 ::v22(){vfunc_called(this, "_ZN7S6476C23v22Ev");}
void  S6476C2 ::v23(){vfunc_called(this, "_ZN7S6476C23v23Ev");}
void  S6476C2 ::v24(){vfunc_called(this, "_ZN7S6476C23v24Ev");}
void  S6476C2 ::v25(){vfunc_called(this, "_ZN7S6476C23v25Ev");}
void  S6476C2 ::v26(){vfunc_called(this, "_ZN7S6476C23v26Ev");}
void  S6476C2 ::v27(){vfunc_called(this, "_ZN7S6476C23v27Ev");}
S6476C2 ::S6476C2(){ note_ctor("S6476C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6476C2C1Ev();
extern void _ZN7S6476C2D1Ev();
Name_Map name_map_S6476C2[] = {
  NSPAIR(_ZN7S6476C2C1Ev),
  NSPAIR(_ZN7S6476C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6476C2[];
extern void _ZN7S6476C2D1Ev();
extern void _ZN7S6476C2D0Ev();
extern void _ZN7S6476C23v14Ev();
extern void _ZN7S6476C23v15Ev();
extern void _ZN7S6476C23v16Ev();
extern void _ZN7S6476C23v17Ev();
extern void _ZN7S6476C23v18Ev();
extern void _ZN7S6476C23v19Ev();
extern void _ZN7S6476C23v20Ev();
extern void _ZN7S6476C23v21Ev();
extern void _ZN7S6476C23v22Ev();
extern void _ZN7S6476C23v23Ev();
extern void _ZN7S6476C23v24Ev();
extern void _ZN7S6476C23v25Ev();
extern void _ZN7S6476C23v26Ev();
extern void _ZN7S6476C23v27Ev();
static  VTBL_ENTRY vtc_S6476C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6476C2[0]),
  (VTBL_ENTRY)&_ZN7S6476C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6476C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6476C2[];
extern  VTBL_ENTRY _ZTV7S6476C2[];
Class_Descriptor cd_S6476C2 = {  "S6476C2", // class name
  0,0,//no base classes
  &(vtc_S6476C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6476C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6476C2),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  S6476C1  : S6476C2 {
  ::S7097C3 s6476c1f0;
  void *s6476c1f1[11];
  int s6476c1f2[5];
  void *s6476c1f3[2];
  int s6476c1f4[3];
  ::S3619C13_nt s6476c1f5;
  void *s6476c1f6;
  virtual  ~S6476C1(); // _ZN7S6476C1D1Ev
  virtual void  v1(); // _ZN7S6476C12v1Ev
  virtual void  v2(); // _ZN7S6476C12v2Ev
  virtual void  v3(); // _ZN7S6476C12v3Ev
  virtual void  v4(); // _ZN7S6476C12v4Ev
  virtual void  v5(); // _ZN7S6476C12v5Ev
  virtual void  v6(); // _ZN7S6476C12v6Ev
  virtual void  v7(); // _ZN7S6476C12v7Ev
  virtual void  v8(); // _ZN7S6476C12v8Ev
  virtual void  v9(); // _ZN7S6476C12v9Ev
  virtual void  v10(); // _ZN7S6476C13v10Ev
  virtual void  v11(); // _ZN7S6476C13v11Ev
  virtual void  v12(); // _ZN7S6476C13v12Ev
  virtual void  v13(); // _ZN7S6476C13v13Ev
  S6476C1(); // tgen
};
//SIG(1 S6476C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC3{ m Fp FL Fi} Fp[11] Fi[5] Fp[2] Fi[3] FC4{ m FC5{ FL[4]}} Fp}


 S6476C1 ::~S6476C1(){ note_dtor("S6476C1", this);}
void  S6476C1 ::v1(){vfunc_called(this, "_ZN7S6476C12v1Ev");}
void  S6476C1 ::v2(){vfunc_called(this, "_ZN7S6476C12v2Ev");}
void  S6476C1 ::v3(){vfunc_called(this, "_ZN7S6476C12v3Ev");}
void  S6476C1 ::v4(){vfunc_called(this, "_ZN7S6476C12v4Ev");}
void  S6476C1 ::v5(){vfunc_called(this, "_ZN7S6476C12v5Ev");}
void  S6476C1 ::v6(){vfunc_called(this, "_ZN7S6476C12v6Ev");}
void  S6476C1 ::v7(){vfunc_called(this, "_ZN7S6476C12v7Ev");}
void  S6476C1 ::v8(){vfunc_called(this, "_ZN7S6476C12v8Ev");}
void  S6476C1 ::v9(){vfunc_called(this, "_ZN7S6476C12v9Ev");}
void  S6476C1 ::v10(){vfunc_called(this, "_ZN7S6476C13v10Ev");}
void  S6476C1 ::v11(){vfunc_called(this, "_ZN7S6476C13v11Ev");}
void  S6476C1 ::v12(){vfunc_called(this, "_ZN7S6476C13v12Ev");}
void  S6476C1 ::v13(){vfunc_called(this, "_ZN7S6476C13v13Ev");}
S6476C1 ::S6476C1(){ note_ctor("S6476C1", this);} // tgen

static void Test_S6476C1()
{
  extern Class_Descriptor cd_S6476C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,38)];
    init_test(&cd_S6476C1, buf);
    S6476C1 *dp, &lv = *(dp=new (buf) S6476C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S6476C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6476C1)");
    check_base_class_offset(lv, (S6476C2*), 0, "S6476C1");
    check_field_offset(lv, s6476c1f0, ABISELECT(16,12), "S6476C1.s6476c1f0");
    check_field_offset(lv, s6476c1f1, ABISELECT(40,28), "S6476C1.s6476c1f1");
    check_field_offset(lv, s6476c1f2, ABISELECT(128,72), "S6476C1.s6476c1f2");
    check_field_offset(lv, s6476c1f3, ABISELECT(152,92), "S6476C1.s6476c1f3");
    check_field_offset(lv, s6476c1f4, ABISELECT(168,100), "S6476C1.s6476c1f4");
    check_field_offset(lv, s6476c1f5, ABISELECT(184,112), "S6476C1.s6476c1f5");
    check_field_offset(lv, s6476c1f6, ABISELECT(216,144), "S6476C1.s6476c1f6");
    test_class_info(&lv, &cd_S6476C1);
    dp->~S6476C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6476C1(Test_S6476C1, "S6476C1", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN7S6476C1C1Ev();
extern void _ZN7S6476C1D1Ev();
Name_Map name_map_S6476C1[] = {
  NSPAIR(_ZN7S6476C1C1Ev),
  NSPAIR(_ZN7S6476C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6476C2;
extern VTBL_ENTRY _ZTI7S6476C2[];
extern  VTBL_ENTRY _ZTV7S6476C2[];
static Base_Class bases_S6476C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6476C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6476C1[];
extern void _ZN7S6476C1D1Ev();
extern void _ZN7S6476C1D0Ev();
extern void _ZN7S6476C23v14Ev();
extern void _ZN7S6476C23v15Ev();
extern void _ZN7S6476C23v16Ev();
extern void _ZN7S6476C23v17Ev();
extern void _ZN7S6476C23v18Ev();
extern void _ZN7S6476C23v19Ev();
extern void _ZN7S6476C23v20Ev();
extern void _ZN7S6476C23v21Ev();
extern void _ZN7S6476C23v22Ev();
extern void _ZN7S6476C23v23Ev();
extern void _ZN7S6476C23v24Ev();
extern void _ZN7S6476C23v25Ev();
extern void _ZN7S6476C23v26Ev();
extern void _ZN7S6476C23v27Ev();
extern void _ZN7S6476C12v1Ev();
extern void _ZN7S6476C12v2Ev();
extern void _ZN7S6476C12v3Ev();
extern void _ZN7S6476C12v4Ev();
extern void _ZN7S6476C12v5Ev();
extern void _ZN7S6476C12v6Ev();
extern void _ZN7S6476C12v7Ev();
extern void _ZN7S6476C12v8Ev();
extern void _ZN7S6476C12v9Ev();
extern void _ZN7S6476C13v10Ev();
extern void _ZN7S6476C13v11Ev();
extern void _ZN7S6476C13v12Ev();
extern void _ZN7S6476C13v13Ev();
static  VTBL_ENTRY vtc_S6476C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6476C1[0]),
  (VTBL_ENTRY)&_ZN7S6476C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6476C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6476C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6476C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6476C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6476C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6476C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6476C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6476C1[];
extern  VTBL_ENTRY _ZTV7S6476C1[];
Class_Descriptor cd_S6476C1 = {  "S6476C1", // class name
  bases_S6476C1, 1,
  &(vtc_S6476C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI7S6476C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6476C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6475C2  {
  int s6475c2f0[2];
  virtual  ~S6475C2(); // _ZN7S6475C2D1Ev
  virtual void  v14(); // _ZN7S6475C23v14Ev
  virtual void  v15(); // _ZN7S6475C23v15Ev
  virtual void  v16(); // _ZN7S6475C23v16Ev
  virtual void  v17(); // _ZN7S6475C23v17Ev
  virtual void  v18(); // _ZN7S6475C23v18Ev
  virtual void  v19(); // _ZN7S6475C23v19Ev
  virtual void  v20(); // _ZN7S6475C23v20Ev
  virtual void  v21(); // _ZN7S6475C23v21Ev
  virtual void  v22(); // _ZN7S6475C23v22Ev
  virtual void  v23(); // _ZN7S6475C23v23Ev
  virtual void  v24(); // _ZN7S6475C23v24Ev
  virtual void  v25(); // _ZN7S6475C23v25Ev
  virtual void  v26(); // _ZN7S6475C23v26Ev
  virtual void  v27(); // _ZN7S6475C23v27Ev
  S6475C2(); // tgen
};
//SIG(-1 S6475C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6475C2 ::~S6475C2(){ note_dtor("S6475C2", this);}
void  S6475C2 ::v14(){vfunc_called(this, "_ZN7S6475C23v14Ev");}
void  S6475C2 ::v15(){vfunc_called(this, "_ZN7S6475C23v15Ev");}
void  S6475C2 ::v16(){vfunc_called(this, "_ZN7S6475C23v16Ev");}
void  S6475C2 ::v17(){vfunc_called(this, "_ZN7S6475C23v17Ev");}
void  S6475C2 ::v18(){vfunc_called(this, "_ZN7S6475C23v18Ev");}
void  S6475C2 ::v19(){vfunc_called(this, "_ZN7S6475C23v19Ev");}
void  S6475C2 ::v20(){vfunc_called(this, "_ZN7S6475C23v20Ev");}
void  S6475C2 ::v21(){vfunc_called(this, "_ZN7S6475C23v21Ev");}
void  S6475C2 ::v22(){vfunc_called(this, "_ZN7S6475C23v22Ev");}
void  S6475C2 ::v23(){vfunc_called(this, "_ZN7S6475C23v23Ev");}
void  S6475C2 ::v24(){vfunc_called(this, "_ZN7S6475C23v24Ev");}
void  S6475C2 ::v25(){vfunc_called(this, "_ZN7S6475C23v25Ev");}
void  S6475C2 ::v26(){vfunc_called(this, "_ZN7S6475C23v26Ev");}
void  S6475C2 ::v27(){vfunc_called(this, "_ZN7S6475C23v27Ev");}
S6475C2 ::S6475C2(){ note_ctor("S6475C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6475C2C1Ev();
extern void _ZN7S6475C2D1Ev();
Name_Map name_map_S6475C2[] = {
  NSPAIR(_ZN7S6475C2C1Ev),
  NSPAIR(_ZN7S6475C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6475C2[];
extern void _ZN7S6475C2D1Ev();
extern void _ZN7S6475C2D0Ev();
extern void _ZN7S6475C23v14Ev();
extern void _ZN7S6475C23v15Ev();
extern void _ZN7S6475C23v16Ev();
extern void _ZN7S6475C23v17Ev();
extern void _ZN7S6475C23v18Ev();
extern void _ZN7S6475C23v19Ev();
extern void _ZN7S6475C23v20Ev();
extern void _ZN7S6475C23v21Ev();
extern void _ZN7S6475C23v22Ev();
extern void _ZN7S6475C23v23Ev();
extern void _ZN7S6475C23v24Ev();
extern void _ZN7S6475C23v25Ev();
extern void _ZN7S6475C23v26Ev();
extern void _ZN7S6475C23v27Ev();
static  VTBL_ENTRY vtc_S6475C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6475C2[0]),
  (VTBL_ENTRY)&_ZN7S6475C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6475C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6475C2[];
extern  VTBL_ENTRY _ZTV7S6475C2[];
Class_Descriptor cd_S6475C2 = {  "S6475C2", // class name
  0,0,//no base classes
  &(vtc_S6475C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6475C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6475C2),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  S6475C1  : S6475C2 {
  ::S7097C3 s6475c1f0;
  void *s6475c1f1[11];
  int s6475c1f2[5];
  void *s6475c1f3[2];
  int s6475c1f4[3];
  ::S3618C13_nt s6475c1f5;
  void *s6475c1f6;
  virtual  ~S6475C1(); // _ZN7S6475C1D1Ev
  virtual void  v1(); // _ZN7S6475C12v1Ev
  virtual void  v2(); // _ZN7S6475C12v2Ev
  virtual void  v3(); // _ZN7S6475C12v3Ev
  virtual void  v4(); // _ZN7S6475C12v4Ev
  virtual void  v5(); // _ZN7S6475C12v5Ev
  virtual void  v6(); // _ZN7S6475C12v6Ev
  virtual void  v7(); // _ZN7S6475C12v7Ev
  virtual void  v8(); // _ZN7S6475C12v8Ev
  virtual void  v9(); // _ZN7S6475C12v9Ev
  virtual void  v10(); // _ZN7S6475C13v10Ev
  virtual void  v11(); // _ZN7S6475C13v11Ev
  virtual void  v12(); // _ZN7S6475C13v12Ev
  virtual void  v13(); // _ZN7S6475C13v13Ev
  S6475C1(); // tgen
};
//SIG(1 S6475C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC3{ m Fp FL Fi} Fp[11] Fi[5] Fp[2] Fi[3] FC4{ m FC5{ Fl[4]}} Fp}


 S6475C1 ::~S6475C1(){ note_dtor("S6475C1", this);}
void  S6475C1 ::v1(){vfunc_called(this, "_ZN7S6475C12v1Ev");}
void  S6475C1 ::v2(){vfunc_called(this, "_ZN7S6475C12v2Ev");}
void  S6475C1 ::v3(){vfunc_called(this, "_ZN7S6475C12v3Ev");}
void  S6475C1 ::v4(){vfunc_called(this, "_ZN7S6475C12v4Ev");}
void  S6475C1 ::v5(){vfunc_called(this, "_ZN7S6475C12v5Ev");}
void  S6475C1 ::v6(){vfunc_called(this, "_ZN7S6475C12v6Ev");}
void  S6475C1 ::v7(){vfunc_called(this, "_ZN7S6475C12v7Ev");}
void  S6475C1 ::v8(){vfunc_called(this, "_ZN7S6475C12v8Ev");}
void  S6475C1 ::v9(){vfunc_called(this, "_ZN7S6475C12v9Ev");}
void  S6475C1 ::v10(){vfunc_called(this, "_ZN7S6475C13v10Ev");}
void  S6475C1 ::v11(){vfunc_called(this, "_ZN7S6475C13v11Ev");}
void  S6475C1 ::v12(){vfunc_called(this, "_ZN7S6475C13v12Ev");}
void  S6475C1 ::v13(){vfunc_called(this, "_ZN7S6475C13v13Ev");}
S6475C1 ::S6475C1(){ note_ctor("S6475C1", this);} // tgen

static void Test_S6475C1()
{
  extern Class_Descriptor cd_S6475C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,34)];
    init_test(&cd_S6475C1, buf);
    S6475C1 *dp, &lv = *(dp=new (buf) S6475C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S6475C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6475C1)");
    check_base_class_offset(lv, (S6475C2*), 0, "S6475C1");
    check_field_offset(lv, s6475c1f0, ABISELECT(16,12), "S6475C1.s6475c1f0");
    check_field_offset(lv, s6475c1f1, ABISELECT(40,28), "S6475C1.s6475c1f1");
    check_field_offset(lv, s6475c1f2, ABISELECT(128,72), "S6475C1.s6475c1f2");
    check_field_offset(lv, s6475c1f3, ABISELECT(152,92), "S6475C1.s6475c1f3");
    check_field_offset(lv, s6475c1f4, ABISELECT(168,100), "S6475C1.s6475c1f4");
    check_field_offset(lv, s6475c1f5, ABISELECT(184,112), "S6475C1.s6475c1f5");
    check_field_offset(lv, s6475c1f6, ABISELECT(216,128), "S6475C1.s6475c1f6");
    test_class_info(&lv, &cd_S6475C1);
    dp->~S6475C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6475C1(Test_S6475C1, "S6475C1", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S6475C1C1Ev();
extern void _ZN7S6475C1D1Ev();
Name_Map name_map_S6475C1[] = {
  NSPAIR(_ZN7S6475C1C1Ev),
  NSPAIR(_ZN7S6475C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6475C2;
extern VTBL_ENTRY _ZTI7S6475C2[];
extern  VTBL_ENTRY _ZTV7S6475C2[];
static Base_Class bases_S6475C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6475C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6475C1[];
extern void _ZN7S6475C1D1Ev();
extern void _ZN7S6475C1D0Ev();
extern void _ZN7S6475C23v14Ev();
extern void _ZN7S6475C23v15Ev();
extern void _ZN7S6475C23v16Ev();
extern void _ZN7S6475C23v17Ev();
extern void _ZN7S6475C23v18Ev();
extern void _ZN7S6475C23v19Ev();
extern void _ZN7S6475C23v20Ev();
extern void _ZN7S6475C23v21Ev();
extern void _ZN7S6475C23v22Ev();
extern void _ZN7S6475C23v23Ev();
extern void _ZN7S6475C23v24Ev();
extern void _ZN7S6475C23v25Ev();
extern void _ZN7S6475C23v26Ev();
extern void _ZN7S6475C23v27Ev();
extern void _ZN7S6475C12v1Ev();
extern void _ZN7S6475C12v2Ev();
extern void _ZN7S6475C12v3Ev();
extern void _ZN7S6475C12v4Ev();
extern void _ZN7S6475C12v5Ev();
extern void _ZN7S6475C12v6Ev();
extern void _ZN7S6475C12v7Ev();
extern void _ZN7S6475C12v8Ev();
extern void _ZN7S6475C12v9Ev();
extern void _ZN7S6475C13v10Ev();
extern void _ZN7S6475C13v11Ev();
extern void _ZN7S6475C13v12Ev();
extern void _ZN7S6475C13v13Ev();
static  VTBL_ENTRY vtc_S6475C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6475C1[0]),
  (VTBL_ENTRY)&_ZN7S6475C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6475C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6475C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6475C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6475C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6475C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6475C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6475C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6475C1[];
extern  VTBL_ENTRY _ZTV7S6475C1[];
Class_Descriptor cd_S6475C1 = {  "S6475C1", // class name
  bases_S6475C1, 1,
  &(vtc_S6475C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S6475C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6475C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6477C2  {
  int s6477c2f0[2];
  virtual  ~S6477C2(); // _ZN7S6477C2D1Ev
  virtual void  v14(); // _ZN7S6477C23v14Ev
  virtual void  v15(); // _ZN7S6477C23v15Ev
  virtual void  v16(); // _ZN7S6477C23v16Ev
  virtual void  v17(); // _ZN7S6477C23v17Ev
  virtual void  v18(); // _ZN7S6477C23v18Ev
  virtual void  v19(); // _ZN7S6477C23v19Ev
  virtual void  v20(); // _ZN7S6477C23v20Ev
  virtual void  v21(); // _ZN7S6477C23v21Ev
  virtual void  v22(); // _ZN7S6477C23v22Ev
  virtual void  v23(); // _ZN7S6477C23v23Ev
  virtual void  v24(); // _ZN7S6477C23v24Ev
  virtual void  v25(); // _ZN7S6477C23v25Ev
  virtual void  v26(); // _ZN7S6477C23v26Ev
  virtual void  v27(); // _ZN7S6477C23v27Ev
  S6477C2(); // tgen
};
//SIG(-1 S6477C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6477C2 ::~S6477C2(){ note_dtor("S6477C2", this);}
void  S6477C2 ::v14(){vfunc_called(this, "_ZN7S6477C23v14Ev");}
void  S6477C2 ::v15(){vfunc_called(this, "_ZN7S6477C23v15Ev");}
void  S6477C2 ::v16(){vfunc_called(this, "_ZN7S6477C23v16Ev");}
void  S6477C2 ::v17(){vfunc_called(this, "_ZN7S6477C23v17Ev");}
void  S6477C2 ::v18(){vfunc_called(this, "_ZN7S6477C23v18Ev");}
void  S6477C2 ::v19(){vfunc_called(this, "_ZN7S6477C23v19Ev");}
void  S6477C2 ::v20(){vfunc_called(this, "_ZN7S6477C23v20Ev");}
void  S6477C2 ::v21(){vfunc_called(this, "_ZN7S6477C23v21Ev");}
void  S6477C2 ::v22(){vfunc_called(this, "_ZN7S6477C23v22Ev");}
void  S6477C2 ::v23(){vfunc_called(this, "_ZN7S6477C23v23Ev");}
void  S6477C2 ::v24(){vfunc_called(this, "_ZN7S6477C23v24Ev");}
void  S6477C2 ::v25(){vfunc_called(this, "_ZN7S6477C23v25Ev");}
void  S6477C2 ::v26(){vfunc_called(this, "_ZN7S6477C23v26Ev");}
void  S6477C2 ::v27(){vfunc_called(this, "_ZN7S6477C23v27Ev");}
S6477C2 ::S6477C2(){ note_ctor("S6477C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6477C2C1Ev();
extern void _ZN7S6477C2D1Ev();
Name_Map name_map_S6477C2[] = {
  NSPAIR(_ZN7S6477C2C1Ev),
  NSPAIR(_ZN7S6477C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6477C2[];
extern void _ZN7S6477C2D1Ev();
extern void _ZN7S6477C2D0Ev();
extern void _ZN7S6477C23v14Ev();
extern void _ZN7S6477C23v15Ev();
extern void _ZN7S6477C23v16Ev();
extern void _ZN7S6477C23v17Ev();
extern void _ZN7S6477C23v18Ev();
extern void _ZN7S6477C23v19Ev();
extern void _ZN7S6477C23v20Ev();
extern void _ZN7S6477C23v21Ev();
extern void _ZN7S6477C23v22Ev();
extern void _ZN7S6477C23v23Ev();
extern void _ZN7S6477C23v24Ev();
extern void _ZN7S6477C23v25Ev();
extern void _ZN7S6477C23v26Ev();
extern void _ZN7S6477C23v27Ev();
static  VTBL_ENTRY vtc_S6477C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6477C2[0]),
  (VTBL_ENTRY)&_ZN7S6477C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6477C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6477C2[];
extern  VTBL_ENTRY _ZTV7S6477C2[];
Class_Descriptor cd_S6477C2 = {  "S6477C2", // class name
  0,0,//no base classes
  &(vtc_S6477C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6477C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6477C2),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  S6477C1  : S6477C2 {
  ::S7097C3 s6477c1f0;
  void *s6477c1f1[11];
  int s6477c1f2[5];
  void *s6477c1f3[2];
  int s6477c1f4[3];
  ::S3620C13_nt s6477c1f5;
  void *s6477c1f6;
  virtual  ~S6477C1(); // _ZN7S6477C1D1Ev
  virtual void  v1(); // _ZN7S6477C12v1Ev
  virtual void  v2(); // _ZN7S6477C12v2Ev
  virtual void  v3(); // _ZN7S6477C12v3Ev
  virtual void  v4(); // _ZN7S6477C12v4Ev
  virtual void  v5(); // _ZN7S6477C12v5Ev
  virtual void  v6(); // _ZN7S6477C12v6Ev
  virtual void  v7(); // _ZN7S6477C12v7Ev
  virtual void  v8(); // _ZN7S6477C12v8Ev
  virtual void  v9(); // _ZN7S6477C12v9Ev
  virtual void  v10(); // _ZN7S6477C13v10Ev
  virtual void  v11(); // _ZN7S6477C13v11Ev
  virtual void  v12(); // _ZN7S6477C13v12Ev
  virtual void  v13(); // _ZN7S6477C13v13Ev
  S6477C1(); // tgen
};
//SIG(1 S6477C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC3{ m Fp FL Fi} Fp[11] Fi[5] Fp[2] Fi[3] FC4{ m FL[4]} Fp}


 S6477C1 ::~S6477C1(){ note_dtor("S6477C1", this);}
void  S6477C1 ::v1(){vfunc_called(this, "_ZN7S6477C12v1Ev");}
void  S6477C1 ::v2(){vfunc_called(this, "_ZN7S6477C12v2Ev");}
void  S6477C1 ::v3(){vfunc_called(this, "_ZN7S6477C12v3Ev");}
void  S6477C1 ::v4(){vfunc_called(this, "_ZN7S6477C12v4Ev");}
void  S6477C1 ::v5(){vfunc_called(this, "_ZN7S6477C12v5Ev");}
void  S6477C1 ::v6(){vfunc_called(this, "_ZN7S6477C12v6Ev");}
void  S6477C1 ::v7(){vfunc_called(this, "_ZN7S6477C12v7Ev");}
void  S6477C1 ::v8(){vfunc_called(this, "_ZN7S6477C12v8Ev");}
void  S6477C1 ::v9(){vfunc_called(this, "_ZN7S6477C12v9Ev");}
void  S6477C1 ::v10(){vfunc_called(this, "_ZN7S6477C13v10Ev");}
void  S6477C1 ::v11(){vfunc_called(this, "_ZN7S6477C13v11Ev");}
void  S6477C1 ::v12(){vfunc_called(this, "_ZN7S6477C13v12Ev");}
void  S6477C1 ::v13(){vfunc_called(this, "_ZN7S6477C13v13Ev");}
S6477C1 ::S6477C1(){ note_ctor("S6477C1", this);} // tgen

static void Test_S6477C1()
{
  extern Class_Descriptor cd_S6477C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,38)];
    init_test(&cd_S6477C1, buf);
    S6477C1 *dp, &lv = *(dp=new (buf) S6477C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S6477C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6477C1)");
    check_base_class_offset(lv, (S6477C2*), 0, "S6477C1");
    check_field_offset(lv, s6477c1f0, ABISELECT(16,12), "S6477C1.s6477c1f0");
    check_field_offset(lv, s6477c1f1, ABISELECT(40,28), "S6477C1.s6477c1f1");
    check_field_offset(lv, s6477c1f2, ABISELECT(128,72), "S6477C1.s6477c1f2");
    check_field_offset(lv, s6477c1f3, ABISELECT(152,92), "S6477C1.s6477c1f3");
    check_field_offset(lv, s6477c1f4, ABISELECT(168,100), "S6477C1.s6477c1f4");
    check_field_offset(lv, s6477c1f5, ABISELECT(184,112), "S6477C1.s6477c1f5");
    check_field_offset(lv, s6477c1f6, ABISELECT(216,144), "S6477C1.s6477c1f6");
    test_class_info(&lv, &cd_S6477C1);
    dp->~S6477C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6477C1(Test_S6477C1, "S6477C1", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN7S6477C1C1Ev();
extern void _ZN7S6477C1D1Ev();
Name_Map name_map_S6477C1[] = {
  NSPAIR(_ZN7S6477C1C1Ev),
  NSPAIR(_ZN7S6477C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6477C2;
extern VTBL_ENTRY _ZTI7S6477C2[];
extern  VTBL_ENTRY _ZTV7S6477C2[];
static Base_Class bases_S6477C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6477C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6477C1[];
extern void _ZN7S6477C1D1Ev();
extern void _ZN7S6477C1D0Ev();
extern void _ZN7S6477C23v14Ev();
extern void _ZN7S6477C23v15Ev();
extern void _ZN7S6477C23v16Ev();
extern void _ZN7S6477C23v17Ev();
extern void _ZN7S6477C23v18Ev();
extern void _ZN7S6477C23v19Ev();
extern void _ZN7S6477C23v20Ev();
extern void _ZN7S6477C23v21Ev();
extern void _ZN7S6477C23v22Ev();
extern void _ZN7S6477C23v23Ev();
extern void _ZN7S6477C23v24Ev();
extern void _ZN7S6477C23v25Ev();
extern void _ZN7S6477C23v26Ev();
extern void _ZN7S6477C23v27Ev();
extern void _ZN7S6477C12v1Ev();
extern void _ZN7S6477C12v2Ev();
extern void _ZN7S6477C12v3Ev();
extern void _ZN7S6477C12v4Ev();
extern void _ZN7S6477C12v5Ev();
extern void _ZN7S6477C12v6Ev();
extern void _ZN7S6477C12v7Ev();
extern void _ZN7S6477C12v8Ev();
extern void _ZN7S6477C12v9Ev();
extern void _ZN7S6477C13v10Ev();
extern void _ZN7S6477C13v11Ev();
extern void _ZN7S6477C13v12Ev();
extern void _ZN7S6477C13v13Ev();
static  VTBL_ENTRY vtc_S6477C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6477C1[0]),
  (VTBL_ENTRY)&_ZN7S6477C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6477C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6477C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6477C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6477C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6477C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6477C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6477C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6477C1[];
extern  VTBL_ENTRY _ZTV7S6477C1[];
Class_Descriptor cd_S6477C1 = {  "S6477C1", // class name
  bases_S6477C1, 1,
  &(vtc_S6477C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI7S6477C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6477C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10301C2_nt  {
  virtual  ~S10301C2_nt(); // _ZN11S10301C2_ntD1Ev
  virtual void  v9(); // _ZN11S10301C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10301C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10301C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10301C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10301C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10301C2_nt3v14Ev
  virtual void  v15(); // _ZN11S10301C2_nt3v15Ev
  virtual void  v16(); // _ZN11S10301C2_nt3v16Ev
  virtual void  v17(); // _ZN11S10301C2_nt3v17Ev
  virtual void  v18(); // _ZN11S10301C2_nt3v18Ev
  S10301C2_nt(); // tgen
};
//SIG(-1 S10301C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S10301C2_nt ::~S10301C2_nt(){ note_dtor("S10301C2_nt", this);}
void  S10301C2_nt ::v9(){vfunc_called(this, "_ZN11S10301C2_nt2v9Ev");}
void  S10301C2_nt ::v10(){vfunc_called(this, "_ZN11S10301C2_nt3v10Ev");}
void  S10301C2_nt ::v11(){vfunc_called(this, "_ZN11S10301C2_nt3v11Ev");}
void  S10301C2_nt ::v12(){vfunc_called(this, "_ZN11S10301C2_nt3v12Ev");}
void  S10301C2_nt ::v13(){vfunc_called(this, "_ZN11S10301C2_nt3v13Ev");}
void  S10301C2_nt ::v14(){vfunc_called(this, "_ZN11S10301C2_nt3v14Ev");}
void  S10301C2_nt ::v15(){vfunc_called(this, "_ZN11S10301C2_nt3v15Ev");}
void  S10301C2_nt ::v16(){vfunc_called(this, "_ZN11S10301C2_nt3v16Ev");}
void  S10301C2_nt ::v17(){vfunc_called(this, "_ZN11S10301C2_nt3v17Ev");}
void  S10301C2_nt ::v18(){vfunc_called(this, "_ZN11S10301C2_nt3v18Ev");}
S10301C2_nt ::S10301C2_nt(){ note_ctor("S10301C2_nt", this);} // tgen

//skip512 S10301C2_nt

#else // __cplusplus

extern void _ZN11S10301C2_ntC1Ev();
extern void _ZN11S10301C2_ntD1Ev();
Name_Map name_map_S10301C2_nt[] = {
  NSPAIR(_ZN11S10301C2_ntC1Ev),
  NSPAIR(_ZN11S10301C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10301C2_nt[];
extern void _ZN11S10301C2_ntD1Ev();
extern void _ZN11S10301C2_ntD0Ev();
extern void _ZN11S10301C2_nt2v9Ev();
extern void _ZN11S10301C2_nt3v10Ev();
extern void _ZN11S10301C2_nt3v11Ev();
extern void _ZN11S10301C2_nt3v12Ev();
extern void _ZN11S10301C2_nt3v13Ev();
extern void _ZN11S10301C2_nt3v14Ev();
extern void _ZN11S10301C2_nt3v15Ev();
extern void _ZN11S10301C2_nt3v16Ev();
extern void _ZN11S10301C2_nt3v17Ev();
extern void _ZN11S10301C2_nt3v18Ev();
static  VTBL_ENTRY vtc_S10301C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10301C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10301C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S10301C2_nt[];
VTBL_ENTRY *P__ZTI11S10301C2_nt = _ZTI11S10301C2_nt; 
extern  VTBL_ENTRY _ZTV11S10301C2_nt[];
Class_Descriptor cd_S10301C2_nt = {  "S10301C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10301C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10301C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10301C2_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10301C6_nt  {
  char s10301c6f0[4];
};
//SIG(-1 S10301C6_nt) C1{ Fc[4]}



//skip512 S10301C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10301C5  {
  int s10301c5f0[3];
  ::S9526C11_nt s10301c5f1;
  ::S9526C11_nt s10301c5f2;
  ::S9526C11_nt s10301c5f3;
  ::S9526C11_nt s10301c5f4;
  ::S9526C11_nt s10301c5f5;
  ::S9526C11_nt s10301c5f6;
  ::S9526C11_nt s10301c5f7;
  ::S9526C11_nt s10301c5f8;
  ::S9526C11_nt s10301c5f9;
  __tsi64 s10301c5f10;
  int s10301c5f11[4];
  ::S10301C6_nt s10301c5f12;
};
//SIG(-1 S10301C5) C1{ Fi[3] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FL Fi[4] FC4{ Fc[4]}}



static void Test_S10301C5()
{
  {
    init_simple_test("S10301C5");
    S10301C5 lv;
    check2(sizeof(lv), ABISELECT(192,148), "sizeof(S10301C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10301C5)");
    check_field_offset(lv, s10301c5f0, 0, "S10301C5.s10301c5f0");
    check_field_offset(lv, s10301c5f1, ABISELECT(16,12), "S10301C5.s10301c5f1");
    check_field_offset(lv, s10301c5f2, ABISELECT(32,24), "S10301C5.s10301c5f2");
    check_field_offset(lv, s10301c5f3, ABISELECT(48,36), "S10301C5.s10301c5f3");
    check_field_offset(lv, s10301c5f4, ABISELECT(64,48), "S10301C5.s10301c5f4");
    check_field_offset(lv, s10301c5f5, ABISELECT(80,60), "S10301C5.s10301c5f5");
    check_field_offset(lv, s10301c5f6, ABISELECT(96,72), "S10301C5.s10301c5f6");
    check_field_offset(lv, s10301c5f7, ABISELECT(112,84), "S10301C5.s10301c5f7");
    check_field_offset(lv, s10301c5f8, ABISELECT(128,96), "S10301C5.s10301c5f8");
    check_field_offset(lv, s10301c5f9, ABISELECT(144,108), "S10301C5.s10301c5f9");
    check_field_offset(lv, s10301c5f10, ABISELECT(160,120), "S10301C5.s10301c5f10");
    check_field_offset(lv, s10301c5f11, ABISELECT(168,128), "S10301C5.s10301c5f11");
    check_field_offset(lv, s10301c5f12, ABISELECT(184,144), "S10301C5.s10301c5f12");
  }
}
static Arrange_To_Call_Me vS10301C5(Test_S10301C5, "S10301C5", ABISELECT(192,148));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10301C1  : S10301C2_nt {
  ::S9526C11_nt s10301c1f0;
  ::S10301C5 s10301c1f1;
  void *s10301c1f2[2];
  virtual  ~S10301C1(); // _ZN8S10301C1D1Ev
  virtual void  v1(); // _ZN8S10301C12v1Ev
  virtual void  v2(); // _ZN8S10301C12v2Ev
  virtual void  v3(); // _ZN8S10301C12v3Ev
  virtual void  v4(); // _ZN8S10301C12v4Ev
  virtual void  v5(); // _ZN8S10301C12v5Ev
  virtual void  v6(); // _ZN8S10301C12v6Ev
  virtual void  v7(); // _ZN8S10301C12v7Ev
  virtual void  v8(); // _ZN8S10301C12v8Ev
  S10301C1(); // tgen
};
//SIG(1 S10301C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 FC3{ m Fp Fi FC4{ m}} FC5{ Fi[3] FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FL Fi[4] FC6{ Fc[4]}} Fp[2]}


 S10301C1 ::~S10301C1(){ note_dtor("S10301C1", this);}
void  S10301C1 ::v1(){vfunc_called(this, "_ZN8S10301C12v1Ev");}
void  S10301C1 ::v2(){vfunc_called(this, "_ZN8S10301C12v2Ev");}
void  S10301C1 ::v3(){vfunc_called(this, "_ZN8S10301C12v3Ev");}
void  S10301C1 ::v4(){vfunc_called(this, "_ZN8S10301C12v4Ev");}
void  S10301C1 ::v5(){vfunc_called(this, "_ZN8S10301C12v5Ev");}
void  S10301C1 ::v6(){vfunc_called(this, "_ZN8S10301C12v6Ev");}
void  S10301C1 ::v7(){vfunc_called(this, "_ZN8S10301C12v7Ev");}
void  S10301C1 ::v8(){vfunc_called(this, "_ZN8S10301C12v8Ev");}
S10301C1 ::S10301C1(){ note_ctor("S10301C1", this);} // tgen

static void Test_S10301C1()
{
  extern Class_Descriptor cd_S10301C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,44)];
    init_test(&cd_S10301C1, buf);
    S10301C1 *dp, &lv = *(dp=new (buf) S10301C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,172), "sizeof(S10301C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10301C1)");
    check_base_class_offset(lv, (S10301C2_nt*), 0, "S10301C1");
    check_field_offset(lv, s10301c1f0, ABISELECT(8,4), "S10301C1.s10301c1f0");
    check_field_offset(lv, s10301c1f1, ABISELECT(24,16), "S10301C1.s10301c1f1");
    check_field_offset(lv, s10301c1f2, ABISELECT(216,164), "S10301C1.s10301c1f2");
    test_class_info(&lv, &cd_S10301C1);
    dp->~S10301C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10301C1(Test_S10301C1, "S10301C1", ABISELECT(232,172));

#else // __cplusplus

extern void _ZN8S10301C1C1Ev();
extern void _ZN8S10301C1D1Ev();
Name_Map name_map_S10301C1[] = {
  NSPAIR(_ZN8S10301C1C1Ev),
  NSPAIR(_ZN8S10301C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10301C2_nt;
extern VTBL_ENTRY _ZTI11S10301C2_nt[];
extern  VTBL_ENTRY _ZTV11S10301C2_nt[];
static Base_Class bases_S10301C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10301C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10301C1[];
extern void _ZN8S10301C1D1Ev();
extern void _ZN8S10301C1D0Ev();
extern void _ZN11S10301C2_nt2v9Ev();
extern void _ZN11S10301C2_nt3v10Ev();
extern void _ZN11S10301C2_nt3v11Ev();
extern void _ZN11S10301C2_nt3v12Ev();
extern void _ZN11S10301C2_nt3v13Ev();
extern void _ZN11S10301C2_nt3v14Ev();
extern void _ZN11S10301C2_nt3v15Ev();
extern void _ZN11S10301C2_nt3v16Ev();
extern void _ZN11S10301C2_nt3v17Ev();
extern void _ZN11S10301C2_nt3v18Ev();
extern void _ZN8S10301C12v1Ev();
extern void _ZN8S10301C12v2Ev();
extern void _ZN8S10301C12v3Ev();
extern void _ZN8S10301C12v4Ev();
extern void _ZN8S10301C12v5Ev();
extern void _ZN8S10301C12v6Ev();
extern void _ZN8S10301C12v7Ev();
extern void _ZN8S10301C12v8Ev();
static  VTBL_ENTRY vtc_S10301C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10301C1[0]),
  (VTBL_ENTRY)&_ZN8S10301C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10301C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S10301C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10301C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10301C1[];
extern  VTBL_ENTRY _ZTV8S10301C1[];
Class_Descriptor cd_S10301C1 = {  "S10301C1", // class name
  bases_S10301C1, 1,
  &(vtc_S10301C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,172), // object size
  NSPAIRA(_ZTI8S10301C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10301C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5249C3  {
  ::S5757C13_nt s5249c3f0;
  unsigned int s5249c3f1:1;
  virtual  ~S5249C3(); // _ZN7S5249C3D1Ev
  virtual void  v5(); // _ZN7S5249C32v5Ev
  virtual void  v6(); // _ZN7S5249C32v6Ev
  virtual void  v7(); // _ZN7S5249C32v7Ev
  virtual void  v8(); // _ZN7S5249C32v8Ev
  virtual void  v9(); // _ZN7S5249C32v9Ev
  virtual void  v10(); // _ZN7S5249C33v10Ev
  virtual void  v11(); // _ZN7S5249C33v11Ev
  S5249C3(); // tgen
};
//SIG(-1 S5249C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S5249C3 ::~S5249C3(){ note_dtor("S5249C3", this);}
void  S5249C3 ::v5(){vfunc_called(this, "_ZN7S5249C32v5Ev");}
void  S5249C3 ::v6(){vfunc_called(this, "_ZN7S5249C32v6Ev");}
void  S5249C3 ::v7(){vfunc_called(this, "_ZN7S5249C32v7Ev");}
void  S5249C3 ::v8(){vfunc_called(this, "_ZN7S5249C32v8Ev");}
void  S5249C3 ::v9(){vfunc_called(this, "_ZN7S5249C32v9Ev");}
void  S5249C3 ::v10(){vfunc_called(this, "_ZN7S5249C33v10Ev");}
void  S5249C3 ::v11(){vfunc_called(this, "_ZN7S5249C33v11Ev");}
S5249C3 ::S5249C3(){ note_ctor("S5249C3", this);} // tgen

static void Test_S5249C3()
{
  extern Class_Descriptor cd_S5249C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S5249C3, buf);
    S5249C3 *dp, &lv = *(dp=new (buf) S5249C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S5249C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5249C3)");
    check_field_offset(lv, s5249c3f0, ABISELECT(8,4), "S5249C3.s5249c3f0");
    set_bf_and_test(lv, s5249c3f1, ABISELECT(32,16), 0, 1, 1, "S5249C3");
    test_class_info(&lv, &cd_S5249C3);
    dp->~S5249C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5249C3(Test_S5249C3, "S5249C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S5249C3C1Ev();
extern void _ZN7S5249C3D1Ev();
Name_Map name_map_S5249C3[] = {
  NSPAIR(_ZN7S5249C3C1Ev),
  NSPAIR(_ZN7S5249C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5249C3[];
extern void _ZN7S5249C3D1Ev();
extern void _ZN7S5249C3D0Ev();
extern void _ZN7S5249C32v5Ev();
extern void _ZN7S5249C32v6Ev();
extern void _ZN7S5249C32v7Ev();
extern void _ZN7S5249C32v8Ev();
extern void _ZN7S5249C32v9Ev();
extern void _ZN7S5249C33v10Ev();
extern void _ZN7S5249C33v11Ev();
static  VTBL_ENTRY vtc_S5249C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5249C3[0]),
  (VTBL_ENTRY)&_ZN7S5249C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5249C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5249C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5249C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S5249C3[];
extern  VTBL_ENTRY _ZTV7S5249C3[];
Class_Descriptor cd_S5249C3 = {  "S5249C3", // class name
  0,0,//no base classes
  &(vtc_S5249C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S5249C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5249C3),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  S5249C2  : S5249C3 {
  ::S5757C17_nt s5249c2f0;
  ::S5757C17_nt s5249c2f1;
  ::S19894C6_nt s5249c2f2;
  ::S19894C6_nt s5249c2f3;
  ::S19894C6_nt s5249c2f4;
  ::S19894C6_nt s5249c2f5;
  ::S19894C6_nt s5249c2f6;
  ::S5757C20_nt s5249c2f7;
  virtual void  v12(); // _ZN7S5249C23v12Ev
  virtual void  v13(); // _ZN7S5249C23v13Ev
  virtual void  v14(); // _ZN7S5249C23v14Ev
  ~S5249C2(); // tgen
  S5249C2(); // tgen
};
//SIG(-1 S5249C2) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S5249C2 ::v12(){vfunc_called(this, "_ZN7S5249C23v12Ev");}
void  S5249C2 ::v13(){vfunc_called(this, "_ZN7S5249C23v13Ev");}
void  S5249C2 ::v14(){vfunc_called(this, "_ZN7S5249C23v14Ev");}
S5249C2 ::~S5249C2(){ note_dtor("S5249C2", this);} // tgen
S5249C2 ::S5249C2(){ note_ctor("S5249C2", this);} // tgen

static void Test_S5249C2()
{
  extern Class_Descriptor cd_S5249C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(79,113)];
    init_test(&cd_S5249C2, buf);
    S5249C2 *dp, &lv = *(dp=new (buf) S5249C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(624,448), "sizeof(S5249C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5249C2)");
    check_base_class_offset(lv, (S5249C3*), 0, "S5249C2");
    check_field_offset(lv, s5249c2f0, ABISELECT(40,20), "S5249C2.s5249c2f0");
    check_field_offset(lv, s5249c2f1, ABISELECT(304,216), "S5249C2.s5249c2f1");
    check_field_offset(lv, s5249c2f2, ABISELECT(568,412), "S5249C2.s5249c2f2");
    check_field_offset(lv, s5249c2f3, ABISELECT(576,416), "S5249C2.s5249c2f3");
    check_field_offset(lv, s5249c2f4, ABISELECT(584,420), "S5249C2.s5249c2f4");
    check_field_offset(lv, s5249c2f5, ABISELECT(592,424), "S5249C2.s5249c2f5");
    check_field_offset(lv, s5249c2f6, ABISELECT(600,428), "S5249C2.s5249c2f6");
    check_field_offset(lv, s5249c2f7, ABISELECT(608,432), "S5249C2.s5249c2f7");
    test_class_info(&lv, &cd_S5249C2);
    dp->~S5249C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5249C2(Test_S5249C2, "S5249C2", ABISELECT(624,448));

#else // __cplusplus

extern void _ZN7S5249C2C1Ev();
extern void _ZN7S5249C2D1Ev();
Name_Map name_map_S5249C2[] = {
  NSPAIR(_ZN7S5249C2C1Ev),
  NSPAIR(_ZN7S5249C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5249C3;
extern VTBL_ENTRY _ZTI7S5249C3[];
extern  VTBL_ENTRY _ZTV7S5249C3[];
static Base_Class bases_S5249C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5249C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5249C2[];
extern void _ZN7S5249C2D1Ev();
extern void _ZN7S5249C2D0Ev();
extern void _ZN7S5249C32v5Ev();
extern void _ZN7S5249C32v6Ev();
extern void _ZN7S5249C32v7Ev();
extern void _ZN7S5249C32v8Ev();
extern void _ZN7S5249C32v9Ev();
extern void _ZN7S5249C33v10Ev();
extern void _ZN7S5249C33v11Ev();
extern void _ZN7S5249C23v12Ev();
extern void _ZN7S5249C23v13Ev();
extern void _ZN7S5249C23v14Ev();
static  VTBL_ENTRY vtc_S5249C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5249C2[0]),
  (VTBL_ENTRY)&_ZN7S5249C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5249C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5249C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5249C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5249C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5249C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5249C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S5249C2[];
extern  VTBL_ENTRY _ZTV7S5249C2[];
Class_Descriptor cd_S5249C2 = {  "S5249C2", // class name
  bases_S5249C2, 1,
  &(vtc_S5249C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI7S5249C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5249C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5249C1  : S5249C2 {
  int s5249c1f0;
  virtual  ~S5249C1(); // _ZN7S5249C1D1Ev
  virtual void  v1(); // _ZN7S5249C12v1Ev
  virtual void  v2(); // _ZN7S5249C12v2Ev
  virtual void  v3(); // _ZN7S5249C12v3Ev
  virtual void  v4(); // _ZN7S5249C12v4Ev
  S5249C1(); // tgen
};
//SIG(1 S5249C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[3]} Fi:1} v12 v13 v14 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} vd v1 v2 v3 v4 Fi}


 S5249C1 ::~S5249C1(){ note_dtor("S5249C1", this);}
void  S5249C1 ::v1(){vfunc_called(this, "_ZN7S5249C12v1Ev");}
void  S5249C1 ::v2(){vfunc_called(this, "_ZN7S5249C12v2Ev");}
void  S5249C1 ::v3(){vfunc_called(this, "_ZN7S5249C12v3Ev");}
void  S5249C1 ::v4(){vfunc_called(this, "_ZN7S5249C12v4Ev");}
S5249C1 ::S5249C1(){ note_ctor("S5249C1", this);} // tgen

static void Test_S5249C1()
{
  extern Class_Descriptor cd_S5249C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(80,114)];
    init_test(&cd_S5249C1, buf);
    S5249C1 *dp, &lv = *(dp=new (buf) S5249C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(632,452), "sizeof(S5249C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5249C1)");
    check_base_class_offset(lv, (S5249C3*)(S5249C2*), 0, "S5249C1");
    check_base_class_offset(lv, (S5249C2*), 0, "S5249C1");
    check_field_offset(lv, s5249c1f0, ABISELECT(624,448), "S5249C1.s5249c1f0");
    test_class_info(&lv, &cd_S5249C1);
    dp->~S5249C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5249C1(Test_S5249C1, "S5249C1", ABISELECT(632,452));

#else // __cplusplus

extern void _ZN7S5249C1C1Ev();
extern void _ZN7S5249C1D1Ev();
Name_Map name_map_S5249C1[] = {
  NSPAIR(_ZN7S5249C1C1Ev),
  NSPAIR(_ZN7S5249C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5249C3;
extern VTBL_ENTRY _ZTI7S5249C3[];
extern  VTBL_ENTRY _ZTV7S5249C3[];
extern Class_Descriptor cd_S5249C2;
extern VTBL_ENTRY _ZTI7S5249C2[];
extern  VTBL_ENTRY _ZTV7S5249C2[];
static Base_Class bases_S5249C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5249C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5249C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5249C1[];
extern void _ZN7S5249C1D1Ev();
extern void _ZN7S5249C1D0Ev();
extern void _ZN7S5249C32v5Ev();
extern void _ZN7S5249C32v6Ev();
extern void _ZN7S5249C32v7Ev();
extern void _ZN7S5249C32v8Ev();
extern void _ZN7S5249C32v9Ev();
extern void _ZN7S5249C33v10Ev();
extern void _ZN7S5249C33v11Ev();
extern void _ZN7S5249C23v12Ev();
extern void _ZN7S5249C23v13Ev();
extern void _ZN7S5249C23v14Ev();
extern void _ZN7S5249C12v1Ev();
extern void _ZN7S5249C12v2Ev();
extern void _ZN7S5249C12v3Ev();
extern void _ZN7S5249C12v4Ev();
static  VTBL_ENTRY vtc_S5249C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5249C1[0]),
  (VTBL_ENTRY)&_ZN7S5249C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5249C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5249C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5249C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5249C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5249C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5249C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5249C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5249C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5249C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5249C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5249C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5249C1[];
extern  VTBL_ENTRY _ZTV7S5249C1[];
Class_Descriptor cd_S5249C1 = {  "S5249C1", // class name
  bases_S5249C1, 2,
  &(vtc_S5249C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(632,452), // object size
  NSPAIRA(_ZTI7S5249C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5249C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2872C2  : S19894C34 {
  ::S9526C11_nt s2872c2f0;
  virtual  ~S2872C2(); // _ZN7S2872C2D1Ev
  virtual void  v13(); // _ZN7S2872C23v13Ev
  virtual void  v14(); // _ZN7S2872C23v14Ev
  virtual void  v15(); // _ZN7S2872C23v15Ev
  virtual void  v16(); // _ZN7S2872C23v16Ev
  virtual void  v17(); // _ZN7S2872C23v17Ev
  virtual void  v18(); // _ZN7S2872C23v18Ev
  virtual void  v19(); // _ZN7S2872C23v19Ev
  virtual void  v20(); // _ZN7S2872C23v20Ev
  virtual void  v21(); // _ZN7S2872C23v21Ev
  virtual void  v22(); // _ZN7S2872C23v22Ev
  virtual void  v23(); // _ZN7S2872C23v23Ev
  virtual void  v24(); // _ZN7S2872C23v24Ev
  virtual void  v25(); // _ZN7S2872C23v25Ev
  virtual void  v26(); // _ZN7S2872C23v26Ev
  virtual void  v27(); // _ZN7S2872C23v27Ev
  virtual void  v28(); // _ZN7S2872C23v28Ev
  virtual void  v29(); // _ZN7S2872C23v29Ev
  virtual void  v30(); // _ZN7S2872C23v30Ev
  virtual void  v31(); // _ZN7S2872C23v31Ev
  S2872C2(); // tgen
};
//SIG(-1 S2872C2) C1{ BC2{ m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC3{ m Fp Fi FC2}}


 S2872C2 ::~S2872C2(){ note_dtor("S2872C2", this);}
void  S2872C2 ::v13(){vfunc_called(this, "_ZN7S2872C23v13Ev");}
void  S2872C2 ::v14(){vfunc_called(this, "_ZN7S2872C23v14Ev");}
void  S2872C2 ::v15(){vfunc_called(this, "_ZN7S2872C23v15Ev");}
void  S2872C2 ::v16(){vfunc_called(this, "_ZN7S2872C23v16Ev");}
void  S2872C2 ::v17(){vfunc_called(this, "_ZN7S2872C23v17Ev");}
void  S2872C2 ::v18(){vfunc_called(this, "_ZN7S2872C23v18Ev");}
void  S2872C2 ::v19(){vfunc_called(this, "_ZN7S2872C23v19Ev");}
void  S2872C2 ::v20(){vfunc_called(this, "_ZN7S2872C23v20Ev");}
void  S2872C2 ::v21(){vfunc_called(this, "_ZN7S2872C23v21Ev");}
void  S2872C2 ::v22(){vfunc_called(this, "_ZN7S2872C23v22Ev");}
void  S2872C2 ::v23(){vfunc_called(this, "_ZN7S2872C23v23Ev");}
void  S2872C2 ::v24(){vfunc_called(this, "_ZN7S2872C23v24Ev");}
void  S2872C2 ::v25(){vfunc_called(this, "_ZN7S2872C23v25Ev");}
void  S2872C2 ::v26(){vfunc_called(this, "_ZN7S2872C23v26Ev");}
void  S2872C2 ::v27(){vfunc_called(this, "_ZN7S2872C23v27Ev");}
void  S2872C2 ::v28(){vfunc_called(this, "_ZN7S2872C23v28Ev");}
void  S2872C2 ::v29(){vfunc_called(this, "_ZN7S2872C23v29Ev");}
void  S2872C2 ::v30(){vfunc_called(this, "_ZN7S2872C23v30Ev");}
void  S2872C2 ::v31(){vfunc_called(this, "_ZN7S2872C23v31Ev");}
S2872C2 ::S2872C2(){ note_ctor("S2872C2", this);} // tgen

static void Test_S2872C2()
{
  extern Class_Descriptor cd_S2872C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2872C2, buf);
    S2872C2 *dp, &lv = *(dp=new (buf) S2872C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2872C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2872C2)");
    check_base_class_offset(lv, (S19894C34*), 0, "S2872C2");
    check_field_offset(lv, s2872c2f0, ABISELECT(8,4), "S2872C2.s2872c2f0");
    test_class_info(&lv, &cd_S2872C2);
    dp->~S2872C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2872C2(Test_S2872C2, "S2872C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2872C2C1Ev();
extern void _ZN7S2872C2D1Ev();
Name_Map name_map_S2872C2[] = {
  NSPAIR(_ZN7S2872C2C1Ev),
  NSPAIR(_ZN7S2872C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S2872C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2872C2[];
extern void _ZN7S2872C2D1Ev();
extern void _ZN7S2872C2D0Ev();
extern void _ZN7S2872C23v13Ev();
extern void _ZN7S2872C23v14Ev();
extern void _ZN7S2872C23v15Ev();
extern void _ZN7S2872C23v16Ev();
extern void _ZN7S2872C23v17Ev();
extern void _ZN7S2872C23v18Ev();
extern void _ZN7S2872C23v19Ev();
extern void _ZN7S2872C23v20Ev();
extern void _ZN7S2872C23v21Ev();
extern void _ZN7S2872C23v22Ev();
extern void _ZN7S2872C23v23Ev();
extern void _ZN7S2872C23v24Ev();
extern void _ZN7S2872C23v25Ev();
extern void _ZN7S2872C23v26Ev();
extern void _ZN7S2872C23v27Ev();
extern void _ZN7S2872C23v28Ev();
extern void _ZN7S2872C23v29Ev();
extern void _ZN7S2872C23v30Ev();
extern void _ZN7S2872C23v31Ev();
static  VTBL_ENTRY vtc_S2872C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2872C2[0]),
  (VTBL_ENTRY)&_ZN7S2872C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2872C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v26Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v27Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v28Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v29Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v30Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v31Ev,
};
extern VTBL_ENTRY _ZTI7S2872C2[];
extern  VTBL_ENTRY _ZTV7S2872C2[];
Class_Descriptor cd_S2872C2 = {  "S2872C2", // class name
  bases_S2872C2, 1,
  &(vtc_S2872C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2872C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2872C2),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2872C1  : S2872C2 {
  int s2872c1f0[2];
  virtual  ~S2872C1(); // _ZN7S2872C1D1Ev
  virtual void  v1(); // _ZN7S2872C12v1Ev
  virtual void  v2(); // _ZN7S2872C12v2Ev
  virtual void  v3(); // _ZN7S2872C12v3Ev
  virtual void  v4(); // _ZN7S2872C12v4Ev
  virtual void  v5(); // _ZN7S2872C12v5Ev
  virtual void  v6(); // _ZN7S2872C12v6Ev
  virtual void  v7(); // _ZN7S2872C12v7Ev
  virtual void  v8(); // _ZN7S2872C12v8Ev
  virtual void  v9(); // _ZN7S2872C12v9Ev
  virtual void  v10(); // _ZN7S2872C13v10Ev
  virtual void  v11(); // _ZN7S2872C13v11Ev
  virtual void  v12(); // _ZN7S2872C13v12Ev
  S2872C1(); // tgen
};
//SIG(1 S2872C1) C1{ BC2{ BC3{ m} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 FC4{ m Fp Fi FC3}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fi[2]}


 S2872C1 ::~S2872C1(){ note_dtor("S2872C1", this);}
void  S2872C1 ::v1(){vfunc_called(this, "_ZN7S2872C12v1Ev");}
void  S2872C1 ::v2(){vfunc_called(this, "_ZN7S2872C12v2Ev");}
void  S2872C1 ::v3(){vfunc_called(this, "_ZN7S2872C12v3Ev");}
void  S2872C1 ::v4(){vfunc_called(this, "_ZN7S2872C12v4Ev");}
void  S2872C1 ::v5(){vfunc_called(this, "_ZN7S2872C12v5Ev");}
void  S2872C1 ::v6(){vfunc_called(this, "_ZN7S2872C12v6Ev");}
void  S2872C1 ::v7(){vfunc_called(this, "_ZN7S2872C12v7Ev");}
void  S2872C1 ::v8(){vfunc_called(this, "_ZN7S2872C12v8Ev");}
void  S2872C1 ::v9(){vfunc_called(this, "_ZN7S2872C12v9Ev");}
void  S2872C1 ::v10(){vfunc_called(this, "_ZN7S2872C13v10Ev");}
void  S2872C1 ::v11(){vfunc_called(this, "_ZN7S2872C13v11Ev");}
void  S2872C1 ::v12(){vfunc_called(this, "_ZN7S2872C13v12Ev");}
S2872C1 ::S2872C1(){ note_ctor("S2872C1", this);} // tgen

static void Test_S2872C1()
{
  extern Class_Descriptor cd_S2872C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S2872C1, buf);
    S2872C1 *dp, &lv = *(dp=new (buf) S2872C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S2872C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2872C1)");
    check_base_class_offset(lv, (S19894C34*)(S2872C2*), 0, "S2872C1");
    check_base_class_offset(lv, (S2872C2*), 0, "S2872C1");
    check_field_offset(lv, s2872c1f0, ABISELECT(24,16), "S2872C1.s2872c1f0");
    test_class_info(&lv, &cd_S2872C1);
    dp->~S2872C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2872C1(Test_S2872C1, "S2872C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S2872C1C1Ev();
extern void _ZN7S2872C1D1Ev();
Name_Map name_map_S2872C1[] = {
  NSPAIR(_ZN7S2872C1C1Ev),
  NSPAIR(_ZN7S2872C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S2872C2;
extern VTBL_ENTRY _ZTI7S2872C2[];
extern  VTBL_ENTRY _ZTV7S2872C2[];
static Base_Class bases_S2872C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2872C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2872C1[];
extern void _ZN7S2872C1D1Ev();
extern void _ZN7S2872C1D0Ev();
extern void _ZN7S2872C23v13Ev();
extern void _ZN7S2872C23v14Ev();
extern void _ZN7S2872C23v15Ev();
extern void _ZN7S2872C23v16Ev();
extern void _ZN7S2872C23v17Ev();
extern void _ZN7S2872C23v18Ev();
extern void _ZN7S2872C23v19Ev();
extern void _ZN7S2872C23v20Ev();
extern void _ZN7S2872C23v21Ev();
extern void _ZN7S2872C23v22Ev();
extern void _ZN7S2872C23v23Ev();
extern void _ZN7S2872C23v24Ev();
extern void _ZN7S2872C23v25Ev();
extern void _ZN7S2872C23v26Ev();
extern void _ZN7S2872C23v27Ev();
extern void _ZN7S2872C23v28Ev();
extern void _ZN7S2872C23v29Ev();
extern void _ZN7S2872C23v30Ev();
extern void _ZN7S2872C23v31Ev();
extern void _ZN7S2872C12v1Ev();
extern void _ZN7S2872C12v2Ev();
extern void _ZN7S2872C12v3Ev();
extern void _ZN7S2872C12v4Ev();
extern void _ZN7S2872C12v5Ev();
extern void _ZN7S2872C12v6Ev();
extern void _ZN7S2872C12v7Ev();
extern void _ZN7S2872C12v8Ev();
extern void _ZN7S2872C12v9Ev();
extern void _ZN7S2872C13v10Ev();
extern void _ZN7S2872C13v11Ev();
extern void _ZN7S2872C13v12Ev();
static  VTBL_ENTRY vtc_S2872C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2872C1[0]),
  (VTBL_ENTRY)&_ZN7S2872C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2872C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v26Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v27Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v28Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v29Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v30Ev,
  (VTBL_ENTRY)&_ZN7S2872C23v31Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2872C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2872C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2872C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2872C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S2872C1[];
extern  VTBL_ENTRY _ZTV7S2872C1[];
Class_Descriptor cd_S2872C1 = {  "S2872C1", // class name
  bases_S2872C1, 2,
  &(vtc_S2872C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S2872C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2872C1),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  S6178C12_nt  {
  int s6178c12f0[4];
};
//SIG(-1 S6178C12_nt) C1{ Fi[4]}



//skip512 S6178C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6178C11_nt  {
  void *s6178c11f0;
  ::S6178C12_nt s6178c11f1;
  void  mf6178c11(); // _ZN11S6178C11_nt9mf6178c11Ev
};
//SIG(-1 S6178C11_nt) C1{ m Fp FC2{ Fi[4]}}


void  S6178C11_nt ::mf6178c11(){}

//skip512 S6178C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6178C1  : S19894C34 {
  ::S9526C11_nt s6178c1f0;
  int s6178c1f1[2];
  ::S2796C12_nt s6178c1f2;
  ::S3619C13_nt s6178c1f3;
  ::S6178C11_nt s6178c1f4;
  ::S2328C15_nt s6178c1f5;
  ::S3619C13_nt s6178c1f6;
  ::S2328C15_nt s6178c1f7;
  ::S3619C13_nt s6178c1f8;
  ::S6178C11_nt s6178c1f9;
};
//SIG(1 S6178C1) C1{ BC2{ m} FC3{ m Fp Fi FC2} Fi[2] FC4{ BC5{ m Fp Fi FC2 FC6{ m}}} FC7{ m FC8{ FL[4]}} FC9{ m Fp FC10{ Fi[4]}} FC11{ BC12{ m Fp Fi FC13{ m} FC13}} FC7 FC11 FC7 FC9}



static void Test_S6178C1()
{
  extern Class_Descriptor cd_S6178C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,49)];
    init_test(&cd_S6178C1, buf);
    S6178C1 &lv = *(new (buf) S6178C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,192), "sizeof(S6178C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6178C1)");
    check_base_class_offset(lv, (S19894C34*), 0, "S6178C1");
    check_field_offset(lv, s6178c1f0, 0, "S6178C1.s6178c1f0");
    check_field_offset(lv, s6178c1f1, ABISELECT(16,12), "S6178C1.s6178c1f1");
    check_field_offset(lv, s6178c1f2, ABISELECT(24,20), "S6178C1.s6178c1f2");
    check_field_offset(lv, s6178c1f3, ABISELECT(40,32), "S6178C1.s6178c1f3");
    check_field_offset(lv, s6178c1f4, ABISELECT(72,64), "S6178C1.s6178c1f4");
    check_field_offset(lv, s6178c1f5, ABISELECT(96,84), "S6178C1.s6178c1f5");
    check_field_offset(lv, s6178c1f6, ABISELECT(112,96), "S6178C1.s6178c1f6");
    check_field_offset(lv, s6178c1f7, ABISELECT(144,128), "S6178C1.s6178c1f7");
    check_field_offset(lv, s6178c1f8, ABISELECT(160,140), "S6178C1.s6178c1f8");
    check_field_offset(lv, s6178c1f9, ABISELECT(192,172), "S6178C1.s6178c1f9");
    test_class_info(&lv, &cd_S6178C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6178C1(Test_S6178C1, "S6178C1", ABISELECT(216,192));

#else // __cplusplus

extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S6178C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6178C1 = {  "S6178C1", // class name
  bases_S6178C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(216,192), // 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  S16990C12_nt  {
  int s16990c12f0;
};
//SIG(1 S16990C12_nt) C1{ Fi}



//skip512 S16990C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S16990C2  {
  ::S3619C32 s16990c2f0;
  ::S3619C33 s16990c2f1;
  ::S3619C34 s16990c2f2;
  ::S3619C35 s16990c2f3;
  ::S3619C36_nt s16990c2f4;
  ::S3619C37 s16990c2f5;
  ::S3619C38 s16990c2f6;
  ::S3619C41 s16990c2f7;
  ::S3619C39_nt s16990c2f8;
  ::S16990C12_nt s16990c2f9;
  ::S3619C43 s16990c2f10;
  int s16990c2f11[32];
};
//SIG(1 S16990C2) U1{ FC2{ Fi FL Fi Fc FL Fc} FC3{ Fc Fi} FC4{ Fc FL Fi Fi} FC5{ FL} FC6{ Fi Fc} FC7{ FL Fc Fc Fc} FC8{ FL Fc Fc Fc Fc} FC9{ Fi} FC10{ Fi} FC11{ Fi} FC12{ Fc Fc} Fi[32]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S16990C1  {
  int s16990c1f0;
  ::S16990C2 s16990c1f1;
  void  mf16990c1(); // _ZN8S16990C19mf16990c1Ev
};
//SIG(1 S16990C1) C1{ m Fi FU2{ FC3{ Fi FL Fi Fc FL Fc} FC4{ Fc Fi} FC5{ Fc FL Fi Fi} FC6{ FL} FC7{ Fi Fc} FC8{ FL Fc Fc Fc} FC9{ FL Fc Fc Fc Fc} FC10{ Fi} FC11{ Fi} FC12{ Fi} FC13{ Fc Fc} Fi[32]}}


void  S16990C1 ::mf16990c1(){}

static void Test_S16990C1()
{
  {
    init_simple_test("S16990C1");
    S16990C1 lv;
    check2(sizeof(lv), ABISELECT(136,132), "sizeof(S16990C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16990C1)");
    check_field_offset(lv, s16990c1f0, 0, "S16990C1.s16990c1f0");
    check_field_offset(lv, s16990c1f1, ABISELECT(8,4), "S16990C1.s16990c1f1");
  }
}
static Arrange_To_Call_Me vS16990C1(Test_S16990C1, "S16990C1", ABISELECT(136,132));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6479C2  {
  int s6479c2f0[2];
  virtual  ~S6479C2(); // _ZN7S6479C2D1Ev
  virtual void  v14(); // _ZN7S6479C23v14Ev
  virtual void  v15(); // _ZN7S6479C23v15Ev
  virtual void  v16(); // _ZN7S6479C23v16Ev
  virtual void  v17(); // _ZN7S6479C23v17Ev
  virtual void  v18(); // _ZN7S6479C23v18Ev
  virtual void  v19(); // _ZN7S6479C23v19Ev
  virtual void  v20(); // _ZN7S6479C23v20Ev
  virtual void  v21(); // _ZN7S6479C23v21Ev
  virtual void  v22(); // _ZN7S6479C23v22Ev
  virtual void  v23(); // _ZN7S6479C23v23Ev
  virtual void  v24(); // _ZN7S6479C23v24Ev
  virtual void  v25(); // _ZN7S6479C23v25Ev
  virtual void  v26(); // _ZN7S6479C23v26Ev
  virtual void  v27(); // _ZN7S6479C23v27Ev
  S6479C2(); // tgen
};
//SIG(-1 S6479C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6479C2 ::~S6479C2(){ note_dtor("S6479C2", this);}
void  S6479C2 ::v14(){vfunc_called(this, "_ZN7S6479C23v14Ev");}
void  S6479C2 ::v15(){vfunc_called(this, "_ZN7S6479C23v15Ev");}
void  S6479C2 ::v16(){vfunc_called(this, "_ZN7S6479C23v16Ev");}
void  S6479C2 ::v17(){vfunc_called(this, "_ZN7S6479C23v17Ev");}
void  S6479C2 ::v18(){vfunc_called(this, "_ZN7S6479C23v18Ev");}
void  S6479C2 ::v19(){vfunc_called(this, "_ZN7S6479C23v19Ev");}
void  S6479C2 ::v20(){vfunc_called(this, "_ZN7S6479C23v20Ev");}
void  S6479C2 ::v21(){vfunc_called(this, "_ZN7S6479C23v21Ev");}
void  S6479C2 ::v22(){vfunc_called(this, "_ZN7S6479C23v22Ev");}
void  S6479C2 ::v23(){vfunc_called(this, "_ZN7S6479C23v23Ev");}
void  S6479C2 ::v24(){vfunc_called(this, "_ZN7S6479C23v24Ev");}
void  S6479C2 ::v25(){vfunc_called(this, "_ZN7S6479C23v25Ev");}
void  S6479C2 ::v26(){vfunc_called(this, "_ZN7S6479C23v26Ev");}
void  S6479C2 ::v27(){vfunc_called(this, "_ZN7S6479C23v27Ev");}
S6479C2 ::S6479C2(){ note_ctor("S6479C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6479C2C1Ev();
extern void _ZN7S6479C2D1Ev();
Name_Map name_map_S6479C2[] = {
  NSPAIR(_ZN7S6479C2C1Ev),
  NSPAIR(_ZN7S6479C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6479C2[];
extern void _ZN7S6479C2D1Ev();
extern void _ZN7S6479C2D0Ev();
extern void _ZN7S6479C23v14Ev();
extern void _ZN7S6479C23v15Ev();
extern void _ZN7S6479C23v16Ev();
extern void _ZN7S6479C23v17Ev();
extern void _ZN7S6479C23v18Ev();
extern void _ZN7S6479C23v19Ev();
extern void _ZN7S6479C23v20Ev();
extern void _ZN7S6479C23v21Ev();
extern void _ZN7S6479C23v22Ev();
extern void _ZN7S6479C23v23Ev();
extern void _ZN7S6479C23v24Ev();
extern void _ZN7S6479C23v25Ev();
extern void _ZN7S6479C23v26Ev();
extern void _ZN7S6479C23v27Ev();
static  VTBL_ENTRY vtc_S6479C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6479C2[0]),
  (VTBL_ENTRY)&_ZN7S6479C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6479C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6479C2[];
extern  VTBL_ENTRY _ZTV7S6479C2[];
Class_Descriptor cd_S6479C2 = {  "S6479C2", // class name
  0,0,//no base classes
  &(vtc_S6479C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6479C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6479C2),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  S6479C1  : S6479C2 {
  int s6479c1f0;
  void *s6479c1f1[2];
  int s6479c1f2;
  void *s6479c1f3[5];
  ::S3619C13_nt s6479c1f4;
  virtual  ~S6479C1(); // _ZN7S6479C1D1Ev
  virtual void  v1(); // _ZN7S6479C12v1Ev
  virtual void  v2(); // _ZN7S6479C12v2Ev
  virtual void  v3(); // _ZN7S6479C12v3Ev
  virtual void  v4(); // _ZN7S6479C12v4Ev
  virtual void  v5(); // _ZN7S6479C12v5Ev
  virtual void  v6(); // _ZN7S6479C12v6Ev
  virtual void  v7(); // _ZN7S6479C12v7Ev
  virtual void  v8(); // _ZN7S6479C12v8Ev
  virtual void  v9(); // _ZN7S6479C12v9Ev
  virtual void  v10(); // _ZN7S6479C13v10Ev
  virtual void  v11(); // _ZN7S6479C13v11Ev
  virtual void  v12(); // _ZN7S6479C13v12Ev
  virtual void  v13(); // _ZN7S6479C13v13Ev
  S6479C1(); // tgen
};
//SIG(1 S6479C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi Fp[2] Fi Fp[5] FC3{ m FC4{ FL[4]}}}


 S6479C1 ::~S6479C1(){ note_dtor("S6479C1", this);}
void  S6479C1 ::v1(){vfunc_called(this, "_ZN7S6479C12v1Ev");}
void  S6479C1 ::v2(){vfunc_called(this, "_ZN7S6479C12v2Ev");}
void  S6479C1 ::v3(){vfunc_called(this, "_ZN7S6479C12v3Ev");}
void  S6479C1 ::v4(){vfunc_called(this, "_ZN7S6479C12v4Ev");}
void  S6479C1 ::v5(){vfunc_called(this, "_ZN7S6479C12v5Ev");}
void  S6479C1 ::v6(){vfunc_called(this, "_ZN7S6479C12v6Ev");}
void  S6479C1 ::v7(){vfunc_called(this, "_ZN7S6479C12v7Ev");}
void  S6479C1 ::v8(){vfunc_called(this, "_ZN7S6479C12v8Ev");}
void  S6479C1 ::v9(){vfunc_called(this, "_ZN7S6479C12v9Ev");}
void  S6479C1 ::v10(){vfunc_called(this, "_ZN7S6479C13v10Ev");}
void  S6479C1 ::v11(){vfunc_called(this, "_ZN7S6479C13v11Ev");}
void  S6479C1 ::v12(){vfunc_called(this, "_ZN7S6479C13v12Ev");}
void  S6479C1 ::v13(){vfunc_called(this, "_ZN7S6479C13v13Ev");}
S6479C1 ::S6479C1(){ note_ctor("S6479C1", this);} // tgen

static void Test_S6479C1()
{
  extern Class_Descriptor cd_S6479C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S6479C1, buf);
    S6479C1 *dp, &lv = *(dp=new (buf) S6479C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S6479C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6479C1)");
    check_base_class_offset(lv, (S6479C2*), 0, "S6479C1");
    check_field_offset(lv, s6479c1f0, ABISELECT(16,12), "S6479C1.s6479c1f0");
    check_field_offset(lv, s6479c1f1, ABISELECT(24,16), "S6479C1.s6479c1f1");
    check_field_offset(lv, s6479c1f2, ABISELECT(40,24), "S6479C1.s6479c1f2");
    check_field_offset(lv, s6479c1f3, ABISELECT(48,28), "S6479C1.s6479c1f3");
    check_field_offset(lv, s6479c1f4, ABISELECT(88,48), "S6479C1.s6479c1f4");
    test_class_info(&lv, &cd_S6479C1);
    dp->~S6479C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6479C1(Test_S6479C1, "S6479C1", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN7S6479C1C1Ev();
extern void _ZN7S6479C1D1Ev();
Name_Map name_map_S6479C1[] = {
  NSPAIR(_ZN7S6479C1C1Ev),
  NSPAIR(_ZN7S6479C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6479C2;
extern VTBL_ENTRY _ZTI7S6479C2[];
extern  VTBL_ENTRY _ZTV7S6479C2[];
static Base_Class bases_S6479C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6479C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6479C1[];
extern void _ZN7S6479C1D1Ev();
extern void _ZN7S6479C1D0Ev();
extern void _ZN7S6479C23v14Ev();
extern void _ZN7S6479C23v15Ev();
extern void _ZN7S6479C23v16Ev();
extern void _ZN7S6479C23v17Ev();
extern void _ZN7S6479C23v18Ev();
extern void _ZN7S6479C23v19Ev();
extern void _ZN7S6479C23v20Ev();
extern void _ZN7S6479C23v21Ev();
extern void _ZN7S6479C23v22Ev();
extern void _ZN7S6479C23v23Ev();
extern void _ZN7S6479C23v24Ev();
extern void _ZN7S6479C23v25Ev();
extern void _ZN7S6479C23v26Ev();
extern void _ZN7S6479C23v27Ev();
extern void _ZN7S6479C12v1Ev();
extern void _ZN7S6479C12v2Ev();
extern void _ZN7S6479C12v3Ev();
extern void _ZN7S6479C12v4Ev();
extern void _ZN7S6479C12v5Ev();
extern void _ZN7S6479C12v6Ev();
extern void _ZN7S6479C12v7Ev();
extern void _ZN7S6479C12v8Ev();
extern void _ZN7S6479C12v9Ev();
extern void _ZN7S6479C13v10Ev();
extern void _ZN7S6479C13v11Ev();
extern void _ZN7S6479C13v12Ev();
extern void _ZN7S6479C13v13Ev();
static  VTBL_ENTRY vtc_S6479C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6479C1[0]),
  (VTBL_ENTRY)&_ZN7S6479C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6479C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6479C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6479C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6479C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6479C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6479C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6479C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6479C1[];
extern  VTBL_ENTRY _ZTV7S6479C1[];
Class_Descriptor cd_S6479C1 = {  "S6479C1", // class name
  bases_S6479C1, 1,
  &(vtc_S6479C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI7S6479C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6479C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6478C2  {
  int s6478c2f0[2];
  virtual  ~S6478C2(); // _ZN7S6478C2D1Ev
  virtual void  v14(); // _ZN7S6478C23v14Ev
  virtual void  v15(); // _ZN7S6478C23v15Ev
  virtual void  v16(); // _ZN7S6478C23v16Ev
  virtual void  v17(); // _ZN7S6478C23v17Ev
  virtual void  v18(); // _ZN7S6478C23v18Ev
  virtual void  v19(); // _ZN7S6478C23v19Ev
  virtual void  v20(); // _ZN7S6478C23v20Ev
  virtual void  v21(); // _ZN7S6478C23v21Ev
  virtual void  v22(); // _ZN7S6478C23v22Ev
  virtual void  v23(); // _ZN7S6478C23v23Ev
  virtual void  v24(); // _ZN7S6478C23v24Ev
  virtual void  v25(); // _ZN7S6478C23v25Ev
  virtual void  v26(); // _ZN7S6478C23v26Ev
  virtual void  v27(); // _ZN7S6478C23v27Ev
  S6478C2(); // tgen
};
//SIG(-1 S6478C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6478C2 ::~S6478C2(){ note_dtor("S6478C2", this);}
void  S6478C2 ::v14(){vfunc_called(this, "_ZN7S6478C23v14Ev");}
void  S6478C2 ::v15(){vfunc_called(this, "_ZN7S6478C23v15Ev");}
void  S6478C2 ::v16(){vfunc_called(this, "_ZN7S6478C23v16Ev");}
void  S6478C2 ::v17(){vfunc_called(this, "_ZN7S6478C23v17Ev");}
void  S6478C2 ::v18(){vfunc_called(this, "_ZN7S6478C23v18Ev");}
void  S6478C2 ::v19(){vfunc_called(this, "_ZN7S6478C23v19Ev");}
void  S6478C2 ::v20(){vfunc_called(this, "_ZN7S6478C23v20Ev");}
void  S6478C2 ::v21(){vfunc_called(this, "_ZN7S6478C23v21Ev");}
void  S6478C2 ::v22(){vfunc_called(this, "_ZN7S6478C23v22Ev");}
void  S6478C2 ::v23(){vfunc_called(this, "_ZN7S6478C23v23Ev");}
void  S6478C2 ::v24(){vfunc_called(this, "_ZN7S6478C23v24Ev");}
void  S6478C2 ::v25(){vfunc_called(this, "_ZN7S6478C23v25Ev");}
void  S6478C2 ::v26(){vfunc_called(this, "_ZN7S6478C23v26Ev");}
void  S6478C2 ::v27(){vfunc_called(this, "_ZN7S6478C23v27Ev");}
S6478C2 ::S6478C2(){ note_ctor("S6478C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6478C2C1Ev();
extern void _ZN7S6478C2D1Ev();
Name_Map name_map_S6478C2[] = {
  NSPAIR(_ZN7S6478C2C1Ev),
  NSPAIR(_ZN7S6478C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6478C2[];
extern void _ZN7S6478C2D1Ev();
extern void _ZN7S6478C2D0Ev();
extern void _ZN7S6478C23v14Ev();
extern void _ZN7S6478C23v15Ev();
extern void _ZN7S6478C23v16Ev();
extern void _ZN7S6478C23v17Ev();
extern void _ZN7S6478C23v18Ev();
extern void _ZN7S6478C23v19Ev();
extern void _ZN7S6478C23v20Ev();
extern void _ZN7S6478C23v21Ev();
extern void _ZN7S6478C23v22Ev();
extern void _ZN7S6478C23v23Ev();
extern void _ZN7S6478C23v24Ev();
extern void _ZN7S6478C23v25Ev();
extern void _ZN7S6478C23v26Ev();
extern void _ZN7S6478C23v27Ev();
static  VTBL_ENTRY vtc_S6478C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6478C2[0]),
  (VTBL_ENTRY)&_ZN7S6478C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6478C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6478C2[];
extern  VTBL_ENTRY _ZTV7S6478C2[];
Class_Descriptor cd_S6478C2 = {  "S6478C2", // class name
  0,0,//no base classes
  &(vtc_S6478C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6478C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6478C2),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  S6478C1  : S6478C2 {
  int s6478c1f0;
  void *s6478c1f1[2];
  int s6478c1f2;
  void *s6478c1f3[5];
  ::S3618C13_nt s6478c1f4;
  virtual  ~S6478C1(); // _ZN7S6478C1D1Ev
  virtual void  v1(); // _ZN7S6478C12v1Ev
  virtual void  v2(); // _ZN7S6478C12v2Ev
  virtual void  v3(); // _ZN7S6478C12v3Ev
  virtual void  v4(); // _ZN7S6478C12v4Ev
  virtual void  v5(); // _ZN7S6478C12v5Ev
  virtual void  v6(); // _ZN7S6478C12v6Ev
  virtual void  v7(); // _ZN7S6478C12v7Ev
  virtual void  v8(); // _ZN7S6478C12v8Ev
  virtual void  v9(); // _ZN7S6478C12v9Ev
  virtual void  v10(); // _ZN7S6478C13v10Ev
  virtual void  v11(); // _ZN7S6478C13v11Ev
  virtual void  v12(); // _ZN7S6478C13v12Ev
  virtual void  v13(); // _ZN7S6478C13v13Ev
  S6478C1(); // tgen
};
//SIG(1 S6478C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi Fp[2] Fi Fp[5] FC3{ m FC4{ Fl[4]}}}


 S6478C1 ::~S6478C1(){ note_dtor("S6478C1", this);}
void  S6478C1 ::v1(){vfunc_called(this, "_ZN7S6478C12v1Ev");}
void  S6478C1 ::v2(){vfunc_called(this, "_ZN7S6478C12v2Ev");}
void  S6478C1 ::v3(){vfunc_called(this, "_ZN7S6478C12v3Ev");}
void  S6478C1 ::v4(){vfunc_called(this, "_ZN7S6478C12v4Ev");}
void  S6478C1 ::v5(){vfunc_called(this, "_ZN7S6478C12v5Ev");}
void  S6478C1 ::v6(){vfunc_called(this, "_ZN7S6478C12v6Ev");}
void  S6478C1 ::v7(){vfunc_called(this, "_ZN7S6478C12v7Ev");}
void  S6478C1 ::v8(){vfunc_called(this, "_ZN7S6478C12v8Ev");}
void  S6478C1 ::v9(){vfunc_called(this, "_ZN7S6478C12v9Ev");}
void  S6478C1 ::v10(){vfunc_called(this, "_ZN7S6478C13v10Ev");}
void  S6478C1 ::v11(){vfunc_called(this, "_ZN7S6478C13v11Ev");}
void  S6478C1 ::v12(){vfunc_called(this, "_ZN7S6478C13v12Ev");}
void  S6478C1 ::v13(){vfunc_called(this, "_ZN7S6478C13v13Ev");}
S6478C1 ::S6478C1(){ note_ctor("S6478C1", this);} // tgen

static void Test_S6478C1()
{
  extern Class_Descriptor cd_S6478C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S6478C1, buf);
    S6478C1 *dp, &lv = *(dp=new (buf) S6478C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S6478C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6478C1)");
    check_base_class_offset(lv, (S6478C2*), 0, "S6478C1");
    check_field_offset(lv, s6478c1f0, ABISELECT(16,12), "S6478C1.s6478c1f0");
    check_field_offset(lv, s6478c1f1, ABISELECT(24,16), "S6478C1.s6478c1f1");
    check_field_offset(lv, s6478c1f2, ABISELECT(40,24), "S6478C1.s6478c1f2");
    check_field_offset(lv, s6478c1f3, ABISELECT(48,28), "S6478C1.s6478c1f3");
    check_field_offset(lv, s6478c1f4, ABISELECT(88,48), "S6478C1.s6478c1f4");
    test_class_info(&lv, &cd_S6478C1);
    dp->~S6478C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6478C1(Test_S6478C1, "S6478C1", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN7S6478C1C1Ev();
extern void _ZN7S6478C1D1Ev();
Name_Map name_map_S6478C1[] = {
  NSPAIR(_ZN7S6478C1C1Ev),
  NSPAIR(_ZN7S6478C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6478C2;
extern VTBL_ENTRY _ZTI7S6478C2[];
extern  VTBL_ENTRY _ZTV7S6478C2[];
static Base_Class bases_S6478C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6478C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6478C1[];
extern void _ZN7S6478C1D1Ev();
extern void _ZN7S6478C1D0Ev();
extern void _ZN7S6478C23v14Ev();
extern void _ZN7S6478C23v15Ev();
extern void _ZN7S6478C23v16Ev();
extern void _ZN7S6478C23v17Ev();
extern void _ZN7S6478C23v18Ev();
extern void _ZN7S6478C23v19Ev();
extern void _ZN7S6478C23v20Ev();
extern void _ZN7S6478C23v21Ev();
extern void _ZN7S6478C23v22Ev();
extern void _ZN7S6478C23v23Ev();
extern void _ZN7S6478C23v24Ev();
extern void _ZN7S6478C23v25Ev();
extern void _ZN7S6478C23v26Ev();
extern void _ZN7S6478C23v27Ev();
extern void _ZN7S6478C12v1Ev();
extern void _ZN7S6478C12v2Ev();
extern void _ZN7S6478C12v3Ev();
extern void _ZN7S6478C12v4Ev();
extern void _ZN7S6478C12v5Ev();
extern void _ZN7S6478C12v6Ev();
extern void _ZN7S6478C12v7Ev();
extern void _ZN7S6478C12v8Ev();
extern void _ZN7S6478C12v9Ev();
extern void _ZN7S6478C13v10Ev();
extern void _ZN7S6478C13v11Ev();
extern void _ZN7S6478C13v12Ev();
extern void _ZN7S6478C13v13Ev();
static  VTBL_ENTRY vtc_S6478C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6478C1[0]),
  (VTBL_ENTRY)&_ZN7S6478C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6478C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6478C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6478C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6478C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6478C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6478C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6478C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6478C1[];
extern  VTBL_ENTRY _ZTV7S6478C1[];
Class_Descriptor cd_S6478C1 = {  "S6478C1", // class name
  bases_S6478C1, 1,
  &(vtc_S6478C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI7S6478C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6478C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20236C2  {
  int s20236c2f0;
  virtual void  v5(); // _ZN8S20236C22v5Ev
  virtual void  v6(); // _ZN8S20236C22v6Ev
  virtual void  v7(); // _ZN8S20236C22v7Ev
  ~S20236C2(); // tgen
  S20236C2(); // tgen
};
//SIG(-1 S20236C2) C1{ v1 v2 v3 Fi}


void  S20236C2 ::v5(){vfunc_called(this, "_ZN8S20236C22v5Ev");}
void  S20236C2 ::v6(){vfunc_called(this, "_ZN8S20236C22v6Ev");}
void  S20236C2 ::v7(){vfunc_called(this, "_ZN8S20236C22v7Ev");}
S20236C2 ::~S20236C2(){ note_dtor("S20236C2", this);} // tgen
S20236C2 ::S20236C2(){ note_ctor("S20236C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20236C2C1Ev();
extern void _ZN8S20236C2D1Ev();
Name_Map name_map_S20236C2[] = {
  NSPAIR(_ZN8S20236C2C1Ev),
  NSPAIR(_ZN8S20236C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20236C2[];
extern void _ZN8S20236C22v5Ev();
extern void _ZN8S20236C22v6Ev();
extern void _ZN8S20236C22v7Ev();
static  VTBL_ENTRY vtc_S20236C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C2[0]),
  (VTBL_ENTRY)&_ZN8S20236C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20236C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20236C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S20236C2[];
extern  VTBL_ENTRY _ZTV8S20236C2[];
Class_Descriptor cd_S20236C2 = {  "S20236C2", // class name
  0,0,//no base classes
  &(vtc_S20236C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20236C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20236C2),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  S20236C5  {
  void *s20236c5f0;
  virtual void  v8(); // _ZN8S20236C52v8Ev
  virtual void  v9(); // _ZN8S20236C52v9Ev
  ~S20236C5(); // tgen
  S20236C5(); // tgen
};
//SIG(-1 S20236C5) C1{ v1 v2 Fp}


void  S20236C5 ::v8(){vfunc_called(this, "_ZN8S20236C52v8Ev");}
void  S20236C5 ::v9(){vfunc_called(this, "_ZN8S20236C52v9Ev");}
S20236C5 ::~S20236C5(){ note_dtor("S20236C5", this);} // tgen
S20236C5 ::S20236C5(){ note_ctor("S20236C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20236C5C1Ev();
extern void _ZN8S20236C5D1Ev();
Name_Map name_map_S20236C5[] = {
  NSPAIR(_ZN8S20236C5C1Ev),
  NSPAIR(_ZN8S20236C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20236C5[];
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY vtc_S20236C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C5[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
Class_Descriptor cd_S20236C5 = {  "S20236C5", // class name
  0,0,//no base classes
  &(vtc_S20236C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20236C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20236C5),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  S20236C6  : virtual S20236C5 {
  virtual void  v10(); // _ZN8S20236C63v10Ev
  virtual void  v11(); // _ZN8S20236C63v11Ev
  virtual void  v12(); // _ZN8S20236C63v12Ev
  virtual void  v13(); // _ZN8S20236C63v13Ev
  virtual void  v14(); // _ZN8S20236C63v14Ev
  virtual void  v15(); // _ZN8S20236C63v15Ev
  ~S20236C6(); // tgen
  S20236C6(); // tgen
};
//SIG(-1 S20236C6) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S20236C6 ::v10(){vfunc_called(this, "_ZN8S20236C63v10Ev");}
void  S20236C6 ::v11(){vfunc_called(this, "_ZN8S20236C63v11Ev");}
void  S20236C6 ::v12(){vfunc_called(this, "_ZN8S20236C63v12Ev");}
void  S20236C6 ::v13(){vfunc_called(this, "_ZN8S20236C63v13Ev");}
void  S20236C6 ::v14(){vfunc_called(this, "_ZN8S20236C63v14Ev");}
void  S20236C6 ::v15(){vfunc_called(this, "_ZN8S20236C63v15Ev");}
S20236C6 ::~S20236C6(){ note_dtor("S20236C6", this);} // tgen
S20236C6 ::S20236C6(){ note_ctor("S20236C6", this);} // tgen

static void Test_S20236C6()
{
  extern Class_Descriptor cd_S20236C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20236C6, buf);
    S20236C6 *dp, &lv = *(dp=new (buf) S20236C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20236C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20236C6)");
    check_base_class_offset(lv, (S20236C5*), ABISELECT(8,4), "S20236C6");
    test_class_info(&lv, &cd_S20236C6);
    dp->~S20236C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20236C6(Test_S20236C6, "S20236C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20236C6C1Ev();
extern void _ZN8S20236C6D1Ev();
Name_Map name_map_S20236C6[] = {
  NSPAIR(_ZN8S20236C6C1Ev),
  NSPAIR(_ZN8S20236C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
static Base_Class bases_S20236C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20236C5,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20236C6[];
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY vtc_S20236C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20236C6[];
static  VTT_ENTRY vtt_S20236C6[] = {
  {&(_ZTV8S20236C6[3]),  3,15},
  {&(_ZTV8S20236C6[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S20236C6[];
extern  VTBL_ENTRY _ZTV8S20236C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C6[];
Class_Descriptor cd_S20236C6 = {  "S20236C6", // class name
  bases_S20236C6, 1,
  &(vtc_S20236C6[0]), // expected_vtbl_contents
  &(vtt_S20236C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20236C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20236C6),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20236C6),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  S20236C4  : S20236C5 , virtual S20236C6 {
  long double s20236c4f0;
  char s20236c4f1:8;
  void *s20236c4f2;
  virtual void  v16(); // _ZN8S20236C43v16Ev
  virtual void  v17(); // _ZN8S20236C43v17Ev
  virtual void  v18(); // _ZN8S20236C43v18Ev
  virtual void  v19(); // _ZN8S20236C43v19Ev
  virtual void  v20(); // _ZN8S20236C43v20Ev
  ~S20236C4(); // tgen
  S20236C4(); // tgen
};
//SIG(-1 S20236C4) C1{ BC2{ v6 v7 Fp} VBC3{ VBC2 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 FD Fc:8 Fp}


void  S20236C4 ::v16(){vfunc_called(this, "_ZN8S20236C43v16Ev");}
void  S20236C4 ::v17(){vfunc_called(this, "_ZN8S20236C43v17Ev");}
void  S20236C4 ::v18(){vfunc_called(this, "_ZN8S20236C43v18Ev");}
void  S20236C4 ::v19(){vfunc_called(this, "_ZN8S20236C43v19Ev");}
void  S20236C4 ::v20(){vfunc_called(this, "_ZN8S20236C43v20Ev");}
S20236C4 ::~S20236C4(){ note_dtor("S20236C4", this);} // tgen
S20236C4 ::S20236C4(){ note_ctor("S20236C4", this);} // tgen

static void Test_S20236C4()
{
  extern Class_Descriptor cd_S20236C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20236C4, buf);
    S20236C4 *dp, &lv = *(dp=new (buf) S20236C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20236C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20236C4)");
    /*is_ambiguous_... S20236C4::S20236C5 */ AMB_check_base_class_offset(lv, (S20236C5*), 0, "S20236C4");
    check_base_class_offset(lv, (S20236C5*)(S20236C6*), ABISELECT(56,32), "S20236C4");
    check_base_class_offset(lv, (S20236C6*), ABISELECT(48,28), "S20236C4");
    check_field_offset(lv, s20236c4f0, ABISELECT(16,8), "S20236C4.s20236c4f0");
    set_bf_and_test(lv, s20236c4f1, ABISELECT(32,20), 0, 8, 1, "S20236C4");
    set_bf_and_test(lv, s20236c4f1, ABISELECT(32,20), 0, 8, hide_sll(1LL<<7), "S20236C4");
    check_field_offset(lv, s20236c4f2, ABISELECT(40,24), "S20236C4.s20236c4f2");
    test_class_info(&lv, &cd_S20236C4);
    dp->~S20236C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20236C4(Test_S20236C4, "S20236C4", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20236C4C1Ev();
extern void _ZN8S20236C4D1Ev();
Name_Map name_map_S20236C4[] = {
  NSPAIR(_ZN8S20236C4C1Ev),
  NSPAIR(_ZN8S20236C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
extern Class_Descriptor cd_S20236C6;
extern VTBL_ENTRY _ZTI8S20236C6[];
extern  VTBL_ENTRY _ZTV8S20236C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C6[];
static Base_Class bases_S20236C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20236C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20236C5,    ABISELECT(56,32), //bcp->offset
    26, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20236C6,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20236C4[];
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
extern void _ZN8S20236C43v16Ev();
extern void _ZN8S20236C43v17Ev();
extern void _ZN8S20236C43v18Ev();
extern void _ZN8S20236C43v19Ev();
extern void _ZN8S20236C43v20Ev();
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY vtc_S20236C4[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20236C4[];
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__8S20236C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__8S20236C6__8S20236C4[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
static  VTT_ENTRY vtt_S20236C4[] = {
  {&(_ZTV8S20236C4[4]),  4,32},
  {&(_ZTV8S20236C4[20]),  20,32},
  {&(_ZTV8S20236C4[30]),  30,32},
  {&(_tg__ZTV8S20236C6__8S20236C4[3]),  3,9},
  {&(_tg__ZTV8S20236C5__8S20236C6__8S20236C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20236C4[];
extern  VTBL_ENTRY _ZTV8S20236C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C4[];
Class_Descriptor cd_S20236C4 = {  "S20236C4", // class name
  bases_S20236C4, 3,
  &(vtc_S20236C4[0]), // expected_vtbl_contents
  &(vtt_S20236C4[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20236C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20236C4),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20236C4),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  S20236C3  : virtual S20236C4 , S20236C6 {
  ::S20236C2 s20236c3f0;
  void *s20236c3f1;
  virtual void  v21(); // _ZN8S20236C33v21Ev
  virtual void  v22(); // _ZN8S20236C33v22Ev
  virtual void  v23(); // _ZN8S20236C33v23Ev
  virtual void  v24(); // _ZN8S20236C33v24Ev
  virtual void  v25(); // _ZN8S20236C33v25Ev
  virtual void  v26(); // _ZN8S20236C33v26Ev
  ~S20236C3(); // tgen
  S20236C3(); // tgen
};
//SIG(-1 S20236C3) C1{ VBC2{ BC3{ v7 v8 Fp} VBC4{ VBC3 v9 v10 v11 v12 v13 v14} v15 v16 v17 v18 v19 FD Fc:8 Fp} BC4 v1 v2 v3 v4 v5 v6 FC5{ v20 v21 v22 Fi} Fp}


void  S20236C3 ::v21(){vfunc_called(this, "_ZN8S20236C33v21Ev");}
void  S20236C3 ::v22(){vfunc_called(this, "_ZN8S20236C33v22Ev");}
void  S20236C3 ::v23(){vfunc_called(this, "_ZN8S20236C33v23Ev");}
void  S20236C3 ::v24(){vfunc_called(this, "_ZN8S20236C33v24Ev");}
void  S20236C3 ::v25(){vfunc_called(this, "_ZN8S20236C33v25Ev");}
void  S20236C3 ::v26(){vfunc_called(this, "_ZN8S20236C33v26Ev");}
S20236C3 ::~S20236C3(){ note_dtor("S20236C3", this);} // tgen
S20236C3 ::S20236C3(){ note_ctor("S20236C3", this);} // tgen

static void Test_S20236C3()
{
  extern Class_Descriptor cd_S20236C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S20236C3, buf);
    S20236C3 *dp, &lv = *(dp=new (buf) S20236C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S20236C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20236C3)");
    /*is_ambiguous_... S20236C4::S20236C5 */ AMB_check_base_class_offset(lv, (S20236C5*)(S20236C4*), ABISELECT(32,16), "S20236C3");
    /*is_ambiguous_... S20236C3::S20236C6 */ AMB_check_base_class_offset(lv, (S20236C5*)(S20236C6*), ABISELECT(88,48), "S20236C3");
    /*is_ambiguous_... S20236C3::S20236C6 */ AMB_check_base_class_offset(lv, (S20236C5*)(S20236C6*), ABISELECT(88,48), "S20236C3");
    check_base_class_offset(lv, (S20236C6*)(S20236C4*), ABISELECT(80,44), "S20236C3");
    check_base_class_offset(lv, (S20236C4*), ABISELECT(32,16), "S20236C3");
    /*is_ambiguous_... S20236C3::S20236C6 */ AMB_check_base_class_offset(lv, (S20236C6*), 0, "S20236C3");
    check_field_offset(lv, s20236c3f0, ABISELECT(8,4), "S20236C3.s20236c3f0");
    check_field_offset(lv, s20236c3f1, ABISELECT(24,12), "S20236C3.s20236c3f1");
    test_class_info(&lv, &cd_S20236C3);
    dp->~S20236C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20236C3(Test_S20236C3, "S20236C3", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S20236C3C1Ev();
extern void _ZN8S20236C3D1Ev();
Name_Map name_map_S20236C3[] = {
  NSPAIR(_ZN8S20236C3C1Ev),
  NSPAIR(_ZN8S20236C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
extern Class_Descriptor cd_S20236C6;
extern VTBL_ENTRY _ZTI8S20236C6[];
extern  VTBL_ENTRY _ZTV8S20236C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C6[];
extern Class_Descriptor cd_S20236C4;
extern VTBL_ENTRY _ZTI8S20236C4[];
extern  VTBL_ENTRY _ZTV8S20236C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C4[];
extern Class_Descriptor cd_S20236C6;
extern VTBL_ENTRY _ZTI8S20236C6[];
extern  VTBL_ENTRY _ZTV8S20236C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C6[];
static Base_Class bases_S20236C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20236C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20236C5,    ABISELECT(88,48), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20236C6,    ABISELECT(80,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20236C4,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20236C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20236C3[];
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C33v21Ev();
extern void _ZN8S20236C33v22Ev();
extern void _ZN8S20236C33v23Ev();
extern void _ZN8S20236C33v24Ev();
extern void _ZN8S20236C33v25Ev();
extern void _ZN8S20236C33v26Ev();
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
extern void _ZN8S20236C43v16Ev();
extern void _ZN8S20236C43v17Ev();
extern void _ZN8S20236C43v18Ev();
extern void _ZN8S20236C43v19Ev();
extern void _ZN8S20236C43v20Ev();
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY vtc_S20236C3[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v22Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v23Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v24Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v26Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20236C3[];
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__A__8S20236C3[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__8S20236C6__A__8S20236C3[] = {
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
extern void _ZN8S20236C43v16Ev();
extern void _ZN8S20236C43v17Ev();
extern void _ZN8S20236C43v18Ev();
extern void _ZN8S20236C43v19Ev();
extern void _ZN8S20236C43v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C4__8S20236C3[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v20Ev,
};
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__8S20236C4__8S20236C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__A1__8S20236C4__8S20236C3[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__8S20236C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__8S20236C6__8S20236C3[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
static  VTT_ENTRY vtt_S20236C3[] = {
  {&(_ZTV8S20236C3[5]),  5,56},
  {&(_tg__ZTV8S20236C6__A__8S20236C3[3]),  3,9},
  {&(_tg__ZTV8S20236C5__8S20236C6__A__8S20236C3[4]),  4,6},
  {&(_ZTV8S20236C3[28]),  28,56},
  {&(_ZTV8S20236C3[44]),  44,56},
  {&(_ZTV8S20236C3[54]),  54,56},
  {&(_tg__ZTV8S20236C4__8S20236C3[4]),  4,11},
  {&(_tg__ZTV8S20236C6__8S20236C4__8S20236C3[9]),  9,15},
  {&(_tg__ZTV8S20236C5__A1__8S20236C4__8S20236C3[4]),  4,6},
  {&(_tg__ZTV8S20236C6__8S20236C3[3]),  3,9},
  {&(_tg__ZTV8S20236C5__8S20236C6__8S20236C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20236C3[];
extern  VTBL_ENTRY _ZTV8S20236C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C3[];
Class_Descriptor cd_S20236C3 = {  "S20236C3", // class name
  bases_S20236C3, 5,
  &(vtc_S20236C3[0]), // expected_vtbl_contents
  &(vtt_S20236C3[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S20236C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20236C3),56, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20236C3),11, //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  S20236C1  : virtual S20236C2 , S20236C3 {
  virtual void  v1(); // _ZN8S20236C12v1Ev
  virtual void  v2(); // _ZN8S20236C12v2Ev
  virtual void  v3(); // _ZN8S20236C12v3Ev
  virtual void  v4(); // _ZN8S20236C12v4Ev
  ~S20236C1(); // tgen
  S20236C1(); // tgen
};
//SIG(1 S20236C1) C1{ VBC2{ v5 v6 v7 Fi} BC3{ VBC4{ BC5{ v8 v9 Fp} VBC6{ VBC5 v10 v11 v12 v13 v14 v15} v16 v17 v18 v19 v20 FD Fc:8 Fp} BC6 v21 v22 v23 v24 v25 v26 FC2 Fp} v1 v2 v3 v4}


void  S20236C1 ::v1(){vfunc_called(this, "_ZN8S20236C12v1Ev");}
void  S20236C1 ::v2(){vfunc_called(this, "_ZN8S20236C12v2Ev");}
void  S20236C1 ::v3(){vfunc_called(this, "_ZN8S20236C12v3Ev");}
void  S20236C1 ::v4(){vfunc_called(this, "_ZN8S20236C12v4Ev");}
S20236C1 ::~S20236C1(){ note_dtor("S20236C1", this);} // tgen
S20236C1 ::S20236C1(){ note_ctor("S20236C1", this);} // tgen

static void Test_S20236C1()
{
  extern Class_Descriptor cd_S20236C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20236C1, buf);
    S20236C1 *dp, &lv = *(dp=new (buf) S20236C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20236C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20236C1)");
    check_base_class_offset(lv, (S20236C2*), ABISELECT(32,16), "S20236C1");
    /*is_ambiguous_... S20236C4::S20236C5 */ AMB_check_base_class_offset(lv, (S20236C5*)(S20236C4*), ABISELECT(48,24), "S20236C1");
    /*is_ambiguous_... S20236C1::S20236C6 */ AMB_check_base_class_offset(lv, (S20236C5*)(S20236C6*), ABISELECT(104,56), "S20236C1");
    /*is_ambiguous_... S20236C3::S20236C6 */ AMB_check_base_class_offset(lv, (S20236C5*)(S20236C6*)(S20236C3*), ABISELECT(104,56), "S20236C1");
    check_base_class_offset(lv, (S20236C6*)(S20236C4*), ABISELECT(96,52), "S20236C1");
    check_base_class_offset(lv, (S20236C4*)(S20236C3*), ABISELECT(48,24), "S20236C1");
    /*is_ambiguous_... S20236C3::S20236C6 */ AMB_check_base_class_offset(lv, (S20236C6*)(S20236C3*), 0, "S20236C1");
    check_base_class_offset(lv, (S20236C3*), 0, "S20236C1");
    test_class_info(&lv, &cd_S20236C1);
    dp->~S20236C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20236C1(Test_S20236C1, "S20236C1", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S20236C1C1Ev();
extern void _ZN8S20236C1D1Ev();
Name_Map name_map_S20236C1[] = {
  NSPAIR(_ZN8S20236C1C1Ev),
  NSPAIR(_ZN8S20236C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20236C2;
extern VTBL_ENTRY _ZTI8S20236C2[];
extern  VTBL_ENTRY _ZTV8S20236C2[];
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
extern Class_Descriptor cd_S20236C5;
extern VTBL_ENTRY _ZTI8S20236C5[];
extern  VTBL_ENTRY _ZTV8S20236C5[];
extern Class_Descriptor cd_S20236C6;
extern VTBL_ENTRY _ZTI8S20236C6[];
extern  VTBL_ENTRY _ZTV8S20236C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C6[];
extern Class_Descriptor cd_S20236C4;
extern VTBL_ENTRY _ZTI8S20236C4[];
extern  VTBL_ENTRY _ZTV8S20236C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C4[];
extern Class_Descriptor cd_S20236C6;
extern VTBL_ENTRY _ZTI8S20236C6[];
extern  VTBL_ENTRY _ZTV8S20236C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C6[];
extern Class_Descriptor cd_S20236C3;
extern VTBL_ENTRY _ZTI8S20236C3[];
extern  VTBL_ENTRY _ZTV8S20236C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C3[];
static Base_Class bases_S20236C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20236C2,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20236C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20236C5,    ABISELECT(104,56), //bcp->offset
    63, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20236C6,    ABISELECT(96,52), //bcp->offset
    48, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20236C4,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20236C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20236C3,    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 _ZTI8S20236C1[];
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C33v21Ev();
extern void _ZN8S20236C33v22Ev();
extern void _ZN8S20236C33v23Ev();
extern void _ZN8S20236C33v24Ev();
extern void _ZN8S20236C33v25Ev();
extern void _ZN8S20236C33v26Ev();
extern void _ZN8S20236C12v1Ev();
extern void _ZN8S20236C12v2Ev();
extern void _ZN8S20236C12v3Ev();
extern void _ZN8S20236C12v4Ev();
extern void _ZN8S20236C22v5Ev();
extern void _ZN8S20236C22v6Ev();
extern void _ZN8S20236C22v7Ev();
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
extern void _ZN8S20236C43v16Ev();
extern void _ZN8S20236C43v17Ev();
extern void _ZN8S20236C43v18Ev();
extern void _ZN8S20236C43v19Ev();
extern void _ZN8S20236C43v20Ev();
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY vtc_S20236C1[] = {
  ABISELECT(32,16),
  ABISELECT(96,52),
  ABISELECT(48,24),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C1[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v22Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v23Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v24Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20236C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20236C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20236C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20236C12v4Ev,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20236C1[0]),
  (VTBL_ENTRY)&_ZN8S20236C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20236C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20236C22v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20236C1[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20236C1[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20236C1[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20236C1[];
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
extern void _ZN8S20236C33v21Ev();
extern void _ZN8S20236C33v22Ev();
extern void _ZN8S20236C33v23Ev();
extern void _ZN8S20236C33v24Ev();
extern void _ZN8S20236C33v25Ev();
extern void _ZN8S20236C33v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C3__8S20236C1[] = {
  ABISELECT(96,52),
  ABISELECT(48,24),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v22Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v23Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v24Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20236C33v26Ev,
};
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C68S20236C3__A1__8S20236C1[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__8S20236C68S20236C3__A1__8S20236C1[] = {
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
extern void _ZN8S20236C43v16Ev();
extern void _ZN8S20236C43v17Ev();
extern void _ZN8S20236C43v18Ev();
extern void _ZN8S20236C43v19Ev();
extern void _ZN8S20236C43v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C4__8S20236C3__8S20236C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v20Ev,
};
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__8S20236C3__8S20236C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__A1__8S20236C3__8S20236C1[] = {
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20236C3[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
extern void _ZN8S20236C43v16Ev();
extern void _ZN8S20236C43v17Ev();
extern void _ZN8S20236C43v18Ev();
extern void _ZN8S20236C43v19Ev();
extern void _ZN8S20236C43v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C4__8S20236C1[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20236C43v20Ev,
};
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__8S20236C4__8S20236C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__A1__8S20236C4__8S20236C1[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20236C4[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
extern void _ZN8S20236C63v10Ev();
extern void _ZN8S20236C63v11Ev();
extern void _ZN8S20236C63v12Ev();
extern void _ZN8S20236C63v13Ev();
extern void _ZN8S20236C63v14Ev();
extern void _ZN8S20236C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C6__8S20236C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20236C63v15Ev,
};
extern void _ZN8S20236C52v8Ev();
extern void _ZN8S20236C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20236C5__8S20236C6__8S20236C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20236C6[0]),
  (VTBL_ENTRY)&_ZN8S20236C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20236C52v9Ev,
};
static  VTT_ENTRY vtt_S20236C1[] = {
  {&(_ZTV8S20236C1[6]),  6,69},
  {&(_tg__ZTV8S20236C3__8S20236C1[5]),  5,17},
  {&(_tg__ZTV8S20236C68S20236C3__A1__8S20236C1[3]),  3,9},
  {&(_tg__ZTV8S20236C5__8S20236C68S20236C3__A1__8S20236C1[4]),  4,6},
  {&(_tg__ZTV8S20236C4__8S20236C3__8S20236C1[11]),  11,18},
  {&(_tg__ZTV8S20236C6__8S20236C3__8S20236C1[9]),  9,15},
  {&(_tg__ZTV8S20236C5__A1__8S20236C3__8S20236C1[4]),  4,6},
  {&(_ZTV8S20236C1[27]),  27,69},
  {&(_ZTV8S20236C1[41]),  41,69},
  {&(_ZTV8S20236C1[57]),  57,69},
  {&(_ZTV8S20236C1[67]),  67,69},
  {&(_tg__ZTV8S20236C4__8S20236C1[4]),  4,11},
  {&(_tg__ZTV8S20236C6__8S20236C4__8S20236C1[9]),  9,15},
  {&(_tg__ZTV8S20236C5__A1__8S20236C4__8S20236C1[4]),  4,6},
  {&(_tg__ZTV8S20236C6__8S20236C1[3]),  3,9},
  {&(_tg__ZTV8S20236C5__8S20236C6__8S20236C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20236C1[];
extern  VTBL_ENTRY _ZTV8S20236C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20236C1[];
Class_Descriptor cd_S20236C1 = {  "S20236C1", // class name
  bases_S20236C1, 7,
  &(vtc_S20236C1[0]), // expected_vtbl_contents
  &(vtt_S20236C1[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S20236C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20236C1),69, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20236C1),16, //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  S2868C2  : S19894C34 {
  ::S9526C11_nt s2868c2f0;
  virtual  ~S2868C2(); // _ZN7S2868C2D1Ev
  virtual void  v11(); // _ZN7S2868C23v11Ev
  virtual void  v12(); // _ZN7S2868C23v12Ev
  virtual void  v13(); // _ZN7S2868C23v13Ev
  virtual void  v14(); // _ZN7S2868C23v14Ev
  virtual void  v15(); // _ZN7S2868C23v15Ev
  virtual void  v16(); // _ZN7S2868C23v16Ev
  virtual void  v17(); // _ZN7S2868C23v17Ev
  virtual void  v18(); // _ZN7S2868C23v18Ev
  virtual void  v19(); // _ZN7S2868C23v19Ev
  virtual void  v20(); // _ZN7S2868C23v20Ev
  virtual void  v21(); // _ZN7S2868C23v21Ev
  virtual void  v22(); // _ZN7S2868C23v22Ev
  virtual void  v23(); // _ZN7S2868C23v23Ev
  virtual void  v24(); // _ZN7S2868C23v24Ev
  virtual void  v25(); // _ZN7S2868C23v25Ev
  virtual void  v26(); // _ZN7S2868C23v26Ev
  virtual void  v27(); // _ZN7S2868C23v27Ev
  virtual void  v28(); // _ZN7S2868C23v28Ev
  virtual void  v29(); // _ZN7S2868C23v29Ev
  S2868C2(); // tgen
};
//SIG(-1 S2868C2) C1{ BC2{ m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC3{ m Fp Fi FC2}}


 S2868C2 ::~S2868C2(){ note_dtor("S2868C2", this);}
void  S2868C2 ::v11(){vfunc_called(this, "_ZN7S2868C23v11Ev");}
void  S2868C2 ::v12(){vfunc_called(this, "_ZN7S2868C23v12Ev");}
void  S2868C2 ::v13(){vfunc_called(this, "_ZN7S2868C23v13Ev");}
void  S2868C2 ::v14(){vfunc_called(this, "_ZN7S2868C23v14Ev");}
void  S2868C2 ::v15(){vfunc_called(this, "_ZN7S2868C23v15Ev");}
void  S2868C2 ::v16(){vfunc_called(this, "_ZN7S2868C23v16Ev");}
void  S2868C2 ::v17(){vfunc_called(this, "_ZN7S2868C23v17Ev");}
void  S2868C2 ::v18(){vfunc_called(this, "_ZN7S2868C23v18Ev");}
void  S2868C2 ::v19(){vfunc_called(this, "_ZN7S2868C23v19Ev");}
void  S2868C2 ::v20(){vfunc_called(this, "_ZN7S2868C23v20Ev");}
void  S2868C2 ::v21(){vfunc_called(this, "_ZN7S2868C23v21Ev");}
void  S2868C2 ::v22(){vfunc_called(this, "_ZN7S2868C23v22Ev");}
void  S2868C2 ::v23(){vfunc_called(this, "_ZN7S2868C23v23Ev");}
void  S2868C2 ::v24(){vfunc_called(this, "_ZN7S2868C23v24Ev");}
void  S2868C2 ::v25(){vfunc_called(this, "_ZN7S2868C23v25Ev");}
void  S2868C2 ::v26(){vfunc_called(this, "_ZN7S2868C23v26Ev");}
void  S2868C2 ::v27(){vfunc_called(this, "_ZN7S2868C23v27Ev");}
void  S2868C2 ::v28(){vfunc_called(this, "_ZN7S2868C23v28Ev");}
void  S2868C2 ::v29(){vfunc_called(this, "_ZN7S2868C23v29Ev");}
S2868C2 ::S2868C2(){ note_ctor("S2868C2", this);} // tgen

static void Test_S2868C2()
{
  extern Class_Descriptor cd_S2868C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2868C2, buf);
    S2868C2 *dp, &lv = *(dp=new (buf) S2868C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2868C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2868C2)");
    check_base_class_offset(lv, (S19894C34*), 0, "S2868C2");
    check_field_offset(lv, s2868c2f0, ABISELECT(8,4), "S2868C2.s2868c2f0");
    test_class_info(&lv, &cd_S2868C2);
    dp->~S2868C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2868C2(Test_S2868C2, "S2868C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2868C2C1Ev();
extern void _ZN7S2868C2D1Ev();
Name_Map name_map_S2868C2[] = {
  NSPAIR(_ZN7S2868C2C1Ev),
  NSPAIR(_ZN7S2868C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S2868C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2868C2[];
extern void _ZN7S2868C2D1Ev();
extern void _ZN7S2868C2D0Ev();
extern void _ZN7S2868C23v11Ev();
extern void _ZN7S2868C23v12Ev();
extern void _ZN7S2868C23v13Ev();
extern void _ZN7S2868C23v14Ev();
extern void _ZN7S2868C23v15Ev();
extern void _ZN7S2868C23v16Ev();
extern void _ZN7S2868C23v17Ev();
extern void _ZN7S2868C23v18Ev();
extern void _ZN7S2868C23v19Ev();
extern void _ZN7S2868C23v20Ev();
extern void _ZN7S2868C23v21Ev();
extern void _ZN7S2868C23v22Ev();
extern void _ZN7S2868C23v23Ev();
extern void _ZN7S2868C23v24Ev();
extern void _ZN7S2868C23v25Ev();
extern void _ZN7S2868C23v26Ev();
extern void _ZN7S2868C23v27Ev();
extern void _ZN7S2868C23v28Ev();
extern void _ZN7S2868C23v29Ev();
static  VTBL_ENTRY vtc_S2868C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2868C2[0]),
  (VTBL_ENTRY)&_ZN7S2868C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2868C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v26Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v27Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v28Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v29Ev,
};
extern VTBL_ENTRY _ZTI7S2868C2[];
extern  VTBL_ENTRY _ZTV7S2868C2[];
Class_Descriptor cd_S2868C2 = {  "S2868C2", // class name
  bases_S2868C2, 1,
  &(vtc_S2868C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2868C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2868C2),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2868C1  : S2868C2 {
  int s2868c1f0[2];
  virtual  ~S2868C1(); // _ZN7S2868C1D1Ev
  virtual void  v1(); // _ZN7S2868C12v1Ev
  virtual void  v2(); // _ZN7S2868C12v2Ev
  virtual void  v3(); // _ZN7S2868C12v3Ev
  virtual void  v4(); // _ZN7S2868C12v4Ev
  virtual void  v5(); // _ZN7S2868C12v5Ev
  virtual void  v6(); // _ZN7S2868C12v6Ev
  virtual void  v7(); // _ZN7S2868C12v7Ev
  virtual void  v8(); // _ZN7S2868C12v8Ev
  virtual void  v9(); // _ZN7S2868C12v9Ev
  virtual void  v10(); // _ZN7S2868C13v10Ev
  S2868C1(); // tgen
};
//SIG(1 S2868C1) C1{ BC2{ BC3{ m} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 FC4{ m Fp Fi FC3}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi[2]}


 S2868C1 ::~S2868C1(){ note_dtor("S2868C1", this);}
void  S2868C1 ::v1(){vfunc_called(this, "_ZN7S2868C12v1Ev");}
void  S2868C1 ::v2(){vfunc_called(this, "_ZN7S2868C12v2Ev");}
void  S2868C1 ::v3(){vfunc_called(this, "_ZN7S2868C12v3Ev");}
void  S2868C1 ::v4(){vfunc_called(this, "_ZN7S2868C12v4Ev");}
void  S2868C1 ::v5(){vfunc_called(this, "_ZN7S2868C12v5Ev");}
void  S2868C1 ::v6(){vfunc_called(this, "_ZN7S2868C12v6Ev");}
void  S2868C1 ::v7(){vfunc_called(this, "_ZN7S2868C12v7Ev");}
void  S2868C1 ::v8(){vfunc_called(this, "_ZN7S2868C12v8Ev");}
void  S2868C1 ::v9(){vfunc_called(this, "_ZN7S2868C12v9Ev");}
void  S2868C1 ::v10(){vfunc_called(this, "_ZN7S2868C13v10Ev");}
S2868C1 ::S2868C1(){ note_ctor("S2868C1", this);} // tgen

static void Test_S2868C1()
{
  extern Class_Descriptor cd_S2868C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S2868C1, buf);
    S2868C1 *dp, &lv = *(dp=new (buf) S2868C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S2868C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2868C1)");
    check_base_class_offset(lv, (S19894C34*)(S2868C2*), 0, "S2868C1");
    check_base_class_offset(lv, (S2868C2*), 0, "S2868C1");
    check_field_offset(lv, s2868c1f0, ABISELECT(24,16), "S2868C1.s2868c1f0");
    test_class_info(&lv, &cd_S2868C1);
    dp->~S2868C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2868C1(Test_S2868C1, "S2868C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S2868C1C1Ev();
extern void _ZN7S2868C1D1Ev();
Name_Map name_map_S2868C1[] = {
  NSPAIR(_ZN7S2868C1C1Ev),
  NSPAIR(_ZN7S2868C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S2868C2;
extern VTBL_ENTRY _ZTI7S2868C2[];
extern  VTBL_ENTRY _ZTV7S2868C2[];
static Base_Class bases_S2868C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2868C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2868C1[];
extern void _ZN7S2868C1D1Ev();
extern void _ZN7S2868C1D0Ev();
extern void _ZN7S2868C23v11Ev();
extern void _ZN7S2868C23v12Ev();
extern void _ZN7S2868C23v13Ev();
extern void _ZN7S2868C23v14Ev();
extern void _ZN7S2868C23v15Ev();
extern void _ZN7S2868C23v16Ev();
extern void _ZN7S2868C23v17Ev();
extern void _ZN7S2868C23v18Ev();
extern void _ZN7S2868C23v19Ev();
extern void _ZN7S2868C23v20Ev();
extern void _ZN7S2868C23v21Ev();
extern void _ZN7S2868C23v22Ev();
extern void _ZN7S2868C23v23Ev();
extern void _ZN7S2868C23v24Ev();
extern void _ZN7S2868C23v25Ev();
extern void _ZN7S2868C23v26Ev();
extern void _ZN7S2868C23v27Ev();
extern void _ZN7S2868C23v28Ev();
extern void _ZN7S2868C23v29Ev();
extern void _ZN7S2868C12v1Ev();
extern void _ZN7S2868C12v2Ev();
extern void _ZN7S2868C12v3Ev();
extern void _ZN7S2868C12v4Ev();
extern void _ZN7S2868C12v5Ev();
extern void _ZN7S2868C12v6Ev();
extern void _ZN7S2868C12v7Ev();
extern void _ZN7S2868C12v8Ev();
extern void _ZN7S2868C12v9Ev();
extern void _ZN7S2868C13v10Ev();
static  VTBL_ENTRY vtc_S2868C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2868C1[0]),
  (VTBL_ENTRY)&_ZN7S2868C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2868C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v26Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v27Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v28Ev,
  (VTBL_ENTRY)&_ZN7S2868C23v29Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2868C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2868C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S2868C1[];
extern  VTBL_ENTRY _ZTV7S2868C1[];
Class_Descriptor cd_S2868C1 = {  "S2868C1", // class name
  bases_S2868C1, 2,
  &(vtc_S2868C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S2868C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2868C1),33, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6480C2  {
  int s6480c2f0[2];
  virtual  ~S6480C2(); // _ZN7S6480C2D1Ev
  virtual void  v14(); // _ZN7S6480C23v14Ev
  virtual void  v15(); // _ZN7S6480C23v15Ev
  virtual void  v16(); // _ZN7S6480C23v16Ev
  virtual void  v17(); // _ZN7S6480C23v17Ev
  virtual void  v18(); // _ZN7S6480C23v18Ev
  virtual void  v19(); // _ZN7S6480C23v19Ev
  virtual void  v20(); // _ZN7S6480C23v20Ev
  virtual void  v21(); // _ZN7S6480C23v21Ev
  virtual void  v22(); // _ZN7S6480C23v22Ev
  virtual void  v23(); // _ZN7S6480C23v23Ev
  virtual void  v24(); // _ZN7S6480C23v24Ev
  virtual void  v25(); // _ZN7S6480C23v25Ev
  virtual void  v26(); // _ZN7S6480C23v26Ev
  virtual void  v27(); // _ZN7S6480C23v27Ev
  S6480C2(); // tgen
};
//SIG(-1 S6480C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6480C2 ::~S6480C2(){ note_dtor("S6480C2", this);}
void  S6480C2 ::v14(){vfunc_called(this, "_ZN7S6480C23v14Ev");}
void  S6480C2 ::v15(){vfunc_called(this, "_ZN7S6480C23v15Ev");}
void  S6480C2 ::v16(){vfunc_called(this, "_ZN7S6480C23v16Ev");}
void  S6480C2 ::v17(){vfunc_called(this, "_ZN7S6480C23v17Ev");}
void  S6480C2 ::v18(){vfunc_called(this, "_ZN7S6480C23v18Ev");}
void  S6480C2 ::v19(){vfunc_called(this, "_ZN7S6480C23v19Ev");}
void  S6480C2 ::v20(){vfunc_called(this, "_ZN7S6480C23v20Ev");}
void  S6480C2 ::v21(){vfunc_called(this, "_ZN7S6480C23v21Ev");}
void  S6480C2 ::v22(){vfunc_called(this, "_ZN7S6480C23v22Ev");}
void  S6480C2 ::v23(){vfunc_called(this, "_ZN7S6480C23v23Ev");}
void  S6480C2 ::v24(){vfunc_called(this, "_ZN7S6480C23v24Ev");}
void  S6480C2 ::v25(){vfunc_called(this, "_ZN7S6480C23v25Ev");}
void  S6480C2 ::v26(){vfunc_called(this, "_ZN7S6480C23v26Ev");}
void  S6480C2 ::v27(){vfunc_called(this, "_ZN7S6480C23v27Ev");}
S6480C2 ::S6480C2(){ note_ctor("S6480C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6480C2C1Ev();
extern void _ZN7S6480C2D1Ev();
Name_Map name_map_S6480C2[] = {
  NSPAIR(_ZN7S6480C2C1Ev),
  NSPAIR(_ZN7S6480C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6480C2[];
extern void _ZN7S6480C2D1Ev();
extern void _ZN7S6480C2D0Ev();
extern void _ZN7S6480C23v14Ev();
extern void _ZN7S6480C23v15Ev();
extern void _ZN7S6480C23v16Ev();
extern void _ZN7S6480C23v17Ev();
extern void _ZN7S6480C23v18Ev();
extern void _ZN7S6480C23v19Ev();
extern void _ZN7S6480C23v20Ev();
extern void _ZN7S6480C23v21Ev();
extern void _ZN7S6480C23v22Ev();
extern void _ZN7S6480C23v23Ev();
extern void _ZN7S6480C23v24Ev();
extern void _ZN7S6480C23v25Ev();
extern void _ZN7S6480C23v26Ev();
extern void _ZN7S6480C23v27Ev();
static  VTBL_ENTRY vtc_S6480C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6480C2[0]),
  (VTBL_ENTRY)&_ZN7S6480C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6480C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6480C2[];
extern  VTBL_ENTRY _ZTV7S6480C2[];
Class_Descriptor cd_S6480C2 = {  "S6480C2", // class name
  0,0,//no base classes
  &(vtc_S6480C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6480C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6480C2),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  S6480C1  : S6480C2 {
  int s6480c1f0;
  void *s6480c1f1[2];
  int s6480c1f2;
  void *s6480c1f3[5];
  ::S3620C13_nt s6480c1f4;
  virtual  ~S6480C1(); // _ZN7S6480C1D1Ev
  virtual void  v1(); // _ZN7S6480C12v1Ev
  virtual void  v2(); // _ZN7S6480C12v2Ev
  virtual void  v3(); // _ZN7S6480C12v3Ev
  virtual void  v4(); // _ZN7S6480C12v4Ev
  virtual void  v5(); // _ZN7S6480C12v5Ev
  virtual void  v6(); // _ZN7S6480C12v6Ev
  virtual void  v7(); // _ZN7S6480C12v7Ev
  virtual void  v8(); // _ZN7S6480C12v8Ev
  virtual void  v9(); // _ZN7S6480C12v9Ev
  virtual void  v10(); // _ZN7S6480C13v10Ev
  virtual void  v11(); // _ZN7S6480C13v11Ev
  virtual void  v12(); // _ZN7S6480C13v12Ev
  virtual void  v13(); // _ZN7S6480C13v13Ev
  S6480C1(); // tgen
};
//SIG(1 S6480C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi Fp[2] Fi Fp[5] FC3{ m FL[4]}}


 S6480C1 ::~S6480C1(){ note_dtor("S6480C1", this);}
void  S6480C1 ::v1(){vfunc_called(this, "_ZN7S6480C12v1Ev");}
void  S6480C1 ::v2(){vfunc_called(this, "_ZN7S6480C12v2Ev");}
void  S6480C1 ::v3(){vfunc_called(this, "_ZN7S6480C12v3Ev");}
void  S6480C1 ::v4(){vfunc_called(this, "_ZN7S6480C12v4Ev");}
void  S6480C1 ::v5(){vfunc_called(this, "_ZN7S6480C12v5Ev");}
void  S6480C1 ::v6(){vfunc_called(this, "_ZN7S6480C12v6Ev");}
void  S6480C1 ::v7(){vfunc_called(this, "_ZN7S6480C12v7Ev");}
void  S6480C1 ::v8(){vfunc_called(this, "_ZN7S6480C12v8Ev");}
void  S6480C1 ::v9(){vfunc_called(this, "_ZN7S6480C12v9Ev");}
void  S6480C1 ::v10(){vfunc_called(this, "_ZN7S6480C13v10Ev");}
void  S6480C1 ::v11(){vfunc_called(this, "_ZN7S6480C13v11Ev");}
void  S6480C1 ::v12(){vfunc_called(this, "_ZN7S6480C13v12Ev");}
void  S6480C1 ::v13(){vfunc_called(this, "_ZN7S6480C13v13Ev");}
S6480C1 ::S6480C1(){ note_ctor("S6480C1", this);} // tgen

static void Test_S6480C1()
{
  extern Class_Descriptor cd_S6480C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S6480C1, buf);
    S6480C1 *dp, &lv = *(dp=new (buf) S6480C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S6480C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6480C1)");
    check_base_class_offset(lv, (S6480C2*), 0, "S6480C1");
    check_field_offset(lv, s6480c1f0, ABISELECT(16,12), "S6480C1.s6480c1f0");
    check_field_offset(lv, s6480c1f1, ABISELECT(24,16), "S6480C1.s6480c1f1");
    check_field_offset(lv, s6480c1f2, ABISELECT(40,24), "S6480C1.s6480c1f2");
    check_field_offset(lv, s6480c1f3, ABISELECT(48,28), "S6480C1.s6480c1f3");
    check_field_offset(lv, s6480c1f4, ABISELECT(88,48), "S6480C1.s6480c1f4");
    test_class_info(&lv, &cd_S6480C1);
    dp->~S6480C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6480C1(Test_S6480C1, "S6480C1", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN7S6480C1C1Ev();
extern void _ZN7S6480C1D1Ev();
Name_Map name_map_S6480C1[] = {
  NSPAIR(_ZN7S6480C1C1Ev),
  NSPAIR(_ZN7S6480C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6480C2;
extern VTBL_ENTRY _ZTI7S6480C2[];
extern  VTBL_ENTRY _ZTV7S6480C2[];
static Base_Class bases_S6480C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6480C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6480C1[];
extern void _ZN7S6480C1D1Ev();
extern void _ZN7S6480C1D0Ev();
extern void _ZN7S6480C23v14Ev();
extern void _ZN7S6480C23v15Ev();
extern void _ZN7S6480C23v16Ev();
extern void _ZN7S6480C23v17Ev();
extern void _ZN7S6480C23v18Ev();
extern void _ZN7S6480C23v19Ev();
extern void _ZN7S6480C23v20Ev();
extern void _ZN7S6480C23v21Ev();
extern void _ZN7S6480C23v22Ev();
extern void _ZN7S6480C23v23Ev();
extern void _ZN7S6480C23v24Ev();
extern void _ZN7S6480C23v25Ev();
extern void _ZN7S6480C23v26Ev();
extern void _ZN7S6480C23v27Ev();
extern void _ZN7S6480C12v1Ev();
extern void _ZN7S6480C12v2Ev();
extern void _ZN7S6480C12v3Ev();
extern void _ZN7S6480C12v4Ev();
extern void _ZN7S6480C12v5Ev();
extern void _ZN7S6480C12v6Ev();
extern void _ZN7S6480C12v7Ev();
extern void _ZN7S6480C12v8Ev();
extern void _ZN7S6480C12v9Ev();
extern void _ZN7S6480C13v10Ev();
extern void _ZN7S6480C13v11Ev();
extern void _ZN7S6480C13v12Ev();
extern void _ZN7S6480C13v13Ev();
static  VTBL_ENTRY vtc_S6480C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6480C1[0]),
  (VTBL_ENTRY)&_ZN7S6480C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6480C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6480C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6480C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6480C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6480C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6480C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6480C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6480C1[];
extern  VTBL_ENTRY _ZTV7S6480C1[];
Class_Descriptor cd_S6480C1 = {  "S6480C1", // class name
  bases_S6480C1, 1,
  &(vtc_S6480C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI7S6480C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6480C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6482C2  {
  int s6482c2f0[2];
  virtual  ~S6482C2(); // _ZN7S6482C2D1Ev
  virtual void  v14(); // _ZN7S6482C23v14Ev
  virtual void  v15(); // _ZN7S6482C23v15Ev
  virtual void  v16(); // _ZN7S6482C23v16Ev
  virtual void  v17(); // _ZN7S6482C23v17Ev
  virtual void  v18(); // _ZN7S6482C23v18Ev
  virtual void  v19(); // _ZN7S6482C23v19Ev
  virtual void  v20(); // _ZN7S6482C23v20Ev
  virtual void  v21(); // _ZN7S6482C23v21Ev
  virtual void  v22(); // _ZN7S6482C23v22Ev
  virtual void  v23(); // _ZN7S6482C23v23Ev
  virtual void  v24(); // _ZN7S6482C23v24Ev
  virtual void  v25(); // _ZN7S6482C23v25Ev
  virtual void  v26(); // _ZN7S6482C23v26Ev
  virtual void  v27(); // _ZN7S6482C23v27Ev
  S6482C2(); // tgen
};
//SIG(-1 S6482C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6482C2 ::~S6482C2(){ note_dtor("S6482C2", this);}
void  S6482C2 ::v14(){vfunc_called(this, "_ZN7S6482C23v14Ev");}
void  S6482C2 ::v15(){vfunc_called(this, "_ZN7S6482C23v15Ev");}
void  S6482C2 ::v16(){vfunc_called(this, "_ZN7S6482C23v16Ev");}
void  S6482C2 ::v17(){vfunc_called(this, "_ZN7S6482C23v17Ev");}
void  S6482C2 ::v18(){vfunc_called(this, "_ZN7S6482C23v18Ev");}
void  S6482C2 ::v19(){vfunc_called(this, "_ZN7S6482C23v19Ev");}
void  S6482C2 ::v20(){vfunc_called(this, "_ZN7S6482C23v20Ev");}
void  S6482C2 ::v21(){vfunc_called(this, "_ZN7S6482C23v21Ev");}
void  S6482C2 ::v22(){vfunc_called(this, "_ZN7S6482C23v22Ev");}
void  S6482C2 ::v23(){vfunc_called(this, "_ZN7S6482C23v23Ev");}
void  S6482C2 ::v24(){vfunc_called(this, "_ZN7S6482C23v24Ev");}
void  S6482C2 ::v25(){vfunc_called(this, "_ZN7S6482C23v25Ev");}
void  S6482C2 ::v26(){vfunc_called(this, "_ZN7S6482C23v26Ev");}
void  S6482C2 ::v27(){vfunc_called(this, "_ZN7S6482C23v27Ev");}
S6482C2 ::S6482C2(){ note_ctor("S6482C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6482C2C1Ev();
extern void _ZN7S6482C2D1Ev();
Name_Map name_map_S6482C2[] = {
  NSPAIR(_ZN7S6482C2C1Ev),
  NSPAIR(_ZN7S6482C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6482C2[];
extern void _ZN7S6482C2D1Ev();
extern void _ZN7S6482C2D0Ev();
extern void _ZN7S6482C23v14Ev();
extern void _ZN7S6482C23v15Ev();
extern void _ZN7S6482C23v16Ev();
extern void _ZN7S6482C23v17Ev();
extern void _ZN7S6482C23v18Ev();
extern void _ZN7S6482C23v19Ev();
extern void _ZN7S6482C23v20Ev();
extern void _ZN7S6482C23v21Ev();
extern void _ZN7S6482C23v22Ev();
extern void _ZN7S6482C23v23Ev();
extern void _ZN7S6482C23v24Ev();
extern void _ZN7S6482C23v25Ev();
extern void _ZN7S6482C23v26Ev();
extern void _ZN7S6482C23v27Ev();
static  VTBL_ENTRY vtc_S6482C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6482C2[0]),
  (VTBL_ENTRY)&_ZN7S6482C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6482C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6482C2[];
extern  VTBL_ENTRY _ZTV7S6482C2[];
Class_Descriptor cd_S6482C2 = {  "S6482C2", // class name
  0,0,//no base classes
  &(vtc_S6482C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6482C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6482C2),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  S6482C1  : S6482C2 {
  int s6482c1f0[2];
  void *s6482c1f1;
  ::S3619C13_nt s6482c1f2;
  void *s6482c1f3;
  virtual  ~S6482C1(); // _ZN7S6482C1D1Ev
  virtual void  v1(); // _ZN7S6482C12v1Ev
  virtual void  v2(); // _ZN7S6482C12v2Ev
  virtual void  v3(); // _ZN7S6482C12v3Ev
  virtual void  v4(); // _ZN7S6482C12v4Ev
  virtual void  v5(); // _ZN7S6482C12v5Ev
  virtual void  v6(); // _ZN7S6482C12v6Ev
  virtual void  v7(); // _ZN7S6482C12v7Ev
  virtual void  v8(); // _ZN7S6482C12v8Ev
  virtual void  v9(); // _ZN7S6482C12v9Ev
  virtual void  v10(); // _ZN7S6482C13v10Ev
  virtual void  v11(); // _ZN7S6482C13v11Ev
  virtual void  v12(); // _ZN7S6482C13v12Ev
  virtual void  v13(); // _ZN7S6482C13v13Ev
  S6482C1(); // tgen
};
//SIG(1 S6482C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi[2] Fp FC3{ m FC4{ FL[4]}} Fp}


 S6482C1 ::~S6482C1(){ note_dtor("S6482C1", this);}
void  S6482C1 ::v1(){vfunc_called(this, "_ZN7S6482C12v1Ev");}
void  S6482C1 ::v2(){vfunc_called(this, "_ZN7S6482C12v2Ev");}
void  S6482C1 ::v3(){vfunc_called(this, "_ZN7S6482C12v3Ev");}
void  S6482C1 ::v4(){vfunc_called(this, "_ZN7S6482C12v4Ev");}
void  S6482C1 ::v5(){vfunc_called(this, "_ZN7S6482C12v5Ev");}
void  S6482C1 ::v6(){vfunc_called(this, "_ZN7S6482C12v6Ev");}
void  S6482C1 ::v7(){vfunc_called(this, "_ZN7S6482C12v7Ev");}
void  S6482C1 ::v8(){vfunc_called(this, "_ZN7S6482C12v8Ev");}
void  S6482C1 ::v9(){vfunc_called(this, "_ZN7S6482C12v9Ev");}
void  S6482C1 ::v10(){vfunc_called(this, "_ZN7S6482C13v10Ev");}
void  S6482C1 ::v11(){vfunc_called(this, "_ZN7S6482C13v11Ev");}
void  S6482C1 ::v12(){vfunc_called(this, "_ZN7S6482C13v12Ev");}
void  S6482C1 ::v13(){vfunc_called(this, "_ZN7S6482C13v13Ev");}
S6482C1 ::S6482C1(){ note_ctor("S6482C1", this);} // tgen

static void Test_S6482C1()
{
  extern Class_Descriptor cd_S6482C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S6482C1, buf);
    S6482C1 *dp, &lv = *(dp=new (buf) S6482C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S6482C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6482C1)");
    check_base_class_offset(lv, (S6482C2*), 0, "S6482C1");
    check_field_offset(lv, s6482c1f0, ABISELECT(16,12), "S6482C1.s6482c1f0");
    check_field_offset(lv, s6482c1f1, ABISELECT(24,20), "S6482C1.s6482c1f1");
    check_field_offset(lv, s6482c1f2, ABISELECT(32,24), "S6482C1.s6482c1f2");
    check_field_offset(lv, s6482c1f3, ABISELECT(64,56), "S6482C1.s6482c1f3");
    test_class_info(&lv, &cd_S6482C1);
    dp->~S6482C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6482C1(Test_S6482C1, "S6482C1", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S6482C1C1Ev();
extern void _ZN7S6482C1D1Ev();
Name_Map name_map_S6482C1[] = {
  NSPAIR(_ZN7S6482C1C1Ev),
  NSPAIR(_ZN7S6482C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6482C2;
extern VTBL_ENTRY _ZTI7S6482C2[];
extern  VTBL_ENTRY _ZTV7S6482C2[];
static Base_Class bases_S6482C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6482C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6482C1[];
extern void _ZN7S6482C1D1Ev();
extern void _ZN7S6482C1D0Ev();
extern void _ZN7S6482C23v14Ev();
extern void _ZN7S6482C23v15Ev();
extern void _ZN7S6482C23v16Ev();
extern void _ZN7S6482C23v17Ev();
extern void _ZN7S6482C23v18Ev();
extern void _ZN7S6482C23v19Ev();
extern void _ZN7S6482C23v20Ev();
extern void _ZN7S6482C23v21Ev();
extern void _ZN7S6482C23v22Ev();
extern void _ZN7S6482C23v23Ev();
extern void _ZN7S6482C23v24Ev();
extern void _ZN7S6482C23v25Ev();
extern void _ZN7S6482C23v26Ev();
extern void _ZN7S6482C23v27Ev();
extern void _ZN7S6482C12v1Ev();
extern void _ZN7S6482C12v2Ev();
extern void _ZN7S6482C12v3Ev();
extern void _ZN7S6482C12v4Ev();
extern void _ZN7S6482C12v5Ev();
extern void _ZN7S6482C12v6Ev();
extern void _ZN7S6482C12v7Ev();
extern void _ZN7S6482C12v8Ev();
extern void _ZN7S6482C12v9Ev();
extern void _ZN7S6482C13v10Ev();
extern void _ZN7S6482C13v11Ev();
extern void _ZN7S6482C13v12Ev();
extern void _ZN7S6482C13v13Ev();
static  VTBL_ENTRY vtc_S6482C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6482C1[0]),
  (VTBL_ENTRY)&_ZN7S6482C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6482C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6482C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6482C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6482C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6482C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6482C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6482C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6482C1[];
extern  VTBL_ENTRY _ZTV7S6482C1[];
Class_Descriptor cd_S6482C1 = {  "S6482C1", // class name
  bases_S6482C1, 1,
  &(vtc_S6482C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S6482C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6482C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6481C2  {
  int s6481c2f0[2];
  virtual  ~S6481C2(); // _ZN7S6481C2D1Ev
  virtual void  v14(); // _ZN7S6481C23v14Ev
  virtual void  v15(); // _ZN7S6481C23v15Ev
  virtual void  v16(); // _ZN7S6481C23v16Ev
  virtual void  v17(); // _ZN7S6481C23v17Ev
  virtual void  v18(); // _ZN7S6481C23v18Ev
  virtual void  v19(); // _ZN7S6481C23v19Ev
  virtual void  v20(); // _ZN7S6481C23v20Ev
  virtual void  v21(); // _ZN7S6481C23v21Ev
  virtual void  v22(); // _ZN7S6481C23v22Ev
  virtual void  v23(); // _ZN7S6481C23v23Ev
  virtual void  v24(); // _ZN7S6481C23v24Ev
  virtual void  v25(); // _ZN7S6481C23v25Ev
  virtual void  v26(); // _ZN7S6481C23v26Ev
  virtual void  v27(); // _ZN7S6481C23v27Ev
  S6481C2(); // tgen
};
//SIG(-1 S6481C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6481C2 ::~S6481C2(){ note_dtor("S6481C2", this);}
void  S6481C2 ::v14(){vfunc_called(this, "_ZN7S6481C23v14Ev");}
void  S6481C2 ::v15(){vfunc_called(this, "_ZN7S6481C23v15Ev");}
void  S6481C2 ::v16(){vfunc_called(this, "_ZN7S6481C23v16Ev");}
void  S6481C2 ::v17(){vfunc_called(this, "_ZN7S6481C23v17Ev");}
void  S6481C2 ::v18(){vfunc_called(this, "_ZN7S6481C23v18Ev");}
void  S6481C2 ::v19(){vfunc_called(this, "_ZN7S6481C23v19Ev");}
void  S6481C2 ::v20(){vfunc_called(this, "_ZN7S6481C23v20Ev");}
void  S6481C2 ::v21(){vfunc_called(this, "_ZN7S6481C23v21Ev");}
void  S6481C2 ::v22(){vfunc_called(this, "_ZN7S6481C23v22Ev");}
void  S6481C2 ::v23(){vfunc_called(this, "_ZN7S6481C23v23Ev");}
void  S6481C2 ::v24(){vfunc_called(this, "_ZN7S6481C23v24Ev");}
void  S6481C2 ::v25(){vfunc_called(this, "_ZN7S6481C23v25Ev");}
void  S6481C2 ::v26(){vfunc_called(this, "_ZN7S6481C23v26Ev");}
void  S6481C2 ::v27(){vfunc_called(this, "_ZN7S6481C23v27Ev");}
S6481C2 ::S6481C2(){ note_ctor("S6481C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6481C2C1Ev();
extern void _ZN7S6481C2D1Ev();
Name_Map name_map_S6481C2[] = {
  NSPAIR(_ZN7S6481C2C1Ev),
  NSPAIR(_ZN7S6481C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6481C2[];
extern void _ZN7S6481C2D1Ev();
extern void _ZN7S6481C2D0Ev();
extern void _ZN7S6481C23v14Ev();
extern void _ZN7S6481C23v15Ev();
extern void _ZN7S6481C23v16Ev();
extern void _ZN7S6481C23v17Ev();
extern void _ZN7S6481C23v18Ev();
extern void _ZN7S6481C23v19Ev();
extern void _ZN7S6481C23v20Ev();
extern void _ZN7S6481C23v21Ev();
extern void _ZN7S6481C23v22Ev();
extern void _ZN7S6481C23v23Ev();
extern void _ZN7S6481C23v24Ev();
extern void _ZN7S6481C23v25Ev();
extern void _ZN7S6481C23v26Ev();
extern void _ZN7S6481C23v27Ev();
static  VTBL_ENTRY vtc_S6481C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6481C2[0]),
  (VTBL_ENTRY)&_ZN7S6481C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6481C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6481C2[];
extern  VTBL_ENTRY _ZTV7S6481C2[];
Class_Descriptor cd_S6481C2 = {  "S6481C2", // class name
  0,0,//no base classes
  &(vtc_S6481C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6481C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6481C2),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  S6481C1  : S6481C2 {
  int s6481c1f0[2];
  void *s6481c1f1;
  ::S3618C13_nt s6481c1f2;
  void *s6481c1f3;
  virtual  ~S6481C1(); // _ZN7S6481C1D1Ev
  virtual void  v1(); // _ZN7S6481C12v1Ev
  virtual void  v2(); // _ZN7S6481C12v2Ev
  virtual void  v3(); // _ZN7S6481C12v3Ev
  virtual void  v4(); // _ZN7S6481C12v4Ev
  virtual void  v5(); // _ZN7S6481C12v5Ev
  virtual void  v6(); // _ZN7S6481C12v6Ev
  virtual void  v7(); // _ZN7S6481C12v7Ev
  virtual void  v8(); // _ZN7S6481C12v8Ev
  virtual void  v9(); // _ZN7S6481C12v9Ev
  virtual void  v10(); // _ZN7S6481C13v10Ev
  virtual void  v11(); // _ZN7S6481C13v11Ev
  virtual void  v12(); // _ZN7S6481C13v12Ev
  virtual void  v13(); // _ZN7S6481C13v13Ev
  S6481C1(); // tgen
};
//SIG(1 S6481C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi[2] Fp FC3{ m FC4{ Fl[4]}} Fp}


 S6481C1 ::~S6481C1(){ note_dtor("S6481C1", this);}
void  S6481C1 ::v1(){vfunc_called(this, "_ZN7S6481C12v1Ev");}
void  S6481C1 ::v2(){vfunc_called(this, "_ZN7S6481C12v2Ev");}
void  S6481C1 ::v3(){vfunc_called(this, "_ZN7S6481C12v3Ev");}
void  S6481C1 ::v4(){vfunc_called(this, "_ZN7S6481C12v4Ev");}
void  S6481C1 ::v5(){vfunc_called(this, "_ZN7S6481C12v5Ev");}
void  S6481C1 ::v6(){vfunc_called(this, "_ZN7S6481C12v6Ev");}
void  S6481C1 ::v7(){vfunc_called(this, "_ZN7S6481C12v7Ev");}
void  S6481C1 ::v8(){vfunc_called(this, "_ZN7S6481C12v8Ev");}
void  S6481C1 ::v9(){vfunc_called(this, "_ZN7S6481C12v9Ev");}
void  S6481C1 ::v10(){vfunc_called(this, "_ZN7S6481C13v10Ev");}
void  S6481C1 ::v11(){vfunc_called(this, "_ZN7S6481C13v11Ev");}
void  S6481C1 ::v12(){vfunc_called(this, "_ZN7S6481C13v12Ev");}
void  S6481C1 ::v13(){vfunc_called(this, "_ZN7S6481C13v13Ev");}
S6481C1 ::S6481C1(){ note_ctor("S6481C1", this);} // tgen

static void Test_S6481C1()
{
  extern Class_Descriptor cd_S6481C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S6481C1, buf);
    S6481C1 *dp, &lv = *(dp=new (buf) S6481C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S6481C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6481C1)");
    check_base_class_offset(lv, (S6481C2*), 0, "S6481C1");
    check_field_offset(lv, s6481c1f0, ABISELECT(16,12), "S6481C1.s6481c1f0");
    check_field_offset(lv, s6481c1f1, ABISELECT(24,20), "S6481C1.s6481c1f1");
    check_field_offset(lv, s6481c1f2, ABISELECT(32,24), "S6481C1.s6481c1f2");
    check_field_offset(lv, s6481c1f3, ABISELECT(64,40), "S6481C1.s6481c1f3");
    test_class_info(&lv, &cd_S6481C1);
    dp->~S6481C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6481C1(Test_S6481C1, "S6481C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S6481C1C1Ev();
extern void _ZN7S6481C1D1Ev();
Name_Map name_map_S6481C1[] = {
  NSPAIR(_ZN7S6481C1C1Ev),
  NSPAIR(_ZN7S6481C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6481C2;
extern VTBL_ENTRY _ZTI7S6481C2[];
extern  VTBL_ENTRY _ZTV7S6481C2[];
static Base_Class bases_S6481C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6481C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6481C1[];
extern void _ZN7S6481C1D1Ev();
extern void _ZN7S6481C1D0Ev();
extern void _ZN7S6481C23v14Ev();
extern void _ZN7S6481C23v15Ev();
extern void _ZN7S6481C23v16Ev();
extern void _ZN7S6481C23v17Ev();
extern void _ZN7S6481C23v18Ev();
extern void _ZN7S6481C23v19Ev();
extern void _ZN7S6481C23v20Ev();
extern void _ZN7S6481C23v21Ev();
extern void _ZN7S6481C23v22Ev();
extern void _ZN7S6481C23v23Ev();
extern void _ZN7S6481C23v24Ev();
extern void _ZN7S6481C23v25Ev();
extern void _ZN7S6481C23v26Ev();
extern void _ZN7S6481C23v27Ev();
extern void _ZN7S6481C12v1Ev();
extern void _ZN7S6481C12v2Ev();
extern void _ZN7S6481C12v3Ev();
extern void _ZN7S6481C12v4Ev();
extern void _ZN7S6481C12v5Ev();
extern void _ZN7S6481C12v6Ev();
extern void _ZN7S6481C12v7Ev();
extern void _ZN7S6481C12v8Ev();
extern void _ZN7S6481C12v9Ev();
extern void _ZN7S6481C13v10Ev();
extern void _ZN7S6481C13v11Ev();
extern void _ZN7S6481C13v12Ev();
extern void _ZN7S6481C13v13Ev();
static  VTBL_ENTRY vtc_S6481C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6481C1[0]),
  (VTBL_ENTRY)&_ZN7S6481C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6481C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6481C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6481C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6481C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6481C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6481C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6481C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6481C1[];
extern  VTBL_ENTRY _ZTV7S6481C1[];
Class_Descriptor cd_S6481C1 = {  "S6481C1", // class name
  bases_S6481C1, 1,
  &(vtc_S6481C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S6481C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6481C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2869C2  : S19894C34 {
  ::S9526C11_nt s2869c2f0;
  virtual  ~S2869C2(); // _ZN7S2869C2D1Ev
  virtual void  v11(); // _ZN7S2869C23v11Ev
  virtual void  v12(); // _ZN7S2869C23v12Ev
  virtual void  v13(); // _ZN7S2869C23v13Ev
  virtual void  v14(); // _ZN7S2869C23v14Ev
  virtual void  v15(); // _ZN7S2869C23v15Ev
  virtual void  v16(); // _ZN7S2869C23v16Ev
  virtual void  v17(); // _ZN7S2869C23v17Ev
  virtual void  v18(); // _ZN7S2869C23v18Ev
  virtual void  v19(); // _ZN7S2869C23v19Ev
  virtual void  v20(); // _ZN7S2869C23v20Ev
  virtual void  v21(); // _ZN7S2869C23v21Ev
  virtual void  v22(); // _ZN7S2869C23v22Ev
  virtual void  v23(); // _ZN7S2869C23v23Ev
  virtual void  v24(); // _ZN7S2869C23v24Ev
  virtual void  v25(); // _ZN7S2869C23v25Ev
  virtual void  v26(); // _ZN7S2869C23v26Ev
  virtual void  v27(); // _ZN7S2869C23v27Ev
  virtual void  v28(); // _ZN7S2869C23v28Ev
  virtual void  v29(); // _ZN7S2869C23v29Ev
  S2869C2(); // tgen
};
//SIG(-1 S2869C2) C1{ BC2{ m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC3{ m Fp Fi FC2}}


 S2869C2 ::~S2869C2(){ note_dtor("S2869C2", this);}
void  S2869C2 ::v11(){vfunc_called(this, "_ZN7S2869C23v11Ev");}
void  S2869C2 ::v12(){vfunc_called(this, "_ZN7S2869C23v12Ev");}
void  S2869C2 ::v13(){vfunc_called(this, "_ZN7S2869C23v13Ev");}
void  S2869C2 ::v14(){vfunc_called(this, "_ZN7S2869C23v14Ev");}
void  S2869C2 ::v15(){vfunc_called(this, "_ZN7S2869C23v15Ev");}
void  S2869C2 ::v16(){vfunc_called(this, "_ZN7S2869C23v16Ev");}
void  S2869C2 ::v17(){vfunc_called(this, "_ZN7S2869C23v17Ev");}
void  S2869C2 ::v18(){vfunc_called(this, "_ZN7S2869C23v18Ev");}
void  S2869C2 ::v19(){vfunc_called(this, "_ZN7S2869C23v19Ev");}
void  S2869C2 ::v20(){vfunc_called(this, "_ZN7S2869C23v20Ev");}
void  S2869C2 ::v21(){vfunc_called(this, "_ZN7S2869C23v21Ev");}
void  S2869C2 ::v22(){vfunc_called(this, "_ZN7S2869C23v22Ev");}
void  S2869C2 ::v23(){vfunc_called(this, "_ZN7S2869C23v23Ev");}
void  S2869C2 ::v24(){vfunc_called(this, "_ZN7S2869C23v24Ev");}
void  S2869C2 ::v25(){vfunc_called(this, "_ZN7S2869C23v25Ev");}
void  S2869C2 ::v26(){vfunc_called(this, "_ZN7S2869C23v26Ev");}
void  S2869C2 ::v27(){vfunc_called(this, "_ZN7S2869C23v27Ev");}
void  S2869C2 ::v28(){vfunc_called(this, "_ZN7S2869C23v28Ev");}
void  S2869C2 ::v29(){vfunc_called(this, "_ZN7S2869C23v29Ev");}
S2869C2 ::S2869C2(){ note_ctor("S2869C2", this);} // tgen

static void Test_S2869C2()
{
  extern Class_Descriptor cd_S2869C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2869C2, buf);
    S2869C2 *dp, &lv = *(dp=new (buf) S2869C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2869C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2869C2)");
    check_base_class_offset(lv, (S19894C34*), 0, "S2869C2");
    check_field_offset(lv, s2869c2f0, ABISELECT(8,4), "S2869C2.s2869c2f0");
    test_class_info(&lv, &cd_S2869C2);
    dp->~S2869C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2869C2(Test_S2869C2, "S2869C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2869C2C1Ev();
extern void _ZN7S2869C2D1Ev();
Name_Map name_map_S2869C2[] = {
  NSPAIR(_ZN7S2869C2C1Ev),
  NSPAIR(_ZN7S2869C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S2869C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2869C2[];
extern void _ZN7S2869C2D1Ev();
extern void _ZN7S2869C2D0Ev();
extern void _ZN7S2869C23v11Ev();
extern void _ZN7S2869C23v12Ev();
extern void _ZN7S2869C23v13Ev();
extern void _ZN7S2869C23v14Ev();
extern void _ZN7S2869C23v15Ev();
extern void _ZN7S2869C23v16Ev();
extern void _ZN7S2869C23v17Ev();
extern void _ZN7S2869C23v18Ev();
extern void _ZN7S2869C23v19Ev();
extern void _ZN7S2869C23v20Ev();
extern void _ZN7S2869C23v21Ev();
extern void _ZN7S2869C23v22Ev();
extern void _ZN7S2869C23v23Ev();
extern void _ZN7S2869C23v24Ev();
extern void _ZN7S2869C23v25Ev();
extern void _ZN7S2869C23v26Ev();
extern void _ZN7S2869C23v27Ev();
extern void _ZN7S2869C23v28Ev();
extern void _ZN7S2869C23v29Ev();
static  VTBL_ENTRY vtc_S2869C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2869C2[0]),
  (VTBL_ENTRY)&_ZN7S2869C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2869C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v26Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v27Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v28Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v29Ev,
};
extern VTBL_ENTRY _ZTI7S2869C2[];
extern  VTBL_ENTRY _ZTV7S2869C2[];
Class_Descriptor cd_S2869C2 = {  "S2869C2", // class name
  bases_S2869C2, 1,
  &(vtc_S2869C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2869C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2869C2),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2869C1  : S2869C2 {
  virtual  ~S2869C1(); // _ZN7S2869C1D1Ev
  virtual void  v1(); // _ZN7S2869C12v1Ev
  virtual void  v2(); // _ZN7S2869C12v2Ev
  virtual void  v3(); // _ZN7S2869C12v3Ev
  virtual void  v4(); // _ZN7S2869C12v4Ev
  virtual void  v5(); // _ZN7S2869C12v5Ev
  virtual void  v6(); // _ZN7S2869C12v6Ev
  virtual void  v7(); // _ZN7S2869C12v7Ev
  virtual void  v8(); // _ZN7S2869C12v8Ev
  virtual void  v9(); // _ZN7S2869C12v9Ev
  virtual void  v10(); // _ZN7S2869C13v10Ev
  S2869C1(); // tgen
};
//SIG(1 S2869C1) C1{ BC2{ BC3{ m} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 FC4{ m Fp Fi FC3}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S2869C1 ::~S2869C1(){ note_dtor("S2869C1", this);}
void  S2869C1 ::v1(){vfunc_called(this, "_ZN7S2869C12v1Ev");}
void  S2869C1 ::v2(){vfunc_called(this, "_ZN7S2869C12v2Ev");}
void  S2869C1 ::v3(){vfunc_called(this, "_ZN7S2869C12v3Ev");}
void  S2869C1 ::v4(){vfunc_called(this, "_ZN7S2869C12v4Ev");}
void  S2869C1 ::v5(){vfunc_called(this, "_ZN7S2869C12v5Ev");}
void  S2869C1 ::v6(){vfunc_called(this, "_ZN7S2869C12v6Ev");}
void  S2869C1 ::v7(){vfunc_called(this, "_ZN7S2869C12v7Ev");}
void  S2869C1 ::v8(){vfunc_called(this, "_ZN7S2869C12v8Ev");}
void  S2869C1 ::v9(){vfunc_called(this, "_ZN7S2869C12v9Ev");}
void  S2869C1 ::v10(){vfunc_called(this, "_ZN7S2869C13v10Ev");}
S2869C1 ::S2869C1(){ note_ctor("S2869C1", this);} // tgen

static void Test_S2869C1()
{
  extern Class_Descriptor cd_S2869C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2869C1, buf);
    S2869C1 *dp, &lv = *(dp=new (buf) S2869C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2869C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2869C1)");
    check_base_class_offset(lv, (S19894C34*)(S2869C2*), 0, "S2869C1");
    check_base_class_offset(lv, (S2869C2*), 0, "S2869C1");
    test_class_info(&lv, &cd_S2869C1);
    dp->~S2869C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2869C1(Test_S2869C1, "S2869C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2869C1C1Ev();
extern void _ZN7S2869C1D1Ev();
Name_Map name_map_S2869C1[] = {
  NSPAIR(_ZN7S2869C1C1Ev),
  NSPAIR(_ZN7S2869C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S2869C2;
extern VTBL_ENTRY _ZTI7S2869C2[];
extern  VTBL_ENTRY _ZTV7S2869C2[];
static Base_Class bases_S2869C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2869C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2869C1[];
extern void _ZN7S2869C1D1Ev();
extern void _ZN7S2869C1D0Ev();
extern void _ZN7S2869C23v11Ev();
extern void _ZN7S2869C23v12Ev();
extern void _ZN7S2869C23v13Ev();
extern void _ZN7S2869C23v14Ev();
extern void _ZN7S2869C23v15Ev();
extern void _ZN7S2869C23v16Ev();
extern void _ZN7S2869C23v17Ev();
extern void _ZN7S2869C23v18Ev();
extern void _ZN7S2869C23v19Ev();
extern void _ZN7S2869C23v20Ev();
extern void _ZN7S2869C23v21Ev();
extern void _ZN7S2869C23v22Ev();
extern void _ZN7S2869C23v23Ev();
extern void _ZN7S2869C23v24Ev();
extern void _ZN7S2869C23v25Ev();
extern void _ZN7S2869C23v26Ev();
extern void _ZN7S2869C23v27Ev();
extern void _ZN7S2869C23v28Ev();
extern void _ZN7S2869C23v29Ev();
extern void _ZN7S2869C12v1Ev();
extern void _ZN7S2869C12v2Ev();
extern void _ZN7S2869C12v3Ev();
extern void _ZN7S2869C12v4Ev();
extern void _ZN7S2869C12v5Ev();
extern void _ZN7S2869C12v6Ev();
extern void _ZN7S2869C12v7Ev();
extern void _ZN7S2869C12v8Ev();
extern void _ZN7S2869C12v9Ev();
extern void _ZN7S2869C13v10Ev();
static  VTBL_ENTRY vtc_S2869C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2869C1[0]),
  (VTBL_ENTRY)&_ZN7S2869C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2869C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v26Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v27Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v28Ev,
  (VTBL_ENTRY)&_ZN7S2869C23v29Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2869C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2869C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S2869C1[];
extern  VTBL_ENTRY _ZTV7S2869C1[];
Class_Descriptor cd_S2869C1 = {  "S2869C1", // class name
  bases_S2869C1, 2,
  &(vtc_S2869C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2869C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2869C1),33, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6483C2  {
  int s6483c2f0[2];
  virtual  ~S6483C2(); // _ZN7S6483C2D1Ev
  virtual void  v14(); // _ZN7S6483C23v14Ev
  virtual void  v15(); // _ZN7S6483C23v15Ev
  virtual void  v16(); // _ZN7S6483C23v16Ev
  virtual void  v17(); // _ZN7S6483C23v17Ev
  virtual void  v18(); // _ZN7S6483C23v18Ev
  virtual void  v19(); // _ZN7S6483C23v19Ev
  virtual void  v20(); // _ZN7S6483C23v20Ev
  virtual void  v21(); // _ZN7S6483C23v21Ev
  virtual void  v22(); // _ZN7S6483C23v22Ev
  virtual void  v23(); // _ZN7S6483C23v23Ev
  virtual void  v24(); // _ZN7S6483C23v24Ev
  virtual void  v25(); // _ZN7S6483C23v25Ev
  virtual void  v26(); // _ZN7S6483C23v26Ev
  virtual void  v27(); // _ZN7S6483C23v27Ev
  S6483C2(); // tgen
};
//SIG(-1 S6483C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S6483C2 ::~S6483C2(){ note_dtor("S6483C2", this);}
void  S6483C2 ::v14(){vfunc_called(this, "_ZN7S6483C23v14Ev");}
void  S6483C2 ::v15(){vfunc_called(this, "_ZN7S6483C23v15Ev");}
void  S6483C2 ::v16(){vfunc_called(this, "_ZN7S6483C23v16Ev");}
void  S6483C2 ::v17(){vfunc_called(this, "_ZN7S6483C23v17Ev");}
void  S6483C2 ::v18(){vfunc_called(this, "_ZN7S6483C23v18Ev");}
void  S6483C2 ::v19(){vfunc_called(this, "_ZN7S6483C23v19Ev");}
void  S6483C2 ::v20(){vfunc_called(this, "_ZN7S6483C23v20Ev");}
void  S6483C2 ::v21(){vfunc_called(this, "_ZN7S6483C23v21Ev");}
void  S6483C2 ::v22(){vfunc_called(this, "_ZN7S6483C23v22Ev");}
void  S6483C2 ::v23(){vfunc_called(this, "_ZN7S6483C23v23Ev");}
void  S6483C2 ::v24(){vfunc_called(this, "_ZN7S6483C23v24Ev");}
void  S6483C2 ::v25(){vfunc_called(this, "_ZN7S6483C23v25Ev");}
void  S6483C2 ::v26(){vfunc_called(this, "_ZN7S6483C23v26Ev");}
void  S6483C2 ::v27(){vfunc_called(this, "_ZN7S6483C23v27Ev");}
S6483C2 ::S6483C2(){ note_ctor("S6483C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6483C2C1Ev();
extern void _ZN7S6483C2D1Ev();
Name_Map name_map_S6483C2[] = {
  NSPAIR(_ZN7S6483C2C1Ev),
  NSPAIR(_ZN7S6483C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6483C2[];
extern void _ZN7S6483C2D1Ev();
extern void _ZN7S6483C2D0Ev();
extern void _ZN7S6483C23v14Ev();
extern void _ZN7S6483C23v15Ev();
extern void _ZN7S6483C23v16Ev();
extern void _ZN7S6483C23v17Ev();
extern void _ZN7S6483C23v18Ev();
extern void _ZN7S6483C23v19Ev();
extern void _ZN7S6483C23v20Ev();
extern void _ZN7S6483C23v21Ev();
extern void _ZN7S6483C23v22Ev();
extern void _ZN7S6483C23v23Ev();
extern void _ZN7S6483C23v24Ev();
extern void _ZN7S6483C23v25Ev();
extern void _ZN7S6483C23v26Ev();
extern void _ZN7S6483C23v27Ev();
static  VTBL_ENTRY vtc_S6483C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6483C2[0]),
  (VTBL_ENTRY)&_ZN7S6483C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6483C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6483C2[];
extern  VTBL_ENTRY _ZTV7S6483C2[];
Class_Descriptor cd_S6483C2 = {  "S6483C2", // class name
  0,0,//no base classes
  &(vtc_S6483C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6483C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6483C2),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  S6483C1  : S6483C2 {
  int s6483c1f0[2];
  void *s6483c1f1;
  ::S3620C13_nt s6483c1f2;
  void *s6483c1f3;
  virtual  ~S6483C1(); // _ZN7S6483C1D1Ev
  virtual void  v1(); // _ZN7S6483C12v1Ev
  virtual void  v2(); // _ZN7S6483C12v2Ev
  virtual void  v3(); // _ZN7S6483C12v3Ev
  virtual void  v4(); // _ZN7S6483C12v4Ev
  virtual void  v5(); // _ZN7S6483C12v5Ev
  virtual void  v6(); // _ZN7S6483C12v6Ev
  virtual void  v7(); // _ZN7S6483C12v7Ev
  virtual void  v8(); // _ZN7S6483C12v8Ev
  virtual void  v9(); // _ZN7S6483C12v9Ev
  virtual void  v10(); // _ZN7S6483C13v10Ev
  virtual void  v11(); // _ZN7S6483C13v11Ev
  virtual void  v12(); // _ZN7S6483C13v12Ev
  virtual void  v13(); // _ZN7S6483C13v13Ev
  S6483C1(); // tgen
};
//SIG(1 S6483C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi[2] Fp FC3{ m FL[4]} Fp}


 S6483C1 ::~S6483C1(){ note_dtor("S6483C1", this);}
void  S6483C1 ::v1(){vfunc_called(this, "_ZN7S6483C12v1Ev");}
void  S6483C1 ::v2(){vfunc_called(this, "_ZN7S6483C12v2Ev");}
void  S6483C1 ::v3(){vfunc_called(this, "_ZN7S6483C12v3Ev");}
void  S6483C1 ::v4(){vfunc_called(this, "_ZN7S6483C12v4Ev");}
void  S6483C1 ::v5(){vfunc_called(this, "_ZN7S6483C12v5Ev");}
void  S6483C1 ::v6(){vfunc_called(this, "_ZN7S6483C12v6Ev");}
void  S6483C1 ::v7(){vfunc_called(this, "_ZN7S6483C12v7Ev");}
void  S6483C1 ::v8(){vfunc_called(this, "_ZN7S6483C12v8Ev");}
void  S6483C1 ::v9(){vfunc_called(this, "_ZN7S6483C12v9Ev");}
void  S6483C1 ::v10(){vfunc_called(this, "_ZN7S6483C13v10Ev");}
void  S6483C1 ::v11(){vfunc_called(this, "_ZN7S6483C13v11Ev");}
void  S6483C1 ::v12(){vfunc_called(this, "_ZN7S6483C13v12Ev");}
void  S6483C1 ::v13(){vfunc_called(this, "_ZN7S6483C13v13Ev");}
S6483C1 ::S6483C1(){ note_ctor("S6483C1", this);} // tgen

static void Test_S6483C1()
{
  extern Class_Descriptor cd_S6483C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S6483C1, buf);
    S6483C1 *dp, &lv = *(dp=new (buf) S6483C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S6483C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6483C1)");
    check_base_class_offset(lv, (S6483C2*), 0, "S6483C1");
    check_field_offset(lv, s6483c1f0, ABISELECT(16,12), "S6483C1.s6483c1f0");
    check_field_offset(lv, s6483c1f1, ABISELECT(24,20), "S6483C1.s6483c1f1");
    check_field_offset(lv, s6483c1f2, ABISELECT(32,24), "S6483C1.s6483c1f2");
    check_field_offset(lv, s6483c1f3, ABISELECT(64,56), "S6483C1.s6483c1f3");
    test_class_info(&lv, &cd_S6483C1);
    dp->~S6483C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6483C1(Test_S6483C1, "S6483C1", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S6483C1C1Ev();
extern void _ZN7S6483C1D1Ev();
Name_Map name_map_S6483C1[] = {
  NSPAIR(_ZN7S6483C1C1Ev),
  NSPAIR(_ZN7S6483C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6483C2;
extern VTBL_ENTRY _ZTI7S6483C2[];
extern  VTBL_ENTRY _ZTV7S6483C2[];
static Base_Class bases_S6483C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6483C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6483C1[];
extern void _ZN7S6483C1D1Ev();
extern void _ZN7S6483C1D0Ev();
extern void _ZN7S6483C23v14Ev();
extern void _ZN7S6483C23v15Ev();
extern void _ZN7S6483C23v16Ev();
extern void _ZN7S6483C23v17Ev();
extern void _ZN7S6483C23v18Ev();
extern void _ZN7S6483C23v19Ev();
extern void _ZN7S6483C23v20Ev();
extern void _ZN7S6483C23v21Ev();
extern void _ZN7S6483C23v22Ev();
extern void _ZN7S6483C23v23Ev();
extern void _ZN7S6483C23v24Ev();
extern void _ZN7S6483C23v25Ev();
extern void _ZN7S6483C23v26Ev();
extern void _ZN7S6483C23v27Ev();
extern void _ZN7S6483C12v1Ev();
extern void _ZN7S6483C12v2Ev();
extern void _ZN7S6483C12v3Ev();
extern void _ZN7S6483C12v4Ev();
extern void _ZN7S6483C12v5Ev();
extern void _ZN7S6483C12v6Ev();
extern void _ZN7S6483C12v7Ev();
extern void _ZN7S6483C12v8Ev();
extern void _ZN7S6483C12v9Ev();
extern void _ZN7S6483C13v10Ev();
extern void _ZN7S6483C13v11Ev();
extern void _ZN7S6483C13v12Ev();
extern void _ZN7S6483C13v13Ev();
static  VTBL_ENTRY vtc_S6483C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6483C1[0]),
  (VTBL_ENTRY)&_ZN7S6483C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6483C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6483C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6483C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6483C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6483C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6483C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6483C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S6483C1[];
extern  VTBL_ENTRY _ZTV7S6483C1[];
Class_Descriptor cd_S6483C1 = {  "S6483C1", // class name
  bases_S6483C1, 1,
  &(vtc_S6483C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S6483C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6483C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2421C4  {
  ::S5757C13_nt s2421c4f0;
  unsigned int s2421c4f1:1;
  virtual  ~S2421C4(); // _ZN7S2421C4D1Ev
  virtual void  v7(); // _ZN7S2421C42v7Ev
  virtual void  v8(); // _ZN7S2421C42v8Ev
  virtual void  v9(); // _ZN7S2421C42v9Ev
  virtual void  v10(); // _ZN7S2421C43v10Ev
  virtual void  v11(); // _ZN7S2421C43v11Ev
  virtual void  v12(); // _ZN7S2421C43v12Ev
  virtual void  v13(); // _ZN7S2421C43v13Ev
  S2421C4(); // tgen
};
//SIG(-1 S2421C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S2421C4 ::~S2421C4(){ note_dtor("S2421C4", this);}
void  S2421C4 ::v7(){vfunc_called(this, "_ZN7S2421C42v7Ev");}
void  S2421C4 ::v8(){vfunc_called(this, "_ZN7S2421C42v8Ev");}
void  S2421C4 ::v9(){vfunc_called(this, "_ZN7S2421C42v9Ev");}
void  S2421C4 ::v10(){vfunc_called(this, "_ZN7S2421C43v10Ev");}
void  S2421C4 ::v11(){vfunc_called(this, "_ZN7S2421C43v11Ev");}
void  S2421C4 ::v12(){vfunc_called(this, "_ZN7S2421C43v12Ev");}
void  S2421C4 ::v13(){vfunc_called(this, "_ZN7S2421C43v13Ev");}
S2421C4 ::S2421C4(){ note_ctor("S2421C4", this);} // tgen

static void Test_S2421C4()
{
  extern Class_Descriptor cd_S2421C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S2421C4, buf);
    S2421C4 *dp, &lv = *(dp=new (buf) S2421C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S2421C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2421C4)");
    check_field_offset(lv, s2421c4f0, ABISELECT(8,4), "S2421C4.s2421c4f0");
    set_bf_and_test(lv, s2421c4f1, ABISELECT(32,16), 0, 1, 1, "S2421C4");
    test_class_info(&lv, &cd_S2421C4);
    dp->~S2421C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2421C4(Test_S2421C4, "S2421C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S2421C4C1Ev();
extern void _ZN7S2421C4D1Ev();
Name_Map name_map_S2421C4[] = {
  NSPAIR(_ZN7S2421C4C1Ev),
  NSPAIR(_ZN7S2421C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2421C4[];
extern void _ZN7S2421C4D1Ev();
extern void _ZN7S2421C4D0Ev();
extern void _ZN7S2421C42v7Ev();
extern void _ZN7S2421C42v8Ev();
extern void _ZN7S2421C42v9Ev();
extern void _ZN7S2421C43v10Ev();
extern void _ZN7S2421C43v11Ev();
extern void _ZN7S2421C43v12Ev();
extern void _ZN7S2421C43v13Ev();
static  VTBL_ENTRY vtc_S2421C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2421C4[0]),
  (VTBL_ENTRY)&_ZN7S2421C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2421C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v13Ev,
};
extern VTBL_ENTRY _ZTI7S2421C4[];
extern  VTBL_ENTRY _ZTV7S2421C4[];
Class_Descriptor cd_S2421C4 = {  "S2421C4", // class name
  0,0,//no base classes
  &(vtc_S2421C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S2421C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2421C4),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  S2421C3  : S2421C4 {
  ::S19894C6_nt s2421c3f0;
  virtual  ~S2421C3(); // _ZN7S2421C3D1Ev
  virtual void  v14(); // _ZN7S2421C33v14Ev
  virtual void  v15(); // _ZN7S2421C33v15Ev
  S2421C3(); // tgen
};
//SIG(-1 S2421C3) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} vd v1 v2 FC4{ m Fp}}


 S2421C3 ::~S2421C3(){ note_dtor("S2421C3", this);}
void  S2421C3 ::v14(){vfunc_called(this, "_ZN7S2421C33v14Ev");}
void  S2421C3 ::v15(){vfunc_called(this, "_ZN7S2421C33v15Ev");}
S2421C3 ::S2421C3(){ note_ctor("S2421C3", this);} // tgen

static void Test_S2421C3()
{
  extern Class_Descriptor cd_S2421C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S2421C3, buf);
    S2421C3 *dp, &lv = *(dp=new (buf) S2421C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S2421C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2421C3)");
    check_base_class_offset(lv, (S2421C4*), 0, "S2421C3");
    check_field_offset(lv, s2421c3f0, ABISELECT(40,20), "S2421C3.s2421c3f0");
    test_class_info(&lv, &cd_S2421C3);
    dp->~S2421C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2421C3(Test_S2421C3, "S2421C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S2421C3C1Ev();
extern void _ZN7S2421C3D1Ev();
Name_Map name_map_S2421C3[] = {
  NSPAIR(_ZN7S2421C3C1Ev),
  NSPAIR(_ZN7S2421C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2421C4;
extern VTBL_ENTRY _ZTI7S2421C4[];
extern  VTBL_ENTRY _ZTV7S2421C4[];
static Base_Class bases_S2421C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2421C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2421C3[];
extern void _ZN7S2421C3D1Ev();
extern void _ZN7S2421C3D0Ev();
extern void _ZN7S2421C42v7Ev();
extern void _ZN7S2421C42v8Ev();
extern void _ZN7S2421C42v9Ev();
extern void _ZN7S2421C43v10Ev();
extern void _ZN7S2421C43v11Ev();
extern void _ZN7S2421C43v12Ev();
extern void _ZN7S2421C43v13Ev();
extern void _ZN7S2421C33v14Ev();
extern void _ZN7S2421C33v15Ev();
static  VTBL_ENTRY vtc_S2421C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2421C3[0]),
  (VTBL_ENTRY)&_ZN7S2421C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2421C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2421C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2421C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2421C3[];
extern  VTBL_ENTRY _ZTV7S2421C3[];
Class_Descriptor cd_S2421C3 = {  "S2421C3", // class name
  bases_S2421C3, 1,
  &(vtc_S2421C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S2421C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2421C3),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2421C2  : S2421C3 {
  int s2421c2f0;
  void *s2421c2f1[2];
  int s2421c2f2[5];
  char s2421c2f3;
  virtual void  v16(); // _ZN7S2421C23v16Ev
  virtual void  v17(); // _ZN7S2421C23v17Ev
  virtual void  v18(); // _ZN7S2421C23v18Ev
  virtual void  v19(); // _ZN7S2421C23v19Ev
  virtual void  v20(); // _ZN7S2421C23v20Ev
  virtual void  v21(); // _ZN7S2421C23v21Ev
  ~S2421C2(); // tgen
  S2421C2(); // tgen
};
//SIG(-1 S2421C2) C1{ BC2{ BC3{ vd v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[3]} Fi:1} vd v14 v15 FC5{ m Fp}} v1 v2 v3 v4 v5 v6 Fi Fp[2] Fi[5] Fc}


void  S2421C2 ::v16(){vfunc_called(this, "_ZN7S2421C23v16Ev");}
void  S2421C2 ::v17(){vfunc_called(this, "_ZN7S2421C23v17Ev");}
void  S2421C2 ::v18(){vfunc_called(this, "_ZN7S2421C23v18Ev");}
void  S2421C2 ::v19(){vfunc_called(this, "_ZN7S2421C23v19Ev");}
void  S2421C2 ::v20(){vfunc_called(this, "_ZN7S2421C23v20Ev");}
void  S2421C2 ::v21(){vfunc_called(this, "_ZN7S2421C23v21Ev");}
S2421C2 ::~S2421C2(){ note_dtor("S2421C2", this);} // tgen
S2421C2 ::S2421C2(){ note_ctor("S2421C2", this);} // tgen

static void Test_S2421C2()
{
  extern Class_Descriptor cd_S2421C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S2421C2, buf);
    S2421C2 *dp, &lv = *(dp=new (buf) S2421C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S2421C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2421C2)");
    check_base_class_offset(lv, (S2421C4*)(S2421C3*), 0, "S2421C2");
    check_base_class_offset(lv, (S2421C3*), 0, "S2421C2");
    check_field_offset(lv, s2421c2f0, ABISELECT(48,24), "S2421C2.s2421c2f0");
    check_field_offset(lv, s2421c2f1, ABISELECT(56,28), "S2421C2.s2421c2f1");
    check_field_offset(lv, s2421c2f2, ABISELECT(72,36), "S2421C2.s2421c2f2");
    check_field_offset(lv, s2421c2f3, ABISELECT(92,56), "S2421C2.s2421c2f3");
    test_class_info(&lv, &cd_S2421C2);
    dp->~S2421C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2421C2(Test_S2421C2, "S2421C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S2421C2C1Ev();
extern void _ZN7S2421C2D1Ev();
Name_Map name_map_S2421C2[] = {
  NSPAIR(_ZN7S2421C2C1Ev),
  NSPAIR(_ZN7S2421C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2421C4;
extern VTBL_ENTRY _ZTI7S2421C4[];
extern  VTBL_ENTRY _ZTV7S2421C4[];
extern Class_Descriptor cd_S2421C3;
extern VTBL_ENTRY _ZTI7S2421C3[];
extern  VTBL_ENTRY _ZTV7S2421C3[];
static Base_Class bases_S2421C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2421C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2421C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2421C2[];
extern void _ZN7S2421C2D1Ev();
extern void _ZN7S2421C2D0Ev();
extern void _ZN7S2421C42v7Ev();
extern void _ZN7S2421C42v8Ev();
extern void _ZN7S2421C42v9Ev();
extern void _ZN7S2421C43v10Ev();
extern void _ZN7S2421C43v11Ev();
extern void _ZN7S2421C43v12Ev();
extern void _ZN7S2421C43v13Ev();
extern void _ZN7S2421C33v14Ev();
extern void _ZN7S2421C33v15Ev();
extern void _ZN7S2421C23v16Ev();
extern void _ZN7S2421C23v17Ev();
extern void _ZN7S2421C23v18Ev();
extern void _ZN7S2421C23v19Ev();
extern void _ZN7S2421C23v20Ev();
extern void _ZN7S2421C23v21Ev();
static  VTBL_ENTRY vtc_S2421C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2421C2[0]),
  (VTBL_ENTRY)&_ZN7S2421C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2421C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2421C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2421C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v21Ev,
};
extern VTBL_ENTRY _ZTI7S2421C2[];
extern  VTBL_ENTRY _ZTV7S2421C2[];
Class_Descriptor cd_S2421C2 = {  "S2421C2", // class name
  bases_S2421C2, 2,
  &(vtc_S2421C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S2421C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2421C2),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  S2421C1  : S2421C2 {
  virtual void  v1(); // _ZN7S2421C12v1Ev
  virtual void  v2(); // _ZN7S2421C12v2Ev
  virtual void  v3(); // _ZN7S2421C12v3Ev
  virtual void  v4(); // _ZN7S2421C12v4Ev
  virtual void  v5(); // _ZN7S2421C12v5Ev
  virtual void  v6(); // _ZN7S2421C12v6Ev
  ~S2421C1(); // tgen
  S2421C1(); // tgen
};
//SIG(1 S2421C1) C1{ BC2{ BC3{ BC4{ vd v7 v8 v9 v10 v11 v12 v13 FC5{ m Fp[3]} Fi:1} vd v14 v15 FC6{ m Fp}} v16 v17 v18 v19 v20 v21 Fi Fp[2] Fi[5] Fc} v1 v2 v3 v4 v5 v6}


void  S2421C1 ::v1(){vfunc_called(this, "_ZN7S2421C12v1Ev");}
void  S2421C1 ::v2(){vfunc_called(this, "_ZN7S2421C12v2Ev");}
void  S2421C1 ::v3(){vfunc_called(this, "_ZN7S2421C12v3Ev");}
void  S2421C1 ::v4(){vfunc_called(this, "_ZN7S2421C12v4Ev");}
void  S2421C1 ::v5(){vfunc_called(this, "_ZN7S2421C12v5Ev");}
void  S2421C1 ::v6(){vfunc_called(this, "_ZN7S2421C12v6Ev");}
S2421C1 ::~S2421C1(){ note_dtor("S2421C1", this);} // tgen
S2421C1 ::S2421C1(){ note_ctor("S2421C1", this);} // tgen

static void Test_S2421C1()
{
  extern Class_Descriptor cd_S2421C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S2421C1, buf);
    S2421C1 *dp, &lv = *(dp=new (buf) S2421C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S2421C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2421C1)");
    check_base_class_offset(lv, (S2421C4*)(S2421C3*)(S2421C2*), 0, "S2421C1");
    check_base_class_offset(lv, (S2421C3*)(S2421C2*), 0, "S2421C1");
    check_base_class_offset(lv, (S2421C2*), 0, "S2421C1");
    test_class_info(&lv, &cd_S2421C1);
    dp->~S2421C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2421C1(Test_S2421C1, "S2421C1", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S2421C1C1Ev();
extern void _ZN7S2421C1D1Ev();
Name_Map name_map_S2421C1[] = {
  NSPAIR(_ZN7S2421C1C1Ev),
  NSPAIR(_ZN7S2421C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2421C4;
extern VTBL_ENTRY _ZTI7S2421C4[];
extern  VTBL_ENTRY _ZTV7S2421C4[];
extern Class_Descriptor cd_S2421C3;
extern VTBL_ENTRY _ZTI7S2421C3[];
extern  VTBL_ENTRY _ZTV7S2421C3[];
extern Class_Descriptor cd_S2421C2;
extern VTBL_ENTRY _ZTI7S2421C2[];
extern  VTBL_ENTRY _ZTV7S2421C2[];
static Base_Class bases_S2421C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2421C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2421C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2421C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2421C1[];
extern void _ZN7S2421C1D1Ev();
extern void _ZN7S2421C1D0Ev();
extern void _ZN7S2421C42v7Ev();
extern void _ZN7S2421C42v8Ev();
extern void _ZN7S2421C42v9Ev();
extern void _ZN7S2421C43v10Ev();
extern void _ZN7S2421C43v11Ev();
extern void _ZN7S2421C43v12Ev();
extern void _ZN7S2421C43v13Ev();
extern void _ZN7S2421C33v14Ev();
extern void _ZN7S2421C33v15Ev();
extern void _ZN7S2421C23v16Ev();
extern void _ZN7S2421C23v17Ev();
extern void _ZN7S2421C23v18Ev();
extern void _ZN7S2421C23v19Ev();
extern void _ZN7S2421C23v20Ev();
extern void _ZN7S2421C23v21Ev();
extern void _ZN7S2421C12v1Ev();
extern void _ZN7S2421C12v2Ev();
extern void _ZN7S2421C12v3Ev();
extern void _ZN7S2421C12v4Ev();
extern void _ZN7S2421C12v5Ev();
extern void _ZN7S2421C12v6Ev();
static  VTBL_ENTRY vtc_S2421C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2421C1[0]),
  (VTBL_ENTRY)&_ZN7S2421C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2421C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S2421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2421C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2421C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2421C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2421C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2421C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2421C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2421C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2421C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2421C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S2421C1[];
extern  VTBL_ENTRY _ZTV7S2421C1[];
Class_Descriptor cd_S2421C1 = {  "S2421C1", // class name
  bases_S2421C1, 3,
  &(vtc_S2421C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S2421C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2421C1),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  S20551C4  {
  void *s20551c4f0;
  virtual void  v6(); // _ZN8S20551C42v6Ev
  virtual void  v7(); // _ZN8S20551C42v7Ev
  ~S20551C4(); // tgen
  S20551C4(); // tgen
};
//SIG(-1 S20551C4) C1{ v1 v2 Fp}


void  S20551C4 ::v6(){vfunc_called(this, "_ZN8S20551C42v6Ev");}
void  S20551C4 ::v7(){vfunc_called(this, "_ZN8S20551C42v7Ev");}
S20551C4 ::~S20551C4(){ note_dtor("S20551C4", this);} // tgen
S20551C4 ::S20551C4(){ note_ctor("S20551C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20551C4C1Ev();
extern void _ZN8S20551C4D1Ev();
Name_Map name_map_S20551C4[] = {
  NSPAIR(_ZN8S20551C4C1Ev),
  NSPAIR(_ZN8S20551C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20551C4[];
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY vtc_S20551C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C4[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
Class_Descriptor cd_S20551C4 = {  "S20551C4", // class name
  0,0,//no base classes
  &(vtc_S20551C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20551C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20551C4),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  S20551C5  : virtual S20551C4 {
  virtual void  v8(); // _ZN8S20551C52v8Ev
  virtual void  v9(); // _ZN8S20551C52v9Ev
  virtual void  v10(); // _ZN8S20551C53v10Ev
  virtual void  v11(); // _ZN8S20551C53v11Ev
  virtual void  v12(); // _ZN8S20551C53v12Ev
  virtual void  v13(); // _ZN8S20551C53v13Ev
  ~S20551C5(); // tgen
  S20551C5(); // tgen
};
//SIG(-1 S20551C5) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S20551C5 ::v8(){vfunc_called(this, "_ZN8S20551C52v8Ev");}
void  S20551C5 ::v9(){vfunc_called(this, "_ZN8S20551C52v9Ev");}
void  S20551C5 ::v10(){vfunc_called(this, "_ZN8S20551C53v10Ev");}
void  S20551C5 ::v11(){vfunc_called(this, "_ZN8S20551C53v11Ev");}
void  S20551C5 ::v12(){vfunc_called(this, "_ZN8S20551C53v12Ev");}
void  S20551C5 ::v13(){vfunc_called(this, "_ZN8S20551C53v13Ev");}
S20551C5 ::~S20551C5(){ note_dtor("S20551C5", this);} // tgen
S20551C5 ::S20551C5(){ note_ctor("S20551C5", this);} // tgen

static void Test_S20551C5()
{
  extern Class_Descriptor cd_S20551C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20551C5, buf);
    S20551C5 *dp, &lv = *(dp=new (buf) S20551C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20551C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20551C5)");
    check_base_class_offset(lv, (S20551C4*), ABISELECT(8,4), "S20551C5");
    test_class_info(&lv, &cd_S20551C5);
    dp->~S20551C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20551C5(Test_S20551C5, "S20551C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20551C5C1Ev();
extern void _ZN8S20551C5D1Ev();
Name_Map name_map_S20551C5[] = {
  NSPAIR(_ZN8S20551C5C1Ev),
  NSPAIR(_ZN8S20551C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
static Base_Class bases_S20551C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20551C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20551C5[];
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY vtc_S20551C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20551C5[];
static  VTT_ENTRY vtt_S20551C5[] = {
  {&(_ZTV8S20551C5[3]),  3,15},
  {&(_ZTV8S20551C5[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S20551C5[];
extern  VTBL_ENTRY _ZTV8S20551C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C5[];
Class_Descriptor cd_S20551C5 = {  "S20551C5", // class name
  bases_S20551C5, 1,
  &(vtc_S20551C5[0]), // expected_vtbl_contents
  &(vtt_S20551C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20551C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20551C5),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20551C5),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  S20551C3  : S20551C4 , virtual S20551C5 {
  long double s20551c3f0;
  char s20551c3f1:8;
  void *s20551c3f2;
  virtual void  v14(); // _ZN8S20551C33v14Ev
  virtual void  v15(); // _ZN8S20551C33v15Ev
  virtual void  v16(); // _ZN8S20551C33v16Ev
  virtual void  v17(); // _ZN8S20551C33v17Ev
  virtual void  v18(); // _ZN8S20551C33v18Ev
  ~S20551C3(); // tgen
  S20551C3(); // tgen
};
//SIG(-1 S20551C3) C1{ BC2{ v6 v7 Fp} VBC3{ VBC2 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 FD Fc:8 Fp}


void  S20551C3 ::v14(){vfunc_called(this, "_ZN8S20551C33v14Ev");}
void  S20551C3 ::v15(){vfunc_called(this, "_ZN8S20551C33v15Ev");}
void  S20551C3 ::v16(){vfunc_called(this, "_ZN8S20551C33v16Ev");}
void  S20551C3 ::v17(){vfunc_called(this, "_ZN8S20551C33v17Ev");}
void  S20551C3 ::v18(){vfunc_called(this, "_ZN8S20551C33v18Ev");}
S20551C3 ::~S20551C3(){ note_dtor("S20551C3", this);} // tgen
S20551C3 ::S20551C3(){ note_ctor("S20551C3", this);} // tgen

static void Test_S20551C3()
{
  extern Class_Descriptor cd_S20551C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20551C3, buf);
    S20551C3 *dp, &lv = *(dp=new (buf) S20551C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20551C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20551C3)");
    /*is_ambiguous_... S20551C3::S20551C4 */ AMB_check_base_class_offset(lv, (S20551C4*), 0, "S20551C3");
    check_base_class_offset(lv, (S20551C4*)(S20551C5*), ABISELECT(56,32), "S20551C3");
    check_base_class_offset(lv, (S20551C5*), ABISELECT(48,28), "S20551C3");
    check_field_offset(lv, s20551c3f0, ABISELECT(16,8), "S20551C3.s20551c3f0");
    set_bf_and_test(lv, s20551c3f1, ABISELECT(32,20), 0, 8, 1, "S20551C3");
    set_bf_and_test(lv, s20551c3f1, ABISELECT(32,20), 0, 8, hide_sll(1LL<<7), "S20551C3");
    check_field_offset(lv, s20551c3f2, ABISELECT(40,24), "S20551C3.s20551c3f2");
    test_class_info(&lv, &cd_S20551C3);
    dp->~S20551C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20551C3(Test_S20551C3, "S20551C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20551C3C1Ev();
extern void _ZN8S20551C3D1Ev();
Name_Map name_map_S20551C3[] = {
  NSPAIR(_ZN8S20551C3C1Ev),
  NSPAIR(_ZN8S20551C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
extern Class_Descriptor cd_S20551C5;
extern VTBL_ENTRY _ZTI8S20551C5[];
extern  VTBL_ENTRY _ZTV8S20551C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C5[];
static Base_Class bases_S20551C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20551C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20551C4,    ABISELECT(56,32), //bcp->offset
    26, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20551C5,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20551C3[];
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
extern void _ZN8S20551C33v14Ev();
extern void _ZN8S20551C33v15Ev();
extern void _ZN8S20551C33v16Ev();
extern void _ZN8S20551C33v17Ev();
extern void _ZN8S20551C33v18Ev();
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY vtc_S20551C3[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20551C3[];
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C5__8S20551C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C4__8S20551C5__8S20551C3[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
static  VTT_ENTRY vtt_S20551C3[] = {
  {&(_ZTV8S20551C3[4]),  4,32},
  {&(_ZTV8S20551C3[20]),  20,32},
  {&(_ZTV8S20551C3[30]),  30,32},
  {&(_tg__ZTV8S20551C5__8S20551C3[3]),  3,9},
  {&(_tg__ZTV8S20551C4__8S20551C5__8S20551C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20551C3[];
extern  VTBL_ENTRY _ZTV8S20551C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C3[];
Class_Descriptor cd_S20551C3 = {  "S20551C3", // class name
  bases_S20551C3, 3,
  &(vtc_S20551C3[0]), // expected_vtbl_contents
  &(vtt_S20551C3[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20551C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20551C3),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20551C3),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  S20551C2  : virtual S20551C3 {
  virtual void  v19(); // _ZN8S20551C23v19Ev
  virtual void  v20(); // _ZN8S20551C23v20Ev
  virtual void  v21(); // _ZN8S20551C23v21Ev
  virtual void  v22(); // _ZN8S20551C23v22Ev
  virtual void  v23(); // _ZN8S20551C23v23Ev
  virtual void  v24(); // _ZN8S20551C23v24Ev
  virtual void  v25(); // _ZN8S20551C23v25Ev
  virtual void  v26(); // _ZN8S20551C23v26Ev
  ~S20551C2(); // tgen
  S20551C2(); // tgen
};
//SIG(-1 S20551C2) C1{ VBC2{ BC3{ v9 v10 Fp} VBC4{ VBC3 v11 v12 v13 v14 v15 v16} v17 v18 v19 v20 v21 FD Fc:8 Fp} v1 v2 v3 v4 v5 v6 v7 v8}


void  S20551C2 ::v19(){vfunc_called(this, "_ZN8S20551C23v19Ev");}
void  S20551C2 ::v20(){vfunc_called(this, "_ZN8S20551C23v20Ev");}
void  S20551C2 ::v21(){vfunc_called(this, "_ZN8S20551C23v21Ev");}
void  S20551C2 ::v22(){vfunc_called(this, "_ZN8S20551C23v22Ev");}
void  S20551C2 ::v23(){vfunc_called(this, "_ZN8S20551C23v23Ev");}
void  S20551C2 ::v24(){vfunc_called(this, "_ZN8S20551C23v24Ev");}
void  S20551C2 ::v25(){vfunc_called(this, "_ZN8S20551C23v25Ev");}
void  S20551C2 ::v26(){vfunc_called(this, "_ZN8S20551C23v26Ev");}
S20551C2 ::~S20551C2(){ note_dtor("S20551C2", this);} // tgen
S20551C2 ::S20551C2(){ note_ctor("S20551C2", this);} // tgen

static void Test_S20551C2()
{
  extern Class_Descriptor cd_S20551C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20551C2, buf);
    S20551C2 *dp, &lv = *(dp=new (buf) S20551C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20551C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20551C2)");
    /*is_ambiguous_... S20551C3::S20551C4 */ AMB_check_base_class_offset(lv, (S20551C4*)(S20551C3*), ABISELECT(16,4), "S20551C2");
    check_base_class_offset(lv, (S20551C4*)(S20551C5*), ABISELECT(64,32), "S20551C2");
    check_base_class_offset(lv, (S20551C5*)(S20551C3*), 0, "S20551C2");
    check_base_class_offset(lv, (S20551C3*), ABISELECT(16,4), "S20551C2");
    test_class_info(&lv, &cd_S20551C2);
    dp->~S20551C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20551C2(Test_S20551C2, "S20551C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20551C2C1Ev();
extern void _ZN8S20551C2D1Ev();
Name_Map name_map_S20551C2[] = {
  NSPAIR(_ZN8S20551C2C1Ev),
  NSPAIR(_ZN8S20551C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
extern Class_Descriptor cd_S20551C5;
extern VTBL_ENTRY _ZTI8S20551C5[];
extern  VTBL_ENTRY _ZTV8S20551C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C5[];
extern Class_Descriptor cd_S20551C3;
extern VTBL_ENTRY _ZTI8S20551C3[];
extern  VTBL_ENTRY _ZTV8S20551C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C3[];
static Base_Class bases_S20551C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20551C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20551C4,    ABISELECT(64,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20551C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20551C3,    ABISELECT(16,4), //bcp->offset
    25, //bcp->virtual_function_table_offset
    11, //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 _ZTI8S20551C2[];
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
extern void _ZN8S20551C23v19Ev();
extern void _ZN8S20551C23v20Ev();
extern void _ZN8S20551C23v21Ev();
extern void _ZN8S20551C23v22Ev();
extern void _ZN8S20551C23v23Ev();
extern void _ZN8S20551C23v24Ev();
extern void _ZN8S20551C23v25Ev();
extern void _ZN8S20551C23v26Ev();
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
extern void _ZN8S20551C33v14Ev();
extern void _ZN8S20551C33v15Ev();
extern void _ZN8S20551C33v16Ev();
extern void _ZN8S20551C33v17Ev();
extern void _ZN8S20551C33v18Ev();
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY vtc_S20551C2[] = {
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C2[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v26Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20551C2[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v18Ev,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20551C2[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20551C2[];
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
extern void _ZN8S20551C33v14Ev();
extern void _ZN8S20551C33v15Ev();
extern void _ZN8S20551C33v16Ev();
extern void _ZN8S20551C33v17Ev();
extern void _ZN8S20551C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C3__8S20551C2[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v18Ev,
};
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C5__8S20551C3__8S20551C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C4__A1__8S20551C3__8S20551C2[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C5__8S20551C2[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C4__8S20551C5__8S20551C2[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
static  VTT_ENTRY vtt_S20551C2[] = {
  {&(_ZTV8S20551C2[11]),  11,49},
  {&(_ZTV8S20551C2[36]),  36,49},
  {&(_ZTV8S20551C2[11]),  11,49},
  {&(_ZTV8S20551C2[47]),  47,49},
  {&(_tg__ZTV8S20551C3__8S20551C2[4]),  4,11},
  {&(_tg__ZTV8S20551C5__8S20551C3__8S20551C2[9]),  9,15},
  {&(_tg__ZTV8S20551C4__A1__8S20551C3__8S20551C2[4]),  4,6},
  {&(_tg__ZTV8S20551C5__8S20551C2[3]),  3,9},
  {&(_tg__ZTV8S20551C4__8S20551C5__8S20551C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20551C2[];
extern  VTBL_ENTRY _ZTV8S20551C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C2[];
Class_Descriptor cd_S20551C2 = {  "S20551C2", // class name
  bases_S20551C2, 4,
  &(vtc_S20551C2[0]), // expected_vtbl_contents
  &(vtt_S20551C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20551C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20551C2),49, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20551C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20551C1  : virtual S20551C2 {
  virtual  ~S20551C1(); // _ZN8S20551C1D2Ev
  virtual void  v1(); // _ZN8S20551C12v1Ev
  virtual void  v2(); // _ZN8S20551C12v2Ev
  virtual void  v3(); // _ZN8S20551C12v3Ev
  virtual void  v4(); // _ZN8S20551C12v4Ev
  virtual void  v5(); // _ZN8S20551C12v5Ev
  S20551C1(); // tgen
};
//SIG(1 S20551C1) C1{ VBC2{ VBC3{ BC4{ v6 v7 Fp} VBC5{ VBC4 v8 v9 v10 v11 v12 v13} v14 v15 v16 v17 v18 FD Fc:8 Fp} v19 v20 v21 v22 v23 v24 v25 v26} vd v1 v2 v3 v4 v5}


 S20551C1 ::~S20551C1(){ note_dtor("S20551C1", this);}
void  S20551C1 ::v1(){vfunc_called(this, "_ZN8S20551C12v1Ev");}
void  S20551C1 ::v2(){vfunc_called(this, "_ZN8S20551C12v2Ev");}
void  S20551C1 ::v3(){vfunc_called(this, "_ZN8S20551C12v3Ev");}
void  S20551C1 ::v4(){vfunc_called(this, "_ZN8S20551C12v4Ev");}
void  S20551C1 ::v5(){vfunc_called(this, "_ZN8S20551C12v5Ev");}
S20551C1 ::S20551C1(){ note_ctor("S20551C1", this);} // tgen

static void Test_S20551C1()
{
  extern Class_Descriptor cd_S20551C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20551C1, buf);
    S20551C1 *dp, &lv = *(dp=new (buf) S20551C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20551C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20551C1)");
    /*is_ambiguous_... S20551C3::S20551C4 */ AMB_check_base_class_offset(lv, (S20551C4*)(S20551C3*), ABISELECT(16,4), "S20551C1");
    check_base_class_offset(lv, (S20551C4*)(S20551C5*), ABISELECT(64,32), "S20551C1");
    check_base_class_offset(lv, (S20551C5*)(S20551C3*), 0, "S20551C1");
    check_base_class_offset(lv, (S20551C3*)(S20551C2*), ABISELECT(16,4), "S20551C1");
    check_base_class_offset(lv, (S20551C2*), 0, "S20551C1");
    test_class_info(&lv, &cd_S20551C1);
    dp->~S20551C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20551C1(Test_S20551C1, "S20551C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20551C1C1Ev();
extern void _ZN8S20551C1D2Ev();
Name_Map name_map_S20551C1[] = {
  NSPAIR(_ZN8S20551C1C1Ev),
  NSPAIR(_ZN8S20551C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
extern Class_Descriptor cd_S20551C4;
extern VTBL_ENTRY _ZTI8S20551C4[];
extern  VTBL_ENTRY _ZTV8S20551C4[];
extern Class_Descriptor cd_S20551C5;
extern VTBL_ENTRY _ZTI8S20551C5[];
extern  VTBL_ENTRY _ZTV8S20551C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C5[];
extern Class_Descriptor cd_S20551C3;
extern VTBL_ENTRY _ZTI8S20551C3[];
extern  VTBL_ENTRY _ZTV8S20551C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C3[];
extern Class_Descriptor cd_S20551C2;
extern VTBL_ENTRY _ZTI8S20551C2[];
extern  VTBL_ENTRY _ZTV8S20551C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C2[];
static Base_Class bases_S20551C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20551C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20551C4,    ABISELECT(64,32), //bcp->offset
    59, //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_S20551C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20551C3,    ABISELECT(16,4), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20551C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20551C1[];
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
extern void _ZN8S20551C23v19Ev();
extern void _ZN8S20551C23v20Ev();
extern void _ZN8S20551C23v21Ev();
extern void _ZN8S20551C23v22Ev();
extern void _ZN8S20551C23v23Ev();
extern void _ZN8S20551C23v24Ev();
extern void _ZN8S20551C23v25Ev();
extern void _ZN8S20551C23v26Ev();
extern void _ZN8S20551C1D1Ev();
extern void _ZN8S20551C1D0Ev();
extern void _ZN8S20551C12v1Ev();
extern void _ZN8S20551C12v2Ev();
extern void _ZN8S20551C12v3Ev();
extern void _ZN8S20551C12v4Ev();
extern void _ZN8S20551C12v5Ev();
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
extern void _ZN8S20551C33v14Ev();
extern void _ZN8S20551C33v15Ev();
extern void _ZN8S20551C33v16Ev();
extern void _ZN8S20551C33v17Ev();
extern void _ZN8S20551C33v18Ev();
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY vtc_S20551C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C1[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20551C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20551C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20551C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20551C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20551C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20551C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20551C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20551C1[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v18Ev,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20551C1[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20551C1[];
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
extern void _ZN8S20551C23v19Ev();
extern void _ZN8S20551C23v20Ev();
extern void _ZN8S20551C23v21Ev();
extern void _ZN8S20551C23v22Ev();
extern void _ZN8S20551C23v23Ev();
extern void _ZN8S20551C23v24Ev();
extern void _ZN8S20551C23v25Ev();
extern void _ZN8S20551C23v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C2__8S20551C1[] = {
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C2[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20551C23v26Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
extern void _ZN8S20551C33v14Ev();
extern void _ZN8S20551C33v15Ev();
extern void _ZN8S20551C33v16Ev();
extern void _ZN8S20551C33v17Ev();
extern void _ZN8S20551C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C3__8S20551C2__8S20551C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20551C2[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v18Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C4__A1__8S20551C2__8S20551C1[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20551C2[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
extern void _ZN8S20551C33v14Ev();
extern void _ZN8S20551C33v15Ev();
extern void _ZN8S20551C33v16Ev();
extern void _ZN8S20551C33v17Ev();
extern void _ZN8S20551C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C3__8S20551C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20551C33v18Ev,
};
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C5__8S20551C3__8S20551C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C4__A1__8S20551C3__8S20551C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20551C3[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
extern void _ZN8S20551C52v8Ev();
extern void _ZN8S20551C52v9Ev();
extern void _ZN8S20551C53v10Ev();
extern void _ZN8S20551C53v11Ev();
extern void _ZN8S20551C53v12Ev();
extern void _ZN8S20551C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C5__8S20551C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20551C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20551C53v13Ev,
};
extern void _ZN8S20551C42v6Ev();
extern void _ZN8S20551C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20551C4__8S20551C5__8S20551C1[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20551C5[0]),
  (VTBL_ENTRY)&_ZN8S20551C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20551C42v7Ev,
};
static  VTT_ENTRY vtt_S20551C1[] = {
  {&(_ZTV8S20551C1[20]),  20,65},
  {&(_ZTV8S20551C1[20]),  20,65},
  {&(_ZTV8S20551C1[52]),  52,65},
  {&(_ZTV8S20551C1[20]),  20,65},
  {&(_ZTV8S20551C1[63]),  63,65},
  {&(_tg__ZTV8S20551C2__8S20551C1[11]),  11,25},
  {&(_tg__ZTV8S20551C3__8S20551C2__8S20551C1[11]),  11,18},
  {&(_tg__ZTV8S20551C2__8S20551C1[11]),  11,25},
  {&(_tg__ZTV8S20551C4__A1__8S20551C2__8S20551C1[4]),  4,6},
  {&(_tg__ZTV8S20551C3__8S20551C1[4]),  4,11},
  {&(_tg__ZTV8S20551C5__8S20551C3__8S20551C1[9]),  9,15},
  {&(_tg__ZTV8S20551C4__A1__8S20551C3__8S20551C1[4]),  4,6},
  {&(_tg__ZTV8S20551C5__8S20551C1[3]),  3,9},
  {&(_tg__ZTV8S20551C4__8S20551C5__8S20551C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20551C1[];
extern  VTBL_ENTRY _ZTV8S20551C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20551C1[];
Class_Descriptor cd_S20551C1 = {  "S20551C1", // class name
  bases_S20551C1, 5,
  &(vtc_S20551C1[0]), // expected_vtbl_contents
  &(vtt_S20551C1[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20551C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20551C1),65, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20551C1),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S20985C7C1Ev();
extern void _ZN8S20985C7D1Ev();
Name_Map name_map_S20985C7[] = {
  NSPAIR(_ZN8S20985C7C1Ev),
  NSPAIR(_ZN8S20985C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20985C7[];
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY vtc_S20985C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C7[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
Class_Descriptor cd_S20985C7 = {  "S20985C7", // class name
  0,0,//no base classes
  &(vtc_S20985C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20985C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20985C7),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  S20985C5  : virtual S19894C34 , virtual S20985C7 {
  ::S20985C7 s20985c5f0;
  ~S20985C5(); // tgen
  S20985C5(); // tgen
};
//SIG(-1 S20985C5) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S20985C5()
{
  extern Class_Descriptor cd_S20985C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20985C5, buf);
    S20985C5 *dp, &lv = *(dp=new (buf) S20985C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20985C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S20985C5");
    check_base_class_offset(lv, (S20985C7*), 0, "S20985C5");
    check_field_offset(lv, s20985c5f0, ABISELECT(8,4), "S20985C5.s20985c5f0");
    test_class_info(&lv, &cd_S20985C5);
    dp->~S20985C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C5(Test_S20985C5, "S20985C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20985C5C1Ev();
extern void _ZN8S20985C5D1Ev();
Name_Map name_map_S20985C5[] = {
  NSPAIR(_ZN8S20985C5C1Ev),
  NSPAIR(_ZN8S20985C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
static Base_Class bases_S20985C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20985C7,    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 _ZTI8S20985C5[];
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY vtc_S20985C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S20985C5[];
static  VTT_ENTRY vtt_S20985C5[] = {
  {&(_ZTV8S20985C5[5]),  5,6},
  {&(_ZTV8S20985C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
Class_Descriptor cd_S20985C5 = {  "S20985C5", // class name
  bases_S20985C5, 2,
  &(vtc_S20985C5[0]), // expected_vtbl_contents
  &(vtt_S20985C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20985C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20985C5),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20985C5),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  S20985C4  : S20985C5 , S19894C34 , S20985C7 {
  virtual  ~S20985C4(); // _ZN8S20985C4D2Ev
  S20985C4(); // tgen
};
//SIG(-1 S20985C4) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S20985C4()
{
  extern Class_Descriptor cd_S20985C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20985C4, buf);
    S20985C4 *dp, &lv = *(dp=new (buf) S20985C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20985C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C4)");
    check_base_class_offset(lv, (S19894C34*)(S20985C5*), ABISELECT(24,12), "S20985C4");
    check_base_class_offset(lv, (S20985C7*)(S20985C5*), 0, "S20985C4");
    check_base_class_offset(lv, (S20985C5*), 0, "S20985C4");
    /*is_ambiguous_... S20985C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S20985C4");
    /*is_ambiguous_... S20985C4::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*), ABISELECT(16,8), "S20985C4");
    test_class_info(&lv, &cd_S20985C4);
    dp->~S20985C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C4(Test_S20985C4, "S20985C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20985C4C1Ev();
extern void _ZN8S20985C4D2Ev();
Name_Map name_map_S20985C4[] = {
  NSPAIR(_ZN8S20985C4C1Ev),
  NSPAIR(_ZN8S20985C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
static Base_Class bases_S20985C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20985C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S20985C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20985C7,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20985C4[];
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C4D1Ev();
extern void _ZN8S20985C4D0Ev();
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY vtc_S20985C4[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S20985C4[];
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__8S20985C4[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
static  VTT_ENTRY vtt_S20985C4[] = {
  {&(_ZTV8S20985C4[5]),  5,11},
  {&(_tg__ZTV8S20985C5__8S20985C4[5]),  5,6},
  {&(_tg__ZTV8S20985C5__8S20985C4[5]),  5,6},
  {&(_ZTV8S20985C4[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20985C4[];
extern  VTBL_ENTRY _ZTV8S20985C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C4[];
Class_Descriptor cd_S20985C4 = {  "S20985C4", // class name
  bases_S20985C4, 5,
  &(vtc_S20985C4[0]), // expected_vtbl_contents
  &(vtt_S20985C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20985C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20985C4),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20985C4),4, //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  S20985C3  : virtual S20985C4 , virtual S19894C6_nt {
  void *s20985c3f0[9];
  ~S20985C3(); // tgen
  S20985C3(); // tgen
};
//SIG(-1 S20985C3) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} VBC6{ m Fp} Fp[9]}


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

static void Test_S20985C3()
{
  extern Class_Descriptor cd_S20985C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S20985C3, buf);
    S20985C3 *dp, &lv = *(dp=new (buf) S20985C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S20985C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C3)");
    check_base_class_offset(lv, (S19894C34*)(S20985C5*)(S20985C4*), 0, "S20985C3");
    check_base_class_offset(lv, (S20985C7*)(S20985C5*)(S20985C4*), 0, "S20985C3");
    check_base_class_offset(lv, (S20985C5*)(S20985C4*), ABISELECT(80,40), "S20985C3");
    /*is_ambiguous_... S20985C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20985C4*), ABISELECT(80,40), "S20985C3");
    /*is_ambiguous_... S20985C4::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C4*), ABISELECT(96,48), "S20985C3");
    check_base_class_offset(lv, (S20985C4*), ABISELECT(80,40), "S20985C3");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(104,52), "S20985C3");
    check_field_offset(lv, s20985c3f0, ABISELECT(8,4), "S20985C3.s20985c3f0");
    test_class_info(&lv, &cd_S20985C3);
    dp->~S20985C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C3(Test_S20985C3, "S20985C3", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S20985C3C1Ev();
extern void _ZN8S20985C3D1Ev();
Name_Map name_map_S20985C3[] = {
  NSPAIR(_ZN8S20985C3C1Ev),
  NSPAIR(_ZN8S20985C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C4;
extern VTBL_ENTRY _ZTI8S20985C4[];
extern  VTBL_ENTRY _ZTV8S20985C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S20985C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20985C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S20985C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C7,    ABISELECT(96,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C4,    ABISELECT(80,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20985C3[];
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C3D1Ev();
extern void _ZN8S20985C3D0Ev();
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20985C3D1Ev,_ZThn40_N8S20985C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S20985C3D0Ev,_ZThn40_N8S20985C3D0Ev)() __attribute__((weak));
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY vtc_S20985C3[] = {
  ABISELECT(104,52),
  0,
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C3D0Ev,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S20985C3[];
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C4D1Ev();
extern void _ZN8S20985C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C4__8S20985C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D0Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C58S20985C4__8S20985C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C58S20985C4__8S20985C3[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C4__8S20985C3[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
static  VTT_ENTRY vtt_S20985C3[] = {
  {&(_ZTV8S20985C3[7]),  7,22},
  {&(_ZTV8S20985C3[16]),  16,22},
  {&(_ZTV8S20985C3[7]),  7,22},
  {&(_ZTV8S20985C3[21]),  21,22},
  {&(_tg__ZTV8S20985C4__8S20985C3[5]),  5,8},
  {&(_tg__ZTV8S20985C58S20985C4__8S20985C3[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C58S20985C4__8S20985C3[3]),  3,4},
  {&(_tg__ZTV8S20985C7__8S20985C4__8S20985C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20985C3[];
extern  VTBL_ENTRY _ZTV8S20985C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C3[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20985C3D0Ev,_ZThn40_N8S20985C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20985C3D1Ev,_ZThn40_N8S20985C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20985C3 = {  "S20985C3", // class name
  bases_S20985C3, 7,
  &(vtc_S20985C3[0]), // expected_vtbl_contents
  &(vtt_S20985C3[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S20985C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20985C3),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20985C3),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20985C10  : S20985C7 , S19894C6_nt , virtual S20985C5 {
  virtual void  v2(); // _ZN9S20985C102v2Ev
  ~S20985C10(); // tgen
  S20985C10(); // tgen
};
//SIG(-1 S20985C10) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S20985C10()
{
  extern Class_Descriptor cd_S20985C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20985C10, buf);
    S20985C10 *dp, &lv = *(dp=new (buf) S20985C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20985C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C10)");
    /*is_ambiguous_... S20985C10::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*), 0, "S20985C10");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S20985C10");
    check_base_class_offset(lv, (S19894C34*)(S20985C5*), 0, "S20985C10");
    check_base_class_offset(lv, (S20985C7*)(S20985C5*), ABISELECT(16,8), "S20985C10");
    check_base_class_offset(lv, (S20985C5*), ABISELECT(16,8), "S20985C10");
    test_class_info(&lv, &cd_S20985C10);
    dp->~S20985C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C10(Test_S20985C10, "S20985C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S20985C10C1Ev();
extern void _ZN9S20985C10D1Ev();
Name_Map name_map_S20985C10[] = {
  NSPAIR(_ZN9S20985C10C1Ev),
  NSPAIR(_ZN9S20985C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
static Base_Class bases_S20985C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20985C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20985C7,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S20985C5,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI9S20985C10[];
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY vtc_S20985C10[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S20985C10[];
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__9S20985C10[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
static  VTT_ENTRY vtt_S20985C10[] = {
  {&(_ZTV9S20985C10[5]),  5,13},
  {&(_ZTV9S20985C10[12]),  12,13},
  {&(_ZTV9S20985C10[12]),  12,13},
  {&(_tg__ZTV8S20985C5__9S20985C10[5]),  5,6},
  {&(_tg__ZTV8S20985C5__9S20985C10[5]),  5,6},
};
extern VTBL_ENTRY _ZTI9S20985C10[];
extern  VTBL_ENTRY _ZTV9S20985C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20985C10[];
Class_Descriptor cd_S20985C10 = {  "S20985C10", // class name
  bases_S20985C10, 5,
  &(vtc_S20985C10[0]), // expected_vtbl_contents
  &(vtt_S20985C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S20985C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20985C10),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20985C10),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20985C9  : virtual S20985C5 , virtual S20985C10 {
  ~S20985C9(); // tgen
  S20985C9(); // tgen
};
//SIG(-1 S20985C9) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S20985C9()
{
  extern Class_Descriptor cd_S20985C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20985C9, buf);
    S20985C9 *dp, &lv = *(dp=new (buf) S20985C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20985C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C9)");
    check_base_class_offset(lv, (S19894C34*)(S20985C5*), 0, "S20985C9");
    check_base_class_offset(lv, (S20985C7*)(S20985C5*), 0, "S20985C9");
    check_base_class_offset(lv, (S20985C5*), ABISELECT(8,4), "S20985C9");
    check_base_class_offset(lv, (S20985C5*)(S20985C10*), ABISELECT(8,4), "S20985C9");
    /*is_ambiguous_... S20985C10::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C10*), ABISELECT(24,12), "S20985C9");
    check_base_class_offset(lv, (S19894C6_nt*)(S20985C10*), ABISELECT(32,16), "S20985C9");
    check_base_class_offset(lv, (S20985C10*), ABISELECT(24,12), "S20985C9");
    test_class_info(&lv, &cd_S20985C9);
    dp->~S20985C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C9(Test_S20985C9, "S20985C9", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20985C9C1Ev();
extern void _ZN8S20985C9D1Ev();
Name_Map name_map_S20985C9[] = {
  NSPAIR(_ZN8S20985C9C1Ev),
  NSPAIR(_ZN8S20985C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20985C10;
extern VTBL_ENTRY _ZTI9S20985C10[];
extern  VTBL_ENTRY _ZTV9S20985C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20985C10[];
static Base_Class bases_S20985C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20985C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S20985C5,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20985C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C10,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20985C9[];
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY vtc_S20985C9[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern VTBL_ENTRY _ZTV8S20985C9[];
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__8S20985C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C5__8S20985C9[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20985C10__8S20985C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__9S20985C10__8S20985C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__A1__9S20985C10__8S20985C9[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
static  VTT_ENTRY vtt_S20985C9[] = {
  {&(_ZTV8S20985C9[7]),  7,23},
  {&(_ZTV8S20985C9[13]),  13,23},
  {&(_ZTV8S20985C9[7]),  7,23},
  {&(_ZTV8S20985C9[21]),  21,23},
  {&(_tg__ZTV8S20985C5__8S20985C9[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C5__8S20985C9[3]),  3,4},
  {&(_tg__ZTV9S20985C10__8S20985C9[5]),  5,7},
  {&(_tg__ZTV8S20985C5__9S20985C10__8S20985C9[5]),  5,6},
  {&(_tg__ZTV8S20985C7__A1__9S20985C10__8S20985C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20985C9[];
extern  VTBL_ENTRY _ZTV8S20985C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C9[];
Class_Descriptor cd_S20985C9 = {  "S20985C9", // class name
  bases_S20985C9, 6,
  &(vtc_S20985C9[0]), // expected_vtbl_contents
  &(vtt_S20985C9[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20985C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20985C9),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20985C9),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20985C2  : virtual S20985C3 , S19894C34 , S20985C9 {
  void *s20985c2f0;
  virtual  ~S20985C2(); // _ZN8S20985C2D2Ev
  S20985C2(); // tgen
};
//SIG(-1 S20985C2) C1{ VBC2{ VBC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} VBC7{ m Fp} Fp[9]} BC5 BC8{ VBC4 VBC9{ BC6 BC7 VBC4 v2}} vd Fp}


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

static void Test_S20985C2()
{
  extern Class_Descriptor cd_S20985C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S20985C2, buf);
    S20985C2 *dp, &lv = *(dp=new (buf) S20985C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S20985C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C2)");
    check_base_class_offset(lv, (S19894C34*)(S20985C5*)(S20985C4*), ABISELECT(120,60), "S20985C2");
    /*is_ambiguous_... S20985C2::S20985C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20985C5*), ABISELECT(120,60), "S20985C2");
    check_base_class_offset(lv, (S20985C7*)(S20985C5*)(S20985C4*), ABISELECT(16,8), "S20985C2");
    /*is_ambiguous_... S20985C2::S20985C5 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C5*), ABISELECT(16,8), "S20985C2");
    check_base_class_offset(lv, (S20985C5*)(S20985C4*), ABISELECT(96,48), "S20985C2");
    /*is_ambiguous_... S20985C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20985C4*), ABISELECT(96,48), "S20985C2");
    /*is_ambiguous_... S20985C4::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C4*), ABISELECT(112,56), "S20985C2");
    check_base_class_offset(lv, (S20985C4*)(S20985C3*), ABISELECT(96,48), "S20985C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S20985C3*), ABISELECT(120,60), "S20985C2");
    check_base_class_offset(lv, (S20985C3*), ABISELECT(16,8), "S20985C2");
    /*is_ambiguous_... S20985C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S20985C2");
    check_base_class_offset(lv, (S20985C5*)(S20985C9*), ABISELECT(128,64), "S20985C2");
    check_base_class_offset(lv, (S20985C5*)(S20985C10*), ABISELECT(128,64), "S20985C2");
    /*is_ambiguous_... S20985C10::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C10*), ABISELECT(144,72), "S20985C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S20985C10*), ABISELECT(152,76), "S20985C2");
    check_base_class_offset(lv, (S20985C10*)(S20985C9*), ABISELECT(144,72), "S20985C2");
    check_base_class_offset(lv, (S20985C9*), 0, "S20985C2");
    check_field_offset(lv, s20985c2f0, ABISELECT(8,4), "S20985C2.s20985c2f0");
    test_class_info(&lv, &cd_S20985C2);
    dp->~S20985C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C2(Test_S20985C2, "S20985C2", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S20985C2C1Ev();
extern void _ZN8S20985C2D2Ev();
Name_Map name_map_S20985C2[] = {
  NSPAIR(_ZN8S20985C2C1Ev),
  NSPAIR(_ZN8S20985C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C4;
extern VTBL_ENTRY _ZTI8S20985C4[];
extern  VTBL_ENTRY _ZTV8S20985C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20985C3;
extern VTBL_ENTRY _ZTI8S20985C3[];
extern  VTBL_ENTRY _ZTV8S20985C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20985C10;
extern VTBL_ENTRY _ZTI9S20985C10[];
extern  VTBL_ENTRY _ZTV9S20985C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20985C10[];
extern Class_Descriptor cd_S20985C9;
extern VTBL_ENTRY _ZTI8S20985C9[];
extern  VTBL_ENTRY _ZTV8S20985C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C9[];
static Base_Class bases_S20985C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20985C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20985C5,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C7,    ABISELECT(112,56), //bcp->offset
    33, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C4,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20985C3,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20985C5,    ABISELECT(128,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20985C7,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20985C10,    ABISELECT(144,72), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20985C9,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20985C2[];
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C2D1Ev();
extern void _ZN8S20985C2D0Ev();
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20985C2D1Ev,_ZTv0_n32_N8S20985C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20985C2D1Ev,_ZThn8_N8S20985C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20985C2D0Ev,_ZTv0_n32_N8S20985C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20985C2D0Ev,_ZThn8_N8S20985C2D0Ev)() __attribute__((weak));
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20985C2D1Ev,_ZTv0_n24_N8S20985C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20985C2D1Ev,_ZThn48_N8S20985C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20985C2D0Ev,_ZTv0_n24_N8S20985C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20985C2D0Ev,_ZThn48_N8S20985C2D0Ev)() __attribute__((weak));
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY vtc_S20985C2[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20985C2D1Ev,_ZTv0_n32_N8S20985C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20985C2D0Ev,_ZTv0_n32_N8S20985C2D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C2D1Ev,_ZTv0_n24_N8S20985C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C2D0Ev,_ZTv0_n24_N8S20985C2D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern VTBL_ENTRY _ZTV8S20985C2[];
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C9__8S20985C2[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(120,60),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__8S20985C9__8S20985C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C9__8S20985C2[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20985C10__8S20985C9__8S20985C2[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C3D1Ev();
extern void _ZN8S20985C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C3__8S20985C2[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C3D0Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20985C3D1Ev,_ZThn40_N8S20985C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S20985C3D0Ev,_ZThn40_N8S20985C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20985C4__8S20985C3__8S20985C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev),
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C78S20985C4__A1__8S20985C3__8S20985C2[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C4D1Ev();
extern void _ZN8S20985C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C4__8S20985C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D0Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C58S20985C4__8S20985C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C58S20985C4__8S20985C2[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C4__8S20985C2[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__A1__8S20985C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C5__A1__8S20985C2[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20985C10__8S20985C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__9S20985C10__8S20985C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__A1__9S20985C10__8S20985C2[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
static  VTT_ENTRY vtt_S20985C2[] = {
  {&(_ZTV8S20985C2[10]),  10,51},
  {&(_tg__ZTV8S20985C9__8S20985C2[7]),  7,8},
  {&(_tg__ZTV8S20985C5__8S20985C9__8S20985C2[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C9__8S20985C2[3]),  3,4},
  {&(_tg__ZTV9S20985C10__8S20985C9__8S20985C2[7]),  7,9},
  {&(_ZTV8S20985C2[21]),  21,51},
  {&(_ZTV8S20985C2[30]),  30,51},
  {&(_ZTV8S20985C2[21]),  21,51},
  {&(_ZTV8S20985C2[35]),  35,51},
  {&(_ZTV8S20985C2[41]),  41,51},
  {&(_ZTV8S20985C2[49]),  49,51},
  {&(_tg__ZTV8S20985C3__8S20985C2[7]),  7,10},
  {&(_tg__ZTV8S20985C4__8S20985C3__8S20985C2[6]),  6,9},
  {&(_tg__ZTV8S20985C3__8S20985C2[7]),  7,10},
  {&(_tg__ZTV8S20985C78S20985C4__A1__8S20985C3__8S20985C2[2]),  2,3},
  {&(_tg__ZTV8S20985C4__8S20985C2[5]),  5,8},
  {&(_tg__ZTV8S20985C58S20985C4__8S20985C2[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C58S20985C4__8S20985C2[3]),  3,4},
  {&(_tg__ZTV8S20985C7__8S20985C4__8S20985C2[3]),  3,4},
  {&(_tg__ZTV8S20985C5__A1__8S20985C2[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C5__A1__8S20985C2[3]),  3,4},
  {&(_tg__ZTV9S20985C10__8S20985C2[5]),  5,7},
  {&(_tg__ZTV8S20985C5__9S20985C10__8S20985C2[5]),  5,6},
  {&(_tg__ZTV8S20985C7__A1__9S20985C10__8S20985C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20985C2[];
extern  VTBL_ENTRY _ZTV8S20985C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C2[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20985C3D0Ev,_ZThn40_N8S20985C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20985C3D1Ev,_ZThn40_N8S20985C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C2D0Ev,_ZTv0_n24_N8S20985C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20985C2D0Ev,_ZThn48_N8S20985C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C2D1Ev,_ZTv0_n24_N8S20985C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20985C2D1Ev,_ZThn48_N8S20985C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20985C2D0Ev,_ZTv0_n32_N8S20985C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20985C2D0Ev,_ZThn8_N8S20985C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20985C2D1Ev,_ZTv0_n32_N8S20985C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20985C2D1Ev,_ZThn8_N8S20985C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20985C2 = {  "S20985C2", // class name
  bases_S20985C2, 14,
  &(vtc_S20985C2[0]), // expected_vtbl_contents
  &(vtt_S20985C2[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S20985C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20985C2),51, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20985C2),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20985C12  : virtual S19894C34 , virtual S19894C6_nt {
  ~S20985C12(); // tgen
  S20985C12(); // tgen
};
//SIG(-1 S20985C12) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S20985C12()
{
  extern Class_Descriptor cd_S20985C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20985C12, buf);
    S20985C12 *dp, &lv = *(dp=new (buf) S20985C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20985C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C12)");
    check_base_class_offset(lv, (S19894C34*), 0, "S20985C12");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S20985C12");
    test_class_info(&lv, &cd_S20985C12);
    dp->~S20985C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C12(Test_S20985C12, "S20985C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20985C12C1Ev();
extern void _ZN9S20985C12D1Ev();
Name_Map name_map_S20985C12[] = {
  NSPAIR(_ZN9S20985C12C1Ev),
  NSPAIR(_ZN9S20985C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S20985C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20985C12[];
static  VTBL_ENTRY vtc_S20985C12[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20985C12[0]),
};
extern VTBL_ENTRY _ZTV9S20985C12[];
static  VTT_ENTRY vtt_S20985C12[] = {
  {&(_ZTV9S20985C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S20985C12[];
extern  VTBL_ENTRY _ZTV9S20985C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20985C12[];
Class_Descriptor cd_S20985C12 = {  "S20985C12", // class name
  bases_S20985C12, 2,
  &(vtc_S20985C12[0]), // expected_vtbl_contents
  &(vtt_S20985C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20985C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20985C12),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20985C12),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  S20985C1  : virtual S20985C2 , virtual S19894C17_nt , S20985C12 {
  __tsi64 s20985c1f0;
  virtual  ~S20985C1(); // _ZN8S20985C1D2Ev
  S20985C1(); // tgen
};
//SIG(1 S20985C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ VBC6{ m} VBC7{ v1} FC7} BC6 BC7 vd} VBC8{ m Fp} Fp[9]} BC6 BC9{ VBC5 VBC10{ BC7 BC8 VBC5 v2}} vd Fp} VBC11{ m} BC12{ VBC6 VBC8} vd FL}


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

static void Test_S20985C1()
{
  extern Class_Descriptor cd_S20985C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S20985C1, buf);
    S20985C1 *dp, &lv = *(dp=new (buf) S20985C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S20985C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20985C1)");
    check_base_class_offset(lv, (S19894C34*)(S20985C5*)(S20985C4*), 0, "S20985C1");
    /*is_ambiguous_... S20985C1::S20985C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20985C5*), 0, "S20985C1");
    check_base_class_offset(lv, (S19894C34*)(S20985C12*), 0, "S20985C1");
    check_base_class_offset(lv, (S20985C7*)(S20985C5*)(S20985C4*), ABISELECT(32,20), "S20985C1");
    /*is_ambiguous_... S20985C1::S20985C5 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C5*), ABISELECT(32,20), "S20985C1");
    check_base_class_offset(lv, (S20985C5*)(S20985C4*), ABISELECT(112,60), "S20985C1");
    /*is_ambiguous_... S20985C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20985C4*), ABISELECT(112,60), "S20985C1");
    /*is_ambiguous_... S20985C4::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C4*), ABISELECT(128,68), "S20985C1");
    check_base_class_offset(lv, (S20985C4*)(S20985C3*), ABISELECT(112,60), "S20985C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S20985C3*), ABISELECT(136,72), "S20985C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S20985C12*), ABISELECT(136,72), "S20985C1");
    check_base_class_offset(lv, (S20985C3*)(S20985C2*), ABISELECT(32,20), "S20985C1");
    /*is_ambiguous_... S20985C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20985C2*), ABISELECT(16,12), "S20985C1");
    check_base_class_offset(lv, (S20985C5*)(S20985C9*)(S20985C2*), ABISELECT(144,76), "S20985C1");
    check_base_class_offset(lv, (S20985C5*)(S20985C10*), ABISELECT(144,76), "S20985C1");
    /*is_ambiguous_... S20985C10::S20985C7 */ AMB_check_base_class_offset(lv, (S20985C7*)(S20985C10*), ABISELECT(160,84), "S20985C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S20985C10*), ABISELECT(168,88), "S20985C1");
    check_base_class_offset(lv, (S20985C10*)(S20985C9*)(S20985C2*), ABISELECT(160,84), "S20985C1");
    check_base_class_offset(lv, (S20985C9*)(S20985C2*), ABISELECT(16,12), "S20985C1");
    check_base_class_offset(lv, (S20985C2*), ABISELECT(16,12), "S20985C1");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S20985C1");
    check_base_class_offset(lv, (S20985C12*), 0, "S20985C1");
    check_field_offset(lv, s20985c1f0, ABISELECT(8,4), "S20985C1.s20985c1f0");
    test_class_info(&lv, &cd_S20985C1);
    dp->~S20985C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20985C1(Test_S20985C1, "S20985C1", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN8S20985C1C1Ev();
extern void _ZN8S20985C1D2Ev();
Name_Map name_map_S20985C1[] = {
  NSPAIR(_ZN8S20985C1C1Ev),
  NSPAIR(_ZN8S20985C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S20985C4;
extern VTBL_ENTRY _ZTI8S20985C4[];
extern  VTBL_ENTRY _ZTV8S20985C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20985C3;
extern VTBL_ENTRY _ZTI8S20985C3[];
extern  VTBL_ENTRY _ZTV8S20985C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C3[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20985C5;
extern VTBL_ENTRY _ZTI8S20985C5[];
extern  VTBL_ENTRY _ZTV8S20985C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C5[];
extern Class_Descriptor cd_S20985C7;
extern VTBL_ENTRY _ZTI8S20985C7[];
extern  VTBL_ENTRY _ZTV8S20985C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S20985C10;
extern VTBL_ENTRY _ZTI9S20985C10[];
extern  VTBL_ENTRY _ZTV9S20985C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20985C10[];
extern Class_Descriptor cd_S20985C9;
extern VTBL_ENTRY _ZTI8S20985C9[];
extern  VTBL_ENTRY _ZTV8S20985C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C9[];
extern Class_Descriptor cd_S20985C2;
extern VTBL_ENTRY _ZTI8S20985C2[];
extern  VTBL_ENTRY _ZTV8S20985C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C2[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S20985C12;
extern VTBL_ENTRY _ZTI9S20985C12[];
extern  VTBL_ENTRY _ZTV9S20985C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20985C12[];
static Base_Class bases_S20985C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20985C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20985C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C7,    ABISELECT(128,68), //bcp->offset
    47, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20985C4,    ABISELECT(112,60), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19894C6_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20985C3,    ABISELECT(32,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20985C5,    ABISELECT(144,76), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20985C7,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_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
    12, //immediately_derived
  0, 0},
  {&cd_S20985C10,    ABISELECT(160,84), //bcp->offset
    56, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20985C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20985C2,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20985C12,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S20985C1[];
extern void _ZN8S20985C1D1Ev();
extern void _ZN8S20985C1D0Ev();
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S20985C1D1Ev,_ZTv0_n44_N8S20985C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20985C1D1Ev,_ZThn12_N8S20985C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20985C1D0Ev,_ZTv0_n44_N8S20985C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20985C1D0Ev,_ZThn12_N8S20985C1D0Ev)() __attribute__((weak));
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20985C1D1Ev,_ZTv0_n32_N8S20985C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20985C1D1Ev,_ZThn20_N8S20985C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20985C1D0Ev,_ZTv0_n32_N8S20985C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20985C1D0Ev,_ZThn20_N8S20985C1D0Ev)() __attribute__((weak));
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20985C1D1Ev,_ZTv0_n24_N8S20985C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20985C1D1Ev,_ZThn60_N8S20985C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20985C1D0Ev,_ZTv0_n24_N8S20985C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20985C1D0Ev,_ZThn60_N8S20985C1D0Ev)() __attribute__((weak));
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY vtc_S20985C1[] = {
  0,
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(32,20),
  ABISELECT(112,60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(136,72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C1D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(128,64),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20985C1D1Ev,_ZTv0_n44_N8S20985C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20985C1D0Ev,_ZTv0_n44_N8S20985C1D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(104,52),
  0,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20985C1D1Ev,_ZTv0_n32_N8S20985C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20985C1D0Ev,_ZTv0_n32_N8S20985C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C1D1Ev,_ZTv0_n24_N8S20985C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C1D0Ev,_ZTv0_n24_N8S20985C1D0Ev),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-144,-76),
  ABISELECT(-112,-56),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S20985C1[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern VTBL_ENTRY _ZTV8S20985C1[];
static  VTBL_ENTRY _tg__ZTV9S20985C12__8S20985C1[] = {
  ABISELECT(136,72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20985C12[0]),
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C2D1Ev();
extern void _ZN8S20985C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C2__8S20985C1[] = {
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(16,8),
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C2D0Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C98S20985C2__8S20985C1[] = {
  ABISELECT(144,72),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(128,64),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__8S20985C98S20985C2__8S20985C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-76),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C98S20985C2__8S20985C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20985C10__8S20985C98S20985C2__8S20985C1[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20985C9[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20985C2D1Ev,_ZTv0_n32_N8S20985C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20985C2D1Ev,_ZThn8_N8S20985C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20985C2D0Ev,_ZTv0_n32_N8S20985C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20985C2D0Ev,_ZThn8_N8S20985C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20985C3__8S20985C2__8S20985C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  0,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20985C2D1Ev,_ZTv0_n32_N8S20985C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20985C2D0Ev,_ZTv0_n32_N8S20985C2D0Ev),
};
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20985C2D1Ev,_ZTv0_n24_N8S20985C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20985C2D1Ev,_ZThn48_N8S20985C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20985C2D0Ev,_ZTv0_n24_N8S20985C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20985C2D0Ev,_ZThn48_N8S20985C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20985C4__8S20985C2__8S20985C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C2D1Ev,_ZTv0_n24_N8S20985C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C2D0Ev,_ZTv0_n24_N8S20985C2D0Ev),
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C78S20985C4__A1__8S20985C2__8S20985C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__A1__8S20985C2__8S20985C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-76),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20985C10__8S20985C2__8S20985C1[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20985C2[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C3D1Ev();
extern void _ZN8S20985C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C3__8S20985C1[] = {
  ABISELECT(104,52),
  0,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C3D0Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20985C3D1Ev,_ZThn40_N8S20985C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S20985C3D0Ev,_ZThn40_N8S20985C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20985C4__8S20985C3__8S20985C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev),
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C78S20985C4__A1__8S20985C3__8S20985C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20985C3[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN8S20985C4D1Ev();
extern void _ZN8S20985C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C4__8S20985C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20985C4D0Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C58S20985C4__8S20985C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C58S20985C4__8S20985C1[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C4__8S20985C1[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S20985C4[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__A1__8S20985C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-76),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__8S20985C5__A1__8S20985C1[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S20985C5[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
extern void _ZN9S20985C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20985C10__8S20985C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20985C102v2Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C5__9S20985C10__8S20985C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-76),
  ABISELECT(-112,-56),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
extern void _ZN8S20985C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20985C7__A1__9S20985C10__8S20985C1[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S20985C10[0]),
  (VTBL_ENTRY)&_ZN8S20985C72v1Ev,
};
static  VTT_ENTRY vtt_S20985C1[] = {
  {&(_ZTV8S20985C1[11]),  11,65},
  {&(_tg__ZTV9S20985C12__8S20985C1[4]),  4,4},
  {&(_ZTV8S20985C1[24]),  24,65},
  {&(_ZTV8S20985C1[35]),  35,65},
  {&(_ZTV8S20985C1[44]),  44,65},
  {&(_ZTV8S20985C1[35]),  35,65},
  {&(_ZTV8S20985C1[49]),  49,65},
  {&(_ZTV8S20985C1[55]),  55,65},
  {&(_ZTV8S20985C1[63]),  63,65},
  {&(_tg__ZTV8S20985C2__8S20985C1[10]),  10,13},
  {&(_tg__ZTV8S20985C98S20985C2__8S20985C1[7]),  7,8},
  {&(_tg__ZTV8S20985C5__8S20985C98S20985C2__8S20985C1[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C98S20985C2__8S20985C1[3]),  3,4},
  {&(_tg__ZTV9S20985C10__8S20985C98S20985C2__8S20985C1[7]),  7,9},
  {&(_tg__ZTV8S20985C3__8S20985C2__8S20985C1[8]),  8,11},
  {&(_tg__ZTV8S20985C4__8S20985C2__8S20985C1[6]),  6,9},
  {&(_tg__ZTV8S20985C3__8S20985C2__8S20985C1[8]),  8,11},
  {&(_tg__ZTV8S20985C78S20985C4__A1__8S20985C2__8S20985C1[2]),  2,3},
  {&(_tg__ZTV8S20985C5__A1__8S20985C2__8S20985C1[5]),  5,6},
  {&(_tg__ZTV9S20985C10__8S20985C2__8S20985C1[7]),  7,9},
  {&(_tg__ZTV8S20985C3__8S20985C1[7]),  7,10},
  {&(_tg__ZTV8S20985C4__8S20985C3__8S20985C1[6]),  6,9},
  {&(_tg__ZTV8S20985C3__8S20985C1[7]),  7,10},
  {&(_tg__ZTV8S20985C78S20985C4__A1__8S20985C3__8S20985C1[2]),  2,3},
  {&(_tg__ZTV8S20985C4__8S20985C1[5]),  5,8},
  {&(_tg__ZTV8S20985C58S20985C4__8S20985C1[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C58S20985C4__8S20985C1[3]),  3,4},
  {&(_tg__ZTV8S20985C7__8S20985C4__8S20985C1[3]),  3,4},
  {&(_tg__ZTV8S20985C5__A1__8S20985C1[5]),  5,6},
  {&(_tg__ZTV8S20985C7__8S20985C5__A1__8S20985C1[3]),  3,4},
  {&(_tg__ZTV9S20985C10__8S20985C1[5]),  5,7},
  {&(_tg__ZTV8S20985C5__9S20985C10__8S20985C1[5]),  5,6},
  {&(_tg__ZTV8S20985C7__A1__9S20985C10__8S20985C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20985C1[];
extern  VTBL_ENTRY _ZTV8S20985C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20985C1[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C3D0Ev,_ZTv0_n24_N8S20985C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20985C3D0Ev,_ZThn40_N8S20985C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C3D1Ev,_ZTv0_n24_N8S20985C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20985C3D1Ev,_ZThn40_N8S20985C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C2D0Ev,_ZTv0_n24_N8S20985C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20985C2D0Ev,_ZThn48_N8S20985C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C2D1Ev,_ZTv0_n24_N8S20985C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20985C2D1Ev,_ZThn48_N8S20985C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20985C2D0Ev,_ZTv0_n32_N8S20985C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20985C2D0Ev,_ZThn8_N8S20985C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20985C2D1Ev,_ZTv0_n32_N8S20985C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20985C2D1Ev,_ZThn8_N8S20985C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C1D0Ev,_ZTv0_n24_N8S20985C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20985C1D0Ev,_ZThn60_N8S20985C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20985C1D1Ev,_ZTv0_n24_N8S20985C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20985C1D1Ev,_ZThn60_N8S20985C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20985C1D0Ev,_ZTv0_n32_N8S20985C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20985C1D0Ev,_ZThn20_N8S20985C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20985C1D1Ev,_ZTv0_n32_N8S20985C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20985C1D1Ev,_ZThn20_N8S20985C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20985C1D0Ev,_ZTv0_n44_N8S20985C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20985C1D0Ev,_ZThn12_N8S20985C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20985C1D1Ev,_ZTv0_n44_N8S20985C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20985C1D1Ev,_ZThn12_N8S20985C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20985C1 = {  "S20985C1", // class name
  bases_S20985C1, 17,
  &(vtc_S20985C1[0]), // expected_vtbl_contents
  &(vtt_S20985C1[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI8S20985C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20985C1),65, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20985C1),33, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20754C5  : S21216C26_nt , virtual S19894C34 {
  int s20754c5f0;
  virtual  ~S20754C5(); // _ZN8S20754C5D2Ev
  S20754C5(); // tgen
};
//SIG(-1 S20754C5) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S20754C5()
{
  extern Class_Descriptor cd_S20754C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20754C5, buf);
    S20754C5 *dp, &lv = *(dp=new (buf) S20754C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20754C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20754C5)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S20754C5");
    check_base_class_offset(lv, (S19894C34*), 0, "S20754C5");
    check_field_offset(lv, s20754c5f0, ABISELECT(8,4), "S20754C5.s20754c5f0");
    test_class_info(&lv, &cd_S20754C5);
    dp->~S20754C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20754C5(Test_S20754C5, "S20754C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20754C5C1Ev();
extern void _ZN8S20754C5D2Ev();
Name_Map name_map_S20754C5[] = {
  NSPAIR(_ZN8S20754C5C1Ev),
  NSPAIR(_ZN8S20754C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S20754C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20754C5[];
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY vtc_S20754C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S20754C5[];
static  VTT_ENTRY vtt_S20754C5[] = {
  {&(_ZTV8S20754C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
Class_Descriptor cd_S20754C5 = {  "S20754C5", // class name
  bases_S20754C5, 2,
  &(vtc_S20754C5[0]), // expected_vtbl_contents
  &(vtt_S20754C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20754C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20754C5),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20754C5),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20754C7  : virtual S19894C34 , S20754C5 , S21216C26_nt {
  long s20754c7f0;
  ~S20754C7(); // tgen
  S20754C7(); // tgen
};
//SIG(-1 S20754C7) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S20754C7()
{
  extern Class_Descriptor cd_S20754C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20754C7, buf);
    S20754C7 *dp, &lv = *(dp=new (buf) S20754C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20754C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20754C7)");
    check_base_class_offset(lv, (S19894C34*), 0, "S20754C7");
    check_base_class_offset(lv, (S19894C34*)(S20754C5*), 0, "S20754C7");
    check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*), 0, "S20754C7");
    check_base_class_offset(lv, (S20754C5*), 0, "S20754C7");
    /*is_ambiguous_... S20754C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S20754C7");
    check_field_offset(lv, s20754c7f0, ABISELECT(24,12), "S20754C7.s20754c7f0");
    test_class_info(&lv, &cd_S20754C7);
    dp->~S20754C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20754C7(Test_S20754C7, "S20754C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20754C7C1Ev();
extern void _ZN8S20754C7D1Ev();
Name_Map name_map_S20754C7[] = {
  NSPAIR(_ZN8S20754C7C1Ev),
  NSPAIR(_ZN8S20754C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S20754C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20754C5,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI8S20754C7[];
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
extern void ABISELECT(_ZThn16_N8S20754C7D1Ev,_ZThn8_N8S20754C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S20754C7D0Ev,_ZThn8_N8S20754C7D0Ev)();
static  VTBL_ENTRY vtc_S20754C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C7D1Ev,_ZThn8_N8S20754C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C7D0Ev,_ZThn8_N8S20754C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20754C7[];
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C5__8S20754C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
static  VTT_ENTRY vtt_S20754C7[] = {
  {&(_ZTV8S20754C7[3]),  3,9},
  {&(_tg__ZTV8S20754C5__8S20754C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
Class_Descriptor cd_S20754C7 = {  "S20754C7", // class name
  bases_S20754C7, 4,
  &(vtc_S20754C7[0]), // expected_vtbl_contents
  &(vtt_S20754C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20754C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20754C7),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20754C7),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  S20754C6  : S20754C7 , virtual S21216C26_nt , S19894C34 , virtual S20754C5 {
  virtual  ~S20754C6(); // _ZN8S20754C6D2Ev
  S20754C6(); // tgen
};
//SIG(-1 S20754C6) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} VBC3 vd Fi} BC5 Fl} VBC5 BC3 VBC4 vd}


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

static void Test_S20754C6()
{
  extern Class_Descriptor cd_S20754C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S20754C6, buf);
    S20754C6 *dp, &lv = *(dp=new (buf) S20754C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S20754C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20754C6)");
    check_base_class_offset(lv, (S19894C34*)(S20754C7*), ABISELECT(32,16), "S20754C6");
    check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*), ABISELECT(32,16), "S20754C6");
    /*is_ambiguous_... S20754C6::S20754C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*), ABISELECT(32,16), "S20754C6");
    check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*), 0, "S20754C6");
    check_base_class_offset(lv, (S20754C5*)(S20754C7*), 0, "S20754C6");
    /*is_ambiguous_... S20754C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*), ABISELECT(16,8), "S20754C6");
    check_base_class_offset(lv, (S20754C7*), 0, "S20754C6");
    /*is_ambiguous_... S20754C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(32,16), "S20754C6");
    /*is_ambiguous_... S20754C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S20754C6");
    /*is_ambiguous_... S20754C6::S20754C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*), ABISELECT(40,20), "S20754C6");
    /*is_ambiguous_... S20754C6::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*), ABISELECT(40,20), "S20754C6");
    test_class_info(&lv, &cd_S20754C6);
    dp->~S20754C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20754C6(Test_S20754C6, "S20754C6", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S20754C6C1Ev();
extern void _ZN8S20754C6D2Ev();
Name_Map name_map_S20754C6[] = {
  NSPAIR(_ZN8S20754C6C1Ev),
  NSPAIR(_ZN8S20754C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
static Base_Class bases_S20754C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20754C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20754C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20754C6[];
extern void _ZN8S20754C6D1Ev();
extern void _ZN8S20754C6D0Ev();
extern void ABISELECT(_ZThn16_N8S20754C6D1Ev,_ZThn8_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20754C6D0Ev,_ZThn8_N8S20754C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20754C6D1Ev,_ZThn16_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20754C6D0Ev,_ZThn16_N8S20754C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20754C6D1Ev,_ZThn20_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20754C6D0Ev,_ZThn20_N8S20754C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20754C6[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&_ZN8S20754C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C6D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C6D1Ev,_ZThn8_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C6D0Ev,_ZThn8_N8S20754C6D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20754C6[];
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C7__8S20754C6[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C7__8S20754C6[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C5__A1__8S20754C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
static  VTT_ENTRY vtt_S20754C6[] = {
  {&(_ZTV8S20754C6[5]),  5,22},
  {&(_tg__ZTV8S20754C7__8S20754C6[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C7__8S20754C6[3]),  3,5},
  {&(_ZTV8S20754C6[14]),  14,22},
  {&(_ZTV8S20754C6[20]),  20,22},
  {&(_tg__ZTV8S20754C5__A1__8S20754C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20754C6[];
extern  VTBL_ENTRY _ZTV8S20754C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C6[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20754C6D0Ev,_ZThn20_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20754C6D1Ev,_ZThn20_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20754C6D0Ev,_ZThn16_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20754C6D1Ev,_ZThn16_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20754C6 = {  "S20754C6", // class name
  bases_S20754C6, 9,
  &(vtc_S20754C6[0]), // expected_vtbl_contents
  &(vtt_S20754C6[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S20754C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20754C6),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20754C6),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20754C2  : virtual S19894C34 , virtual S21216C26_nt , virtual S20754C5 , S20754C6 , S20754C7 {
  ::S20754C6 s20754c2f0;
  ~S20754C2(); // tgen
  S20754C2(); // tgen
};
//SIG(-1 S20754C2) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC3 VBC2 vd Fi} BC5{ BC6{ VBC2 BC4 BC3 Fl} VBC3 BC2 VBC4 vd} BC6 FC5}


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

static void Test_S20754C2()
{
  extern Class_Descriptor cd_S20754C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S20754C2, buf);
    S20754C2 *dp, &lv = *(dp=new (buf) S20754C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S20754C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20754C2)");
    /*is_ambiguous_... S20754C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), ABISELECT(120,60), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*), ABISELECT(120,60), "S20754C2");
    check_base_class_offset(lv, (S19894C34*)(S20754C7*)(S20754C6*), ABISELECT(120,60), "S20754C2");
    check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*)(S20754C6*), ABISELECT(120,60), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C7*), ABISELECT(120,60), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*), ABISELECT(120,60), "S20754C2");
    /*is_ambiguous_... S20754C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(120,60), "S20754C2");
    /*is_ambiguous_... S20754C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C6*), ABISELECT(120,60), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*), ABISELECT(128,64), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*), ABISELECT(128,64), "S20754C2");
    /*is_ambiguous_... S20754C6::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C6*), ABISELECT(128,64), "S20754C2");
    check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*)(S20754C6*), 0, "S20754C2");
    check_base_class_offset(lv, (S20754C5*)(S20754C7*)(S20754C6*), 0, "S20754C2");
    /*is_ambiguous_... S20754C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*)(S20754C6*), ABISELECT(16,8), "S20754C2");
    check_base_class_offset(lv, (S20754C7*)(S20754C6*), 0, "S20754C2");
    /*is_ambiguous_... S20754C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C6*), 0, "S20754C2");
    check_base_class_offset(lv, (S20754C6*), 0, "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*), ABISELECT(32,16), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C7*), ABISELECT(32,16), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*), ABISELECT(48,24), "S20754C2");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S20754C7*), ABISELECT(32,16), "S20754C2");
    check_field_offset(lv, s20754c2f0, ABISELECT(64,32), "S20754C2.s20754c2f0");
    test_class_info(&lv, &cd_S20754C2);
    dp->~S20754C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20754C2(Test_S20754C2, "S20754C2", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN8S20754C2C1Ev();
extern void _ZN8S20754C2D1Ev();
Name_Map name_map_S20754C2[] = {
  NSPAIR(_ZN8S20754C2C1Ev),
  NSPAIR(_ZN8S20754C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20754C6;
extern VTBL_ENTRY _ZTI8S20754C6[];
extern  VTBL_ENTRY _ZTV8S20754C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
static Base_Class bases_S20754C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(120,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(128,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20754C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20754C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20754C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20754C7,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20754C2[];
extern void _ZN8S20754C2D1Ev();
extern void _ZN8S20754C2D0Ev();
extern void ABISELECT(_ZThn16_N8S20754C2D1Ev,_ZThn8_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20754C2D0Ev,_ZThn8_N8S20754C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S20754C2D1Ev,_ZThn16_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20754C2D0Ev,_ZThn16_N8S20754C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20754C2D1Ev,_ZThn24_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20754C2D0Ev,_ZThn24_N8S20754C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20754C2D1Ev,_ZTv0_n12_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S20754C2D1Ev,_ZThn60_N8S20754C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C2D0Ev,_ZTv0_n12_N8S20754C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S20754C2D0Ev,_ZThn60_N8S20754C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C2D1Ev,_ZTv0_n16_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20754C2D1Ev,_ZThn64_N8S20754C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C2D0Ev,_ZTv0_n16_N8S20754C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20754C2D0Ev,_ZThn64_N8S20754C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20754C2[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&_ZN8S20754C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C2D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C2D1Ev,_ZThn8_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C2D0Ev,_ZThn8_N8S20754C2D0Ev),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20754C2D1Ev,_ZThn16_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20754C2D0Ev,_ZThn16_N8S20754C2D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20754C2D1Ev,_ZThn24_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20754C2D0Ev,_ZThn24_N8S20754C2D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C2D1Ev,_ZTv0_n12_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C2D0Ev,_ZTv0_n12_N8S20754C2D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C2D1Ev,_ZTv0_n16_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C2D0Ev,_ZTv0_n16_N8S20754C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20754C2[];
extern void _ZN8S20754C6D1Ev();
extern void _ZN8S20754C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C6__8S20754C2[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&_ZN8S20754C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C6D0Ev,
};
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C78S20754C6__8S20754C2[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C78S20754C6__A1__8S20754C2[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn120_N8S20754C6D1Ev,_ZThn60_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn120_N8S20754C6D0Ev,_ZThn60_N8S20754C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S20754C6__8S20754C2[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20754C6D1Ev,_ZThn64_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20754C6D0Ev,_ZThn64_N8S20754C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20754C5__A1__8S20754C6__8S20754C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev),
};
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C7__A1__8S20754C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C7__A2__8S20754C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C5__8S20754C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
static  VTT_ENTRY vtt_S20754C2[] = {
  {&(_ZTV8S20754C2[5]),  5,31},
  {&(_tg__ZTV8S20754C6__8S20754C2[5]),  5,7},
  {&(_tg__ZTV8S20754C78S20754C6__8S20754C2[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C78S20754C6__A1__8S20754C2[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S20754C6__8S20754C2[3]),  3,5},
  {&(_tg__ZTV8S20754C5__A1__8S20754C6__8S20754C2[4]),  4,6},
  {&(_tg__ZTV8S20754C7__A1__8S20754C2[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C7__A2__8S20754C2[3]),  3,5},
  {&(_ZTV8S20754C2[23]),  23,31},
  {&(_ZTV8S20754C2[29]),  29,31},
  {&(_ZTV8S20754C2[14]),  14,31},
  {&(_tg__ZTV8S20754C5__8S20754C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20754C2[];
extern  VTBL_ENTRY _ZTV8S20754C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C2[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C6D0Ev,_ZThn64_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C6D1Ev,_ZThn64_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C6D0Ev,_ZThn60_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C6D1Ev,_ZThn60_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C2D0Ev,_ZTv0_n16_N8S20754C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C2D0Ev,_ZThn64_N8S20754C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C2D1Ev,_ZTv0_n16_N8S20754C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C2D1Ev,_ZThn64_N8S20754C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C2D0Ev,_ZTv0_n12_N8S20754C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C2D0Ev,_ZThn60_N8S20754C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C2D1Ev,_ZTv0_n12_N8S20754C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C2D1Ev,_ZThn60_N8S20754C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20754C2 = {  "S20754C2", // class name
  bases_S20754C2, 14,
  &(vtc_S20754C2[0]), // expected_vtbl_contents
  &(vtt_S20754C2[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI8S20754C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20754C2),31, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20754C2),12, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20754C8  : virtual S19894C34 , virtual S20754C5 , virtual S20754C6 , S21216C26_nt {
  __tsi64 s20754c8f0;
  ~S20754C8(); // tgen
  S20754C8(); // tgen
};
//SIG(-1 S20754C8) C1{ VBC2{ m} VBC3{ BC4{ vd m} VBC2 vd Fi} VBC5{ BC6{ VBC2 BC3 BC4 Fl} VBC4 BC2 VBC3 vd} BC4 FL}


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

static void Test_S20754C8()
{
  extern Class_Descriptor cd_S20754C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S20754C8, buf);
    S20754C8 *dp, &lv = *(dp=new (buf) S20754C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S20754C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20754C8)");
    /*is_ambiguous_... S20754C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S20754C8");
    /*is_ambiguous_... S20754C8::S20754C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*), 0, "S20754C8");
    check_base_class_offset(lv, (S19894C34*)(S20754C7*)(S20754C6*), 0, "S20754C8");
    check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*)(S20754C6*), 0, "S20754C8");
    /*is_ambiguous_... S20754C8::S20754C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*), ABISELECT(16,12), "S20754C8");
    /*is_ambiguous_... S20754C8::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*), ABISELECT(16,12), "S20754C8");
    /*is_ambiguous_... S20754C6::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C6*), ABISELECT(16,12), "S20754C8");
    check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*)(S20754C6*), ABISELECT(32,20), "S20754C8");
    check_base_class_offset(lv, (S20754C5*)(S20754C7*)(S20754C6*), ABISELECT(32,20), "S20754C8");
    /*is_ambiguous_... S20754C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*)(S20754C6*), ABISELECT(48,28), "S20754C8");
    check_base_class_offset(lv, (S20754C7*)(S20754C6*), ABISELECT(32,20), "S20754C8");
    /*is_ambiguous_... S20754C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C6*), ABISELECT(64,36), "S20754C8");
    /*is_ambiguous_... S20754C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C6*), ABISELECT(32,20), "S20754C8");
    check_base_class_offset(lv, (S20754C6*), ABISELECT(32,20), "S20754C8");
    /*is_ambiguous_... S20754C8::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S20754C8");
    check_field_offset(lv, s20754c8f0, ABISELECT(8,4), "S20754C8.s20754c8f0");
    test_class_info(&lv, &cd_S20754C8);
    dp->~S20754C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20754C8(Test_S20754C8, "S20754C8", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S20754C8C1Ev();
extern void _ZN8S20754C8D1Ev();
Name_Map name_map_S20754C8[] = {
  NSPAIR(_ZN8S20754C8C1Ev),
  NSPAIR(_ZN8S20754C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20754C6;
extern VTBL_ENTRY _ZTI8S20754C6[];
extern  VTBL_ENTRY _ZTV8S20754C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S20754C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,28), //bcp->offset
    22, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20754C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(64,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19894C34,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20754C6,    ABISELECT(32,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20754C8[];
extern void _ZN8S20754C8D1Ev();
extern void _ZN8S20754C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20754C8D1Ev,_ZTv0_n16_N8S20754C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20754C8D1Ev,_ZThn12_N8S20754C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C8D0Ev,_ZTv0_n16_N8S20754C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20754C8D0Ev,_ZThn12_N8S20754C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20754C8D1Ev,_ZTv0_n24_N8S20754C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S20754C8D1Ev,_ZThn20_N8S20754C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20754C8D0Ev,_ZTv0_n24_N8S20754C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S20754C8D0Ev,_ZThn20_N8S20754C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20754C8D1Ev,_ZTvn8_n24_N8S20754C8D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20754C8D0Ev,_ZTvn8_n24_N8S20754C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20754C8D1Ev,_ZTv0_n12_N8S20754C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20754C8D1Ev,_ZThn36_N8S20754C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C8D0Ev,_ZTv0_n12_N8S20754C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S20754C8D0Ev,_ZThn36_N8S20754C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20754C8[] = {
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&_ZN8S20754C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C8D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C8D1Ev,_ZTv0_n16_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C8D0Ev,_ZTv0_n16_N8S20754C8D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C8D1Ev,_ZTv0_n24_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C8D0Ev,_ZTv0_n24_N8S20754C8D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C8D1Ev,_ZTvn8_n24_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C8D0Ev,_ZTvn8_n24_N8S20754C8D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C8D1Ev,_ZTv0_n12_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C8D0Ev,_ZTv0_n12_N8S20754C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20754C8[];
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C5__8S20754C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void _ZN8S20754C6D1Ev();
extern void _ZN8S20754C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C6__8S20754C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&_ZN8S20754C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C6D0Ev,
};
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C78S20754C6__8S20754C8[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C78S20754C6__A1__8S20754C8[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20754C6D1Ev,_ZThn16_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20754C6D0Ev,_ZThn16_N8S20754C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S20754C6__8S20754C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20754C5__A1__8S20754C6__8S20754C8[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev),
};
static  VTT_ENTRY vtt_S20754C8[] = {
  {&(_ZTV8S20754C8[6]),  6,31},
  {&(_ZTV8S20754C8[12]),  12,31},
  {&(_ZTV8S20754C8[20]),  20,31},
  {&(_ZTV8S20754C8[24]),  24,31},
  {&(_ZTV8S20754C8[29]),  29,31},
  {&(_tg__ZTV8S20754C5__8S20754C8[3]),  3,5},
  {&(_tg__ZTV8S20754C6__8S20754C8[5]),  5,7},
  {&(_tg__ZTV8S20754C78S20754C6__8S20754C8[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C78S20754C6__A1__8S20754C8[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S20754C6__8S20754C8[3]),  3,5},
  {&(_tg__ZTV8S20754C5__A1__8S20754C6__8S20754C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20754C8[];
extern  VTBL_ENTRY _ZTV8S20754C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C8[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20754C6D0Ev,_ZThn16_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20754C6D1Ev,_ZThn16_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C8D0Ev,_ZTv0_n12_N8S20754C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20754C8D0Ev,_ZThn36_N8S20754C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C8D1Ev,_ZTv0_n12_N8S20754C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20754C8D1Ev,_ZThn36_N8S20754C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20754C8D0Ev,_ZTv0_n24_N8S20754C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20754C8D0Ev,_ZThn20_N8S20754C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20754C8D1Ev,_ZTv0_n24_N8S20754C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20754C8D1Ev,_ZThn20_N8S20754C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C8D0Ev,_ZTv0_n16_N8S20754C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20754C8D0Ev,_ZThn12_N8S20754C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C8D1Ev,_ZTv0_n16_N8S20754C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20754C8D1Ev,_ZThn12_N8S20754C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20754C8 = {  "S20754C8", // class name
  bases_S20754C8, 11,
  &(vtc_S20754C8[0]), // expected_vtbl_contents
  &(vtt_S20754C8[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S20754C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20754C8),31, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20754C8),11, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20754C1  : virtual S20754C2 , virtual S20754C8 , S20754C7 {
  __tsi64 s20754c1f0:14;
  int s20754c1f1;
  virtual  ~S20754C1(); // _ZN8S20754C1D2Ev
  S20754C1(); // tgen
};
//SIG(1 S20754C1) C1{ VBC2{ VBC3{ m} VBC4{ vd m} VBC5{ BC4 VBC3 vd Fi} BC6{ BC7{ VBC3 BC5 BC4 Fl} VBC4 BC3 VBC5 vd} BC7 FC6} VBC8{ VBC3 VBC5 VBC6 BC4 FL} BC7 vd FL:14 Fi}


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

static void Test_S20754C1()
{
  extern Class_Descriptor cd_S20754C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,32)];
    init_test(&cd_S20754C1, buf);
    S20754C1 *dp, &lv = *(dp=new (buf) S20754C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,124), "sizeof(S20754C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20754C1)");
    /*is_ambiguous_... S20754C2::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C2*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*), 0, "S20754C1");
    check_base_class_offset(lv, (S19894C34*)(S20754C7*)(S20754C6*)(S20754C2*), 0, "S20754C1");
    check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*)(S20754C6*)(S20754C2*), 0, "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C7*)(S20754C2*), 0, "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*)(S20754C2*), 0, "S20754C1");
    /*is_ambiguous_... S20754C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C8*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C7*)(S20754C6*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*)(S20754C6*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C7*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C5*)(S20754C7*), 0, "S20754C1");
    /*is_ambiguous_... S20754C2::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C2*), ABISELECT(160,84), "S20754C1");
    /*is_ambiguous_... S20754C6::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C6*)(S20754C2*), ABISELECT(160,84), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C6*), ABISELECT(160,84), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C5 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*), ABISELECT(168,88), "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C2*), ABISELECT(168,88), "S20754C1");
    /*is_ambiguous_... S20754C6::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C6*)(S20754C2*), ABISELECT(168,88), "S20754C1");
    /*is_ambiguous_... S20754C8::S20754C5 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C8*), ABISELECT(168,88), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C6*), ABISELECT(168,88), "S20754C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*)(S20754C6*)(S20754C2*), ABISELECT(40,24), "S20754C1");
    check_base_class_offset(lv, (S20754C5*)(S20754C7*)(S20754C6*)(S20754C2*), ABISELECT(40,24), "S20754C1");
    /*is_ambiguous_... S20754C7::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*)(S20754C6*)(S20754C2*), ABISELECT(56,32), "S20754C1");
    check_base_class_offset(lv, (S20754C7*)(S20754C6*)(S20754C2*), ABISELECT(40,24), "S20754C1");
    /*is_ambiguous_... S20754C6::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C6*)(S20754C2*), ABISELECT(40,24), "S20754C1");
    check_base_class_offset(lv, (S20754C6*)(S20754C2*), ABISELECT(40,24), "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*)(S20754C2*), ABISELECT(72,40), "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C7*)(S20754C2*), ABISELECT(72,40), "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*)(S20754C2*), ABISELECT(88,48), "S20754C1");
    /*is_ambiguous_... S20754C2::S20754C7 */ AMB_check_base_class_offset(lv, (S20754C7*)(S20754C2*), ABISELECT(72,40), "S20754C1");
    check_base_class_offset(lv, (S20754C2*), ABISELECT(40,24), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*)(S20754C6*), ABISELECT(200,108), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C7*)(S20754C6*), ABISELECT(200,108), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*)(S20754C6*), ABISELECT(216,116), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S20754C7*)(S20754C6*), ABISELECT(200,108), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S20754C6*), ABISELECT(200,108), "S20754C1");
    check_base_class_offset(lv, (S20754C6*)(S20754C8*), ABISELECT(200,108), "S20754C1");
    /*is_ambiguous_... S20754C8::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C8*), ABISELECT(184,96), "S20754C1");
    check_base_class_offset(lv, (S20754C8*), ABISELECT(184,96), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C5*)(S20754C7*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C7 */ AMB_check_base_class_offset(lv, (S20754C5*)(S20754C7*), 0, "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S20754C7*), ABISELECT(16,8), "S20754C1");
    /*is_ambiguous_... S20754C1::S20754C7 */ AMB_check_base_class_offset(lv, (S20754C7*), 0, "S20754C1");
    set_bf_and_test(lv, s20754c1f0, ABISELECT(32,16), 0, 14, 1, "S20754C1");
    set_bf_and_test(lv, s20754c1f0, ABISELECT(32,16), 0, 14, hide_sll(1LL<<13), "S20754C1");
    check_field_offset(lv, s20754c1f1, ABISELECT(36,20), "S20754C1.s20754c1f1");
    test_class_info(&lv, &cd_S20754C1);
    dp->~S20754C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20754C1(Test_S20754C1, "S20754C1", ABISELECT(232,124));

#else // __cplusplus

extern void _ZN8S20754C1C1Ev();
extern void _ZN8S20754C1D2Ev();
Name_Map name_map_S20754C1[] = {
  NSPAIR(_ZN8S20754C1C1Ev),
  NSPAIR(_ZN8S20754C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20754C6;
extern VTBL_ENTRY _ZTI8S20754C6[];
extern  VTBL_ENTRY _ZTV8S20754C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
extern Class_Descriptor cd_S20754C2;
extern VTBL_ENTRY _ZTI8S20754C2[];
extern  VTBL_ENTRY _ZTV8S20754C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S20754C6;
extern VTBL_ENTRY _ZTI8S20754C6[];
extern  VTBL_ENTRY _ZTV8S20754C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C8;
extern VTBL_ENTRY _ZTI8S20754C8[];
extern  VTBL_ENTRY _ZTV8S20754C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C8[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C5;
extern VTBL_ENTRY _ZTI8S20754C5[];
extern  VTBL_ENTRY _ZTV8S20754C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S20754C7;
extern VTBL_ENTRY _ZTI8S20754C7[];
extern  VTBL_ENTRY _ZTV8S20754C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C7[];
static Base_Class bases_S20754C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(160,84), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21216C26_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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(168,88), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,32), //bcp->offset
    22, //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
    7, //immediately_derived
  0, 0},
  {&cd_S20754C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20754C6,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(88,48), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20754C7,    ABISELECT(72,40), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20754C2,    ABISELECT(40,24), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20754C5,    ABISELECT(200,108), //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
    15, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(216,116), //bcp->offset
    63, //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
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20754C7,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20754C6,    ABISELECT(200,108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20754C8,    ABISELECT(184,96), //bcp->offset
    46, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S20754C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20754C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20754C1[];
extern void _ZN8S20754C1D1Ev();
extern void _ZN8S20754C1D0Ev();
extern void ABISELECT(_ZThn16_N8S20754C1D1Ev,_ZThn8_N8S20754C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20754C1D0Ev,_ZThn8_N8S20754C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20754C1D1Ev,_ZTv0_n24_N8S20754C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20754C1D1Ev,_ZThn24_N8S20754C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20754C1D0Ev,_ZTv0_n24_N8S20754C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20754C1D0Ev,_ZThn24_N8S20754C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20754C1D1Ev,_ZTvn8_n24_N8S20754C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20754C1D0Ev,_ZTvn8_n24_N8S20754C1D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S20754C1D1Ev,_ZTvn16_n24_N8S20754C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S20754C1D0Ev,_ZTvn16_n24_N8S20754C1D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S20754C1D1Ev,_ZTvn24_n24_N8S20754C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S20754C1D0Ev,_ZTvn24_n24_N8S20754C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20754C1D1Ev,_ZTv0_n12_N8S20754C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20754C1D1Ev,_ZThn84_N8S20754C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C1D0Ev,_ZTv0_n12_N8S20754C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20754C1D0Ev,_ZThn84_N8S20754C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C1D1Ev,_ZTv0_n16_N8S20754C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S20754C1D1Ev,_ZThn88_N8S20754C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C1D0Ev,_ZTv0_n16_N8S20754C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S20754C1D0Ev,_ZThn88_N8S20754C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20754C1D1Ev,_ZTv0_n28_N8S20754C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S20754C1D1Ev,_ZThn96_N8S20754C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20754C1D0Ev,_ZTv0_n28_N8S20754C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S20754C1D0Ev,_ZThn96_N8S20754C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20754C1D1Ev,_ZTv0_n24_N8S20754C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S20754C1D1Ev,_ZThn108_N8S20754C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20754C1D0Ev,_ZTv0_n24_N8S20754C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S20754C1D0Ev,_ZThn108_N8S20754C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20754C1D1Ev,_ZTvn8_n24_N8S20754C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20754C1D0Ev,_ZTvn8_n24_N8S20754C1D0Ev)();
static  VTBL_ENTRY vtc_S20754C1[] = {
  ABISELECT(200,108),
  ABISELECT(184,96),
  ABISELECT(168,88),
  ABISELECT(160,84),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&_ZN8S20754C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C1D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C1D1Ev,_ZThn8_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20754C1D0Ev,_ZThn8_N8S20754C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C1D1Ev,_ZTv0_n24_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C1D0Ev,_ZTv0_n24_N8S20754C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C1D1Ev,_ZTvn8_n24_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C1D0Ev,_ZTvn8_n24_N8S20754C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S20754C1D1Ev,_ZTvn16_n24_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S20754C1D0Ev,_ZTvn16_n24_N8S20754C1D0Ev),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S20754C1D1Ev,_ZTvn24_n24_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S20754C1D0Ev,_ZTvn24_n24_N8S20754C1D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C1D1Ev,_ZTv0_n12_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C1D0Ev,_ZTv0_n12_N8S20754C1D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C1D1Ev,_ZTv0_n16_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C1D0Ev,_ZTv0_n16_N8S20754C1D0Ev),
  ABISELECT(-184,-96),
  ABISELECT(-24,-12),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20754C1D1Ev,_ZTv0_n28_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20754C1D0Ev,_ZTv0_n28_N8S20754C1D0Ev),
  ABISELECT(-200,-108),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-200,-108),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C1D1Ev,_ZTv0_n24_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C1D0Ev,_ZTv0_n24_N8S20754C1D0Ev),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S20754C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C1D1Ev,_ZTvn8_n24_N8S20754C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C1D0Ev,_ZTvn8_n24_N8S20754C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20754C1[];
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C7__A3__8S20754C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C7__A4__8S20754C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void _ZN8S20754C2D1Ev();
extern void _ZN8S20754C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C2__8S20754C1[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&_ZN8S20754C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C2D0Ev,
};
extern void _ZN8S20754C6D1Ev();
extern void _ZN8S20754C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C68S20754C2__8S20754C1[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&_ZN8S20754C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C6D0Ev,
};
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C78S20754C68S20754C2__8S20754C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C78S20754C68S20754C2__A1__8S20754C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn120_N8S20754C6D1Ev,_ZThn60_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn120_N8S20754C6D0Ev,_ZThn60_N8S20754C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S20754C68S20754C2__8S20754C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20754C6D1Ev,_ZThn64_N8S20754C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20754C6D0Ev,_ZThn64_N8S20754C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20754C5__A1__8S20754C68S20754C2__8S20754C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev),
};
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C78S20754C2__A1__8S20754C1[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C78S20754C2__A2__8S20754C1[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20754C2D1Ev,_ZTv0_n12_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S20754C2D1Ev,_ZThn60_N8S20754C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20754C2D0Ev,_ZTv0_n12_N8S20754C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S20754C2D0Ev,_ZThn60_N8S20754C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S20754C2__8S20754C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C2D1Ev,_ZTv0_n12_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C2D0Ev,_ZTv0_n12_N8S20754C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20754C2D1Ev,_ZTv0_n16_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20754C2D1Ev,_ZThn64_N8S20754C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20754C2D0Ev,_ZTv0_n16_N8S20754C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20754C2D0Ev,_ZThn64_N8S20754C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20754C5__8S20754C2__8S20754C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C2D1Ev,_ZTv0_n16_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C2D0Ev,_ZTv0_n16_N8S20754C2D0Ev),
};
extern void ABISELECT(_ZThn32_N8S20754C2D1Ev,_ZThn16_N8S20754C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20754C2D0Ev,_ZThn16_N8S20754C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20754C7__A1__8S20754C2__8S20754C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20754C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20754C2D1Ev,_ZThn16_N8S20754C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20754C2D0Ev,_ZThn16_N8S20754C2D0Ev),
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C5__8S20754C1[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void _ZN8S20754C8D1Ev();
extern void _ZN8S20754C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C8__8S20754C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&_ZN8S20754C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20754C8D1Ev,_ZTv0_n16_N8S20754C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20754C8D0Ev,_ZTv0_n16_N8S20754C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20754C5__8S20754C8__8S20754C1[] = {
  ABISELECT(16,8),
  ABISELECT(-168,-88),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C8D1Ev,_ZTv0_n16_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C8D0Ev,_ZTv0_n16_N8S20754C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20754C8D1Ev,_ZTv0_n24_N8S20754C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20754C8D1Ev,_ZThn12_N8S20754C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20754C8D0Ev,_ZTv0_n24_N8S20754C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20754C8D0Ev,_ZThn12_N8S20754C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20754C6__8S20754C8__8S20754C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-200,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C8D1Ev,_ZTv0_n24_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20754C8D0Ev,_ZTv0_n24_N8S20754C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S20754C8D1Ev,_ZTvn8_n24_N8S20754C8D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20754C8D0Ev,_ZTvn8_n24_N8S20754C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S20754C78S20754C6__A2__8S20754C8__8S20754C1[] = {
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C8D1Ev,_ZTvn8_n24_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20754C8D0Ev,_ZTvn8_n24_N8S20754C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20754C8D1Ev,_ZTv0_n12_N8S20754C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20754C8D0Ev,_ZTv0_n12_N8S20754C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A3__8S20754C8__8S20754C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20754C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C8D1Ev,_ZTv0_n12_N8S20754C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C8D0Ev,_ZTv0_n12_N8S20754C8D0Ev),
};
extern void _ZN8S20754C6D1Ev();
extern void _ZN8S20754C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C6__A1__8S20754C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-200,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&_ZN8S20754C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C6D0Ev,
};
extern void _ZN8S20754C7D1Ev();
extern void _ZN8S20754C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C78S20754C6__A2__8S20754C1[] = {
  ABISELECT(-200,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C7[0]),
  (VTBL_ENTRY)&_ZN8S20754C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C7D0Ev,
};
extern void _ZN8S20754C5D1Ev();
extern void _ZN8S20754C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20754C58S20754C78S20754C6__A3__8S20754C1[] = {
  ABISELECT(-200,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20754C5[0]),
  (VTBL_ENTRY)&_ZN8S20754C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20754C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S20754C6__A1__8S20754C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20754C5__A1__8S20754C6__A1__8S20754C1[] = {
  ABISELECT(32,20),
  ABISELECT(-168,-88),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S20754C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev),
};
static  VTT_ENTRY vtt_S20754C1[] = {
  {&(_ZTV8S20754C1[8]),  8,67},
  {&(_tg__ZTV8S20754C7__A3__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C7__A4__8S20754C1[3]),  3,5},
  {&(_ZTV8S20754C1[20]),  20,67},
  {&(_ZTV8S20754C1[38]),  38,67},
  {&(_ZTV8S20754C1[44]),  44,67},
  {&(_ZTV8S20754C1[24]),  24,67},
  {&(_ZTV8S20754C1[29]),  29,67},
  {&(_ZTV8S20754C1[33]),  33,67},
  {&(_ZTV8S20754C1[53]),  53,67},
  {&(_ZTV8S20754C1[61]),  61,67},
  {&(_ZTV8S20754C1[65]),  65,67},
  {&(_tg__ZTV8S20754C2__8S20754C1[5]),  5,7},
  {&(_tg__ZTV8S20754C68S20754C2__8S20754C1[5]),  5,7},
  {&(_tg__ZTV8S20754C78S20754C68S20754C2__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C78S20754C68S20754C2__A1__8S20754C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S20754C68S20754C2__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C5__A1__8S20754C68S20754C2__8S20754C1[4]),  4,6},
  {&(_tg__ZTV8S20754C78S20754C2__A1__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C78S20754C2__A2__8S20754C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__8S20754C2__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C5__8S20754C2__8S20754C1[4]),  4,6},
  {&(_tg__ZTV8S20754C7__A1__8S20754C2__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C5__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C8__8S20754C1[6]),  6,8},
  {&(_tg__ZTV8S20754C5__8S20754C8__8S20754C1[4]),  4,6},
  {&(_tg__ZTV8S20754C6__8S20754C8__8S20754C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt8S20754C78S20754C6__A2__8S20754C8__8S20754C1[2]),  2,4},
  {&(_tg__ZTV12S21216C26_nt__A3__8S20754C8__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C6__A1__8S20754C1[5]),  5,7},
  {&(_tg__ZTV8S20754C78S20754C6__A2__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C58S20754C78S20754C6__A3__8S20754C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S20754C6__A1__8S20754C1[3]),  3,5},
  {&(_tg__ZTV8S20754C5__A1__8S20754C6__A1__8S20754C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20754C1[];
extern  VTBL_ENTRY _ZTV8S20754C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20754C1[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20754C8D0Ev,_ZTv0_n24_N8S20754C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20754C8D0Ev,_ZThn12_N8S20754C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20754C8D1Ev,_ZTv0_n24_N8S20754C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20754C8D1Ev,_ZThn12_N8S20754C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C2D0Ev,_ZTv0_n16_N8S20754C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C2D0Ev,_ZThn64_N8S20754C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C2D1Ev,_ZTv0_n16_N8S20754C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C2D1Ev,_ZThn64_N8S20754C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C2D0Ev,_ZTv0_n12_N8S20754C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C2D0Ev,_ZThn60_N8S20754C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C2D1Ev,_ZTv0_n12_N8S20754C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C2D1Ev,_ZThn60_N8S20754C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C6D0Ev,_ZTv0_n16_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C6D0Ev,_ZThn64_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C6D1Ev,_ZTv0_n16_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20754C6D1Ev,_ZThn64_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D0Ev,_ZTv0_n12_N8S20754C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C6D0Ev,_ZThn60_N8S20754C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C6D1Ev,_ZTv0_n12_N8S20754C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20754C6D1Ev,_ZThn60_N8S20754C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20754C1D0Ev,_ZTv0_n28_N8S20754C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20754C1D0Ev,_ZThn96_N8S20754C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20754C1D1Ev,_ZTv0_n28_N8S20754C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20754C1D1Ev,_ZThn96_N8S20754C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C1D0Ev,_ZTv0_n16_N8S20754C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20754C1D0Ev,_ZThn88_N8S20754C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20754C1D1Ev,_ZTv0_n16_N8S20754C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20754C1D1Ev,_ZThn88_N8S20754C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C1D0Ev,_ZTv0_n12_N8S20754C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20754C1D0Ev,_ZThn84_N8S20754C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20754C1D1Ev,_ZTv0_n12_N8S20754C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20754C1D1Ev,_ZThn84_N8S20754C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20754C1D0Ev,_ZTv0_n24_N8S20754C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20754C1D0Ev,_ZThn108_N8S20754C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20754C1D0Ev,_ZThn24_N8S20754C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20754C1D1Ev,_ZTv0_n24_N8S20754C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20754C1D1Ev,_ZThn108_N8S20754C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20754C1D1Ev,_ZThn24_N8S20754C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20754C1 = {  "S20754C1", // class name
  bases_S20754C1, 27,
  &(vtc_S20754C1[0]), // expected_vtbl_contents
  &(vtt_S20754C1[0]), // expected_vtt_contents
  ABISELECT(232,124), // object size
  NSPAIRA(_ZTI8S20754C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20754C1),67, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20754C1),34, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1145C3  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s1145c3f0;
  int s1145c3f1;
  void *s1145c3f2;
  char s1145c3f3;
  int s1145c3f4;
  virtual  ~S1145C3(); // _ZN7S1145C3D1Ev
  virtual void  v4(); // _ZN7S1145C32v4Ev
  virtual void  v5(); // _ZN7S1145C32v5Ev
  virtual void  v6(); // _ZN7S1145C32v6Ev
  virtual void  v7(); // _ZN7S1145C32v7Ev
  S1145C3(); // tgen
};
//SIG(-1 S1145C3) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S1145C3 ::~S1145C3(){ note_dtor("S1145C3", this);}
void  S1145C3 ::v4(){vfunc_called(this, "_ZN7S1145C32v4Ev");}
void  S1145C3 ::v5(){vfunc_called(this, "_ZN7S1145C32v5Ev");}
void  S1145C3 ::v6(){vfunc_called(this, "_ZN7S1145C32v6Ev");}
void  S1145C3 ::v7(){vfunc_called(this, "_ZN7S1145C32v7Ev");}
S1145C3 ::S1145C3(){ note_ctor("S1145C3", this);} // tgen

static void Test_S1145C3()
{
  extern Class_Descriptor cd_S1145C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S1145C3, buf);
    S1145C3 *dp, &lv = *(dp=new (buf) S1145C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S1145C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1145C3)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S1145C3");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S1145C3");
    check_field_offset(lv, s1145c3f0, ABISELECT(24,12), "S1145C3.s1145c3f0");
    check_field_offset(lv, s1145c3f1, ABISELECT(48,28), "S1145C3.s1145c3f1");
    check_field_offset(lv, s1145c3f2, ABISELECT(56,32), "S1145C3.s1145c3f2");
    check_field_offset(lv, s1145c3f3, ABISELECT(64,36), "S1145C3.s1145c3f3");
    check_field_offset(lv, s1145c3f4, ABISELECT(68,40), "S1145C3.s1145c3f4");
    test_class_info(&lv, &cd_S1145C3);
    dp->~S1145C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1145C3(Test_S1145C3, "S1145C3", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S1145C3C1Ev();
extern void _ZN7S1145C3D1Ev();
Name_Map name_map_S1145C3[] = {
  NSPAIR(_ZN7S1145C3C1Ev),
  NSPAIR(_ZN7S1145C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S1145C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1145C3[];
extern void _ZN7S1145C3D1Ev();
extern void _ZN7S1145C3D0Ev();
extern void _ZN7S1145C32v4Ev();
extern void _ZN7S1145C32v5Ev();
extern void _ZN7S1145C32v6Ev();
extern void _ZN7S1145C32v7Ev();
static  VTBL_ENTRY vtc_S1145C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1145C3[0]),
  (VTBL_ENTRY)&_ZN7S1145C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1145C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S1145C3[];
extern  VTBL_ENTRY _ZTV7S1145C3[];
Class_Descriptor cd_S1145C3 = {  "S1145C3", // class name
  bases_S1145C3, 2,
  &(vtc_S1145C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S1145C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1145C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1145C2  : S1145C3 {
  char s1145c2f0;
  virtual  ~S1145C2(); // _ZN7S1145C2D1Ev
  virtual void  v8(); // _ZN7S1145C22v8Ev
  virtual void  v9(); // _ZN7S1145C22v9Ev
  virtual void  v10(); // _ZN7S1145C23v10Ev
  virtual void  v11(); // _ZN7S1145C23v11Ev
  S1145C2(); // tgen
};
//SIG(-1 S1145C2) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v5 v6 v7 v8 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd v1 v2 v3 v4 Fc}


 S1145C2 ::~S1145C2(){ note_dtor("S1145C2", this);}
void  S1145C2 ::v8(){vfunc_called(this, "_ZN7S1145C22v8Ev");}
void  S1145C2 ::v9(){vfunc_called(this, "_ZN7S1145C22v9Ev");}
void  S1145C2 ::v10(){vfunc_called(this, "_ZN7S1145C23v10Ev");}
void  S1145C2 ::v11(){vfunc_called(this, "_ZN7S1145C23v11Ev");}
S1145C2 ::S1145C2(){ note_ctor("S1145C2", this);} // tgen

static void Test_S1145C2()
{
  extern Class_Descriptor cd_S1145C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S1145C2, buf);
    S1145C2 *dp, &lv = *(dp=new (buf) S1145C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S1145C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1145C2)");
    check_base_class_offset(lv, (S19894C6_nt*)(S1145C3*), ABISELECT(8,4), "S1145C2");
    check_base_class_offset(lv, (S5757C19_nt*)(S1145C3*), ABISELECT(16,8), "S1145C2");
    check_base_class_offset(lv, (S1145C3*), 0, "S1145C2");
    check_field_offset(lv, s1145c2f0, ABISELECT(72,44), "S1145C2.s1145c2f0");
    test_class_info(&lv, &cd_S1145C2);
    dp->~S1145C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1145C2(Test_S1145C2, "S1145C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S1145C2C1Ev();
extern void _ZN7S1145C2D1Ev();
Name_Map name_map_S1145C2[] = {
  NSPAIR(_ZN7S1145C2C1Ev),
  NSPAIR(_ZN7S1145C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S1145C3;
extern VTBL_ENTRY _ZTI7S1145C3[];
extern  VTBL_ENTRY _ZTV7S1145C3[];
static Base_Class bases_S1145C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1145C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1145C2[];
extern void _ZN7S1145C2D1Ev();
extern void _ZN7S1145C2D0Ev();
extern void _ZN7S1145C32v4Ev();
extern void _ZN7S1145C32v5Ev();
extern void _ZN7S1145C32v6Ev();
extern void _ZN7S1145C32v7Ev();
extern void _ZN7S1145C22v8Ev();
extern void _ZN7S1145C22v9Ev();
extern void _ZN7S1145C23v10Ev();
extern void _ZN7S1145C23v11Ev();
static  VTBL_ENTRY vtc_S1145C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1145C2[0]),
  (VTBL_ENTRY)&_ZN7S1145C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1145C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1145C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1145C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1145C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1145C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S1145C2[];
extern  VTBL_ENTRY _ZTV7S1145C2[];
Class_Descriptor cd_S1145C2 = {  "S1145C2", // class name
  bases_S1145C2, 3,
  &(vtc_S1145C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S1145C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1145C2),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  S1145C9_nt  {
  void *s1145c9f0;
  void  mf1145c9(); // _ZN10S1145C9_nt8mf1145c9Ev
};
//SIG(-1 S1145C9_nt) C1{ m Fp}


void  S1145C9_nt ::mf1145c9(){}

//skip512 S1145C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1145C1  : S1145C2 {
  void *s1145c1f0[2];
  ::S1145C9_nt s1145c1f1;
  virtual  ~S1145C1(); // _ZN7S1145C1D1Ev
  virtual void  v1(); // _ZN7S1145C12v1Ev
  virtual void  v2(); // _ZN7S1145C12v2Ev
  virtual void  v3(); // _ZN7S1145C12v3Ev
  S1145C1(); // tgen
};
//SIG(1 S1145C1) C1{ BC2{ BC3{ BC4{ m Fp} BC5{ m Fp} vd v4 v5 v6 v7 FC6{ m FC7{ m Fp Fi FC8{ m}} Fi} Fi Fp Fc Fi} vd v8 v9 v10 v11 Fc} vd v1 v2 v3 Fp[2] FC9{ m Fp}}


 S1145C1 ::~S1145C1(){ note_dtor("S1145C1", this);}
void  S1145C1 ::v1(){vfunc_called(this, "_ZN7S1145C12v1Ev");}
void  S1145C1 ::v2(){vfunc_called(this, "_ZN7S1145C12v2Ev");}
void  S1145C1 ::v3(){vfunc_called(this, "_ZN7S1145C12v3Ev");}
S1145C1 ::S1145C1(){ note_ctor("S1145C1", this);} // tgen

static void Test_S1145C1()
{
  extern Class_Descriptor cd_S1145C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,16)];
    init_test(&cd_S1145C1, buf);
    S1145C1 *dp, &lv = *(dp=new (buf) S1145C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S1145C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1145C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S1145C3*)(S1145C2*), ABISELECT(8,4), "S1145C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S1145C3*)(S1145C2*), ABISELECT(16,8), "S1145C1");
    check_base_class_offset(lv, (S1145C3*)(S1145C2*), 0, "S1145C1");
    check_base_class_offset(lv, (S1145C2*), 0, "S1145C1");
    check_field_offset(lv, s1145c1f0, ABISELECT(80,48), "S1145C1.s1145c1f0");
    check_field_offset(lv, s1145c1f1, ABISELECT(96,56), "S1145C1.s1145c1f1");
    test_class_info(&lv, &cd_S1145C1);
    dp->~S1145C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1145C1(Test_S1145C1, "S1145C1", ABISELECT(104,60));

#else // __cplusplus

extern void _ZN7S1145C1C1Ev();
extern void _ZN7S1145C1D1Ev();
Name_Map name_map_S1145C1[] = {
  NSPAIR(_ZN7S1145C1C1Ev),
  NSPAIR(_ZN7S1145C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S1145C3;
extern VTBL_ENTRY _ZTI7S1145C3[];
extern  VTBL_ENTRY _ZTV7S1145C3[];
extern Class_Descriptor cd_S1145C2;
extern VTBL_ENTRY _ZTI7S1145C2[];
extern  VTBL_ENTRY _ZTV7S1145C2[];
static Base_Class bases_S1145C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1145C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1145C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1145C1[];
extern void _ZN7S1145C1D1Ev();
extern void _ZN7S1145C1D0Ev();
extern void _ZN7S1145C32v4Ev();
extern void _ZN7S1145C32v5Ev();
extern void _ZN7S1145C32v6Ev();
extern void _ZN7S1145C32v7Ev();
extern void _ZN7S1145C22v8Ev();
extern void _ZN7S1145C22v9Ev();
extern void _ZN7S1145C23v10Ev();
extern void _ZN7S1145C23v11Ev();
extern void _ZN7S1145C12v1Ev();
extern void _ZN7S1145C12v2Ev();
extern void _ZN7S1145C12v3Ev();
static  VTBL_ENTRY vtc_S1145C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1145C1[0]),
  (VTBL_ENTRY)&_ZN7S1145C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1145C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1145C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1145C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1145C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1145C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1145C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1145C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1145C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1145C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1145C1[];
extern  VTBL_ENTRY _ZTV7S1145C1[];
Class_Descriptor cd_S1145C1 = {  "S1145C1", // class name
  bases_S1145C1, 4,
  &(vtc_S1145C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,60), // object size
  NSPAIRA(_ZTI7S1145C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1145C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19680C7  : S21216C26_nt , virtual S19894C34 {
  int s19680c7f0;
  virtual  ~S19680C7(); // _ZN8S19680C7D2Ev
  S19680C7(); // tgen
};
//SIG(-1 S19680C7) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S19680C7()
{
  extern Class_Descriptor cd_S19680C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19680C7, buf);
    S19680C7 *dp, &lv = *(dp=new (buf) S19680C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19680C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19680C7)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S19680C7");
    check_base_class_offset(lv, (S19894C34*), 0, "S19680C7");
    check_field_offset(lv, s19680c7f0, ABISELECT(8,4), "S19680C7.s19680c7f0");
    test_class_info(&lv, &cd_S19680C7);
    dp->~S19680C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19680C7(Test_S19680C7, "S19680C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19680C7C1Ev();
extern void _ZN8S19680C7D2Ev();
Name_Map name_map_S19680C7[] = {
  NSPAIR(_ZN8S19680C7C1Ev),
  NSPAIR(_ZN8S19680C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19680C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19680C7[];
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY vtc_S19680C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19680C7[];
static  VTT_ENTRY vtt_S19680C7[] = {
  {&(_ZTV8S19680C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
Class_Descriptor cd_S19680C7 = {  "S19680C7", // class name
  bases_S19680C7, 2,
  &(vtc_S19680C7[0]), // expected_vtbl_contents
  &(vtt_S19680C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19680C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19680C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19680C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19680C9  : virtual S19894C34 , S19680C7 , S21216C26_nt {
  long s19680c9f0;
  ~S19680C9(); // tgen
  S19680C9(); // tgen
};
//SIG(-1 S19680C9) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S19680C9()
{
  extern Class_Descriptor cd_S19680C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19680C9, buf);
    S19680C9 *dp, &lv = *(dp=new (buf) S19680C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19680C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19680C9)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19680C9");
    check_base_class_offset(lv, (S19894C34*)(S19680C7*), 0, "S19680C9");
    check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*), 0, "S19680C9");
    check_base_class_offset(lv, (S19680C7*), 0, "S19680C9");
    /*is_ambiguous_... S19680C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S19680C9");
    check_field_offset(lv, s19680c9f0, ABISELECT(24,12), "S19680C9.s19680c9f0");
    test_class_info(&lv, &cd_S19680C9);
    dp->~S19680C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19680C9(Test_S19680C9, "S19680C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19680C9C1Ev();
extern void _ZN8S19680C9D1Ev();
Name_Map name_map_S19680C9[] = {
  NSPAIR(_ZN8S19680C9C1Ev),
  NSPAIR(_ZN8S19680C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19680C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19680C7,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI8S19680C9[];
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19680C9D1Ev,_ZThn8_N8S19680C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19680C9D0Ev,_ZThn8_N8S19680C9D0Ev)();
static  VTBL_ENTRY vtc_S19680C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19680C9D1Ev,_ZThn8_N8S19680C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19680C9D0Ev,_ZThn8_N8S19680C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19680C9[];
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
static  VTT_ENTRY vtt_S19680C9[] = {
  {&(_ZTV8S19680C9[3]),  3,9},
  {&(_tg__ZTV8S19680C7__8S19680C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
Class_Descriptor cd_S19680C9 = {  "S19680C9", // class name
  bases_S19680C9, 4,
  &(vtc_S19680C9[0]), // expected_vtbl_contents
  &(vtt_S19680C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19680C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19680C9),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19680C9),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  S19680C8  : S19680C9 , virtual S21216C26_nt , S19894C34 , virtual S19680C7 {
  virtual  ~S19680C8(); // _ZN8S19680C8D2Ev
  S19680C8(); // tgen
};
//SIG(-1 S19680C8) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} VBC3 vd Fi} BC5 Fl} VBC5 BC3 VBC4 vd}


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

static void Test_S19680C8()
{
  extern Class_Descriptor cd_S19680C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19680C8, buf);
    S19680C8 *dp, &lv = *(dp=new (buf) S19680C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19680C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19680C8)");
    check_base_class_offset(lv, (S19894C34*)(S19680C9*), ABISELECT(32,16), "S19680C8");
    check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*), ABISELECT(32,16), "S19680C8");
    /*is_ambiguous_... S19680C8::S19680C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*), ABISELECT(32,16), "S19680C8");
    check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*), 0, "S19680C8");
    check_base_class_offset(lv, (S19680C7*)(S19680C9*), 0, "S19680C8");
    /*is_ambiguous_... S19680C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*), ABISELECT(16,8), "S19680C8");
    check_base_class_offset(lv, (S19680C9*), 0, "S19680C8");
    /*is_ambiguous_... S19680C8::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(32,16), "S19680C8");
    /*is_ambiguous_... S19680C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19680C8");
    /*is_ambiguous_... S19680C8::S19680C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*), ABISELECT(40,20), "S19680C8");
    /*is_ambiguous_... S19680C8::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*), ABISELECT(40,20), "S19680C8");
    test_class_info(&lv, &cd_S19680C8);
    dp->~S19680C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19680C8(Test_S19680C8, "S19680C8", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19680C8C1Ev();
extern void _ZN8S19680C8D2Ev();
Name_Map name_map_S19680C8[] = {
  NSPAIR(_ZN8S19680C8C1Ev),
  NSPAIR(_ZN8S19680C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
static Base_Class bases_S19680C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19680C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19680C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19680C8[];
extern void _ZN8S19680C8D1Ev();
extern void _ZN8S19680C8D0Ev();
extern void ABISELECT(_ZThn16_N8S19680C8D1Ev,_ZThn8_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19680C8D0Ev,_ZThn8_N8S19680C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19680C8D1Ev,_ZThn16_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19680C8D0Ev,_ZThn16_N8S19680C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19680C8D1Ev,_ZThn20_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19680C8D0Ev,_ZThn20_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19680C8[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&_ZN8S19680C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C8D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19680C8D1Ev,_ZThn8_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19680C8D0Ev,_ZThn8_N8S19680C8D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19680C8[];
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C9__8S19680C8[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C9__8S19680C8[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C7__A1__8S19680C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
static  VTT_ENTRY vtt_S19680C8[] = {
  {&(_ZTV8S19680C8[5]),  5,22},
  {&(_tg__ZTV8S19680C9__8S19680C8[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C9__8S19680C8[3]),  3,5},
  {&(_ZTV8S19680C8[14]),  14,22},
  {&(_ZTV8S19680C8[20]),  20,22},
  {&(_tg__ZTV8S19680C7__A1__8S19680C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19680C8[];
extern  VTBL_ENTRY _ZTV8S19680C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C8[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19680C8D0Ev,_ZThn20_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19680C8D1Ev,_ZThn20_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19680C8D0Ev,_ZThn16_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19680C8D1Ev,_ZThn16_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19680C8 = {  "S19680C8", // class name
  bases_S19680C8, 9,
  &(vtc_S19680C8[0]), // expected_vtbl_contents
  &(vtt_S19680C8[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19680C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19680C8),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19680C8),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19680C5  : virtual S19894C34 , virtual S21216C26_nt , virtual S19680C7 , S19680C8 , S19680C9 {
  ::S19680C8 s19680c5f0;
  ~S19680C5(); // tgen
  S19680C5(); // tgen
};
//SIG(-1 S19680C5) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC3 VBC2 vd Fi} BC5{ BC6{ VBC2 BC4 BC3 Fl} VBC3 BC2 VBC4 vd} BC6 FC5}


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

static void Test_S19680C5()
{
  extern Class_Descriptor cd_S19680C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S19680C5, buf);
    S19680C5 *dp, &lv = *(dp=new (buf) S19680C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S19680C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19680C5)");
    /*is_ambiguous_... S19680C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), ABISELECT(120,60), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*), ABISELECT(120,60), "S19680C5");
    check_base_class_offset(lv, (S19894C34*)(S19680C9*)(S19680C8*), ABISELECT(120,60), "S19680C5");
    check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*)(S19680C8*), ABISELECT(120,60), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C9*), ABISELECT(120,60), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*), ABISELECT(120,60), "S19680C5");
    /*is_ambiguous_... S19680C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(120,60), "S19680C5");
    /*is_ambiguous_... S19680C8::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C8*), ABISELECT(120,60), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*), ABISELECT(128,64), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*), ABISELECT(128,64), "S19680C5");
    /*is_ambiguous_... S19680C8::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C8*), ABISELECT(128,64), "S19680C5");
    check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*)(S19680C8*), 0, "S19680C5");
    check_base_class_offset(lv, (S19680C7*)(S19680C9*)(S19680C8*), 0, "S19680C5");
    /*is_ambiguous_... S19680C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*)(S19680C8*), ABISELECT(16,8), "S19680C5");
    check_base_class_offset(lv, (S19680C9*)(S19680C8*), 0, "S19680C5");
    /*is_ambiguous_... S19680C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C8*), 0, "S19680C5");
    check_base_class_offset(lv, (S19680C8*), 0, "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*), ABISELECT(32,16), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C9*), ABISELECT(32,16), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*), ABISELECT(48,24), "S19680C5");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19680C9*), ABISELECT(32,16), "S19680C5");
    check_field_offset(lv, s19680c5f0, ABISELECT(64,32), "S19680C5.s19680c5f0");
    test_class_info(&lv, &cd_S19680C5);
    dp->~S19680C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19680C5(Test_S19680C5, "S19680C5", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN8S19680C5C1Ev();
extern void _ZN8S19680C5D1Ev();
Name_Map name_map_S19680C5[] = {
  NSPAIR(_ZN8S19680C5C1Ev),
  NSPAIR(_ZN8S19680C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19680C8;
extern VTBL_ENTRY _ZTI8S19680C8[];
extern  VTBL_ENTRY _ZTV8S19680C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C8[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
static Base_Class bases_S19680C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(120,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(128,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19680C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19680C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19680C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(48,24), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19680C9,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19680C5[];
extern void _ZN8S19680C5D1Ev();
extern void _ZN8S19680C5D0Ev();
extern void ABISELECT(_ZThn16_N8S19680C5D1Ev,_ZThn8_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S19680C5D0Ev,_ZThn8_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S19680C5D1Ev,_ZThn16_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S19680C5D0Ev,_ZThn16_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S19680C5D1Ev,_ZThn24_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S19680C5D0Ev,_ZThn24_N8S19680C5D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn120_N8S19680C5D1Ev,_ZThn60_N8S19680C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn120_N8S19680C5D0Ev,_ZThn60_N8S19680C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C5D1Ev,_ZThn64_N8S19680C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C5D0Ev,_ZThn64_N8S19680C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19680C5[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&_ZN8S19680C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C5D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19680C5D1Ev,_ZThn8_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19680C5D0Ev,_ZThn8_N8S19680C5D0Ev),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19680C5D1Ev,_ZThn16_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19680C5D0Ev,_ZThn16_N8S19680C5D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19680C5D1Ev,_ZThn24_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19680C5D0Ev,_ZThn24_N8S19680C5D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19680C5[];
extern void _ZN8S19680C8D1Ev();
extern void _ZN8S19680C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C8__8S19680C5[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&_ZN8S19680C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C8D0Ev,
};
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C98S19680C8__8S19680C5[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C98S19680C8__A1__8S19680C5[] = {
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19680C8D1Ev,_ZThn60_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn120_N8S19680C8D0Ev,_ZThn60_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19680C8__8S19680C5[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C8D1Ev,_ZThn64_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C8D0Ev,_ZThn64_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C7__A1__8S19680C8__8S19680C5[] = {
  ABISELECT(-128,-64),
  ABISELECT(-8,-4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev),
};
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C9__A1__8S19680C5[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C9__A2__8S19680C5[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C5[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
static  VTT_ENTRY vtt_S19680C5[] = {
  {&(_ZTV8S19680C5[5]),  5,31},
  {&(_tg__ZTV8S19680C8__8S19680C5[5]),  5,7},
  {&(_tg__ZTV8S19680C98S19680C8__8S19680C5[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C98S19680C8__A1__8S19680C5[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19680C8__8S19680C5[3]),  3,5},
  {&(_tg__ZTV8S19680C7__A1__8S19680C8__8S19680C5[4]),  4,6},
  {&(_tg__ZTV8S19680C9__A1__8S19680C5[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C9__A2__8S19680C5[3]),  3,5},
  {&(_ZTV8S19680C5[23]),  23,31},
  {&(_ZTV8S19680C5[29]),  29,31},
  {&(_ZTV8S19680C5[14]),  14,31},
  {&(_tg__ZTV8S19680C7__8S19680C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19680C5[];
extern  VTBL_ENTRY _ZTV8S19680C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C5[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C8D0Ev,_ZThn64_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C8D1Ev,_ZThn64_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C8D0Ev,_ZThn60_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C8D1Ev,_ZThn60_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C5D0Ev,_ZThn64_N8S19680C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C5D1Ev,_ZThn64_N8S19680C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C5D0Ev,_ZThn60_N8S19680C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C5D1Ev,_ZThn60_N8S19680C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19680C5 = {  "S19680C5", // class name
  bases_S19680C5, 14,
  &(vtc_S19680C5[0]), // expected_vtbl_contents
  &(vtt_S19680C5[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI8S19680C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19680C5),31, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19680C5),12, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19680C3  : S21216C26_nt , virtual S19680C5 {
  ~S19680C3(); // tgen
  S19680C3(); // tgen
};
//SIG(-1 S19680C3) C1{ BC2{ vd m} VBC3{ VBC4{ m} VBC2 VBC5{ BC2 VBC4 vd Fi} BC6{ BC7{ VBC4 BC5 BC2 Fl} VBC2 BC4 VBC5 vd} BC7 FC6}}


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

static void Test_S19680C3()
{
  extern Class_Descriptor cd_S19680C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[20];
    init_test(&cd_S19680C3, buf);
    S19680C3 *dp, &lv = *(dp=new (buf) S19680C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,76), "sizeof(S19680C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19680C3)");
    /*is_ambiguous_... S19680C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19680C3");
    /*is_ambiguous_... S19680C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C5*), 0, "S19680C3");
    /*is_ambiguous_... S19680C3::S19680C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*), 0, "S19680C3");
    check_base_class_offset(lv, (S19894C34*)(S19680C9*)(S19680C8*)(S19680C5*), 0, "S19680C3");
    check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*)(S19680C8*)(S19680C5*), 0, "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C9*)(S19680C5*), 0, "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*)(S19680C5*), 0, "S19680C3");
    /*is_ambiguous_... S19680C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C5*), ABISELECT(128,64), "S19680C3");
    /*is_ambiguous_... S19680C8::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C8*)(S19680C5*), ABISELECT(128,64), "S19680C3");
    /*is_ambiguous_... S19680C3::S19680C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*), ABISELECT(136,68), "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C5*), ABISELECT(136,68), "S19680C3");
    /*is_ambiguous_... S19680C8::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C8*)(S19680C5*), ABISELECT(136,68), "S19680C3");
    check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(8,4), "S19680C3");
    check_base_class_offset(lv, (S19680C7*)(S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(8,4), "S19680C3");
    /*is_ambiguous_... S19680C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(24,12), "S19680C3");
    check_base_class_offset(lv, (S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(8,4), "S19680C3");
    /*is_ambiguous_... S19680C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C8*)(S19680C5*), ABISELECT(8,4), "S19680C3");
    check_base_class_offset(lv, (S19680C8*)(S19680C5*), ABISELECT(8,4), "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*)(S19680C5*), ABISELECT(40,20), "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C9*)(S19680C5*), ABISELECT(40,20), "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*)(S19680C5*), ABISELECT(56,28), "S19680C3");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19680C9*)(S19680C5*), ABISELECT(40,20), "S19680C3");
    check_base_class_offset(lv, (S19680C5*), ABISELECT(8,4), "S19680C3");
    test_class_info(&lv, &cd_S19680C3);
    dp->~S19680C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19680C3(Test_S19680C3, "S19680C3", ABISELECT(152,76));

#else // __cplusplus

extern void _ZN8S19680C3C1Ev();
extern void _ZN8S19680C3D1Ev();
Name_Map name_map_S19680C3[] = {
  NSPAIR(_ZN8S19680C3C1Ev),
  NSPAIR(_ZN8S19680C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19680C8;
extern VTBL_ENTRY _ZTI8S19680C8[];
extern  VTBL_ENTRY _ZTV8S19680C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C8[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
extern Class_Descriptor cd_S19680C5;
extern VTBL_ENTRY _ZTI8S19680C5[];
extern  VTBL_ENTRY _ZTV8S19680C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C5[];
static Base_Class bases_S19680C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(128,64), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(136,68), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19680C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19680C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19680C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19680C9,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19680C5,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19680C3[];
extern void _ZN8S19680C3D1Ev();
extern void _ZN8S19680C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S19680C3D1Ev,_ZTv0_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S19680C3D1Ev,_ZThn4_N8S19680C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19680C3D0Ev,_ZTv0_n24_N8S19680C3D0Ev)();
extern void ABISELECT(_ZThn8_N8S19680C3D0Ev,_ZThn4_N8S19680C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19680C3D1Ev,_ZTvn8_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19680C3D0Ev,_ZTvn8_n24_N8S19680C3D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19680C3D1Ev,_ZTvn16_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19680C3D0Ev,_ZTvn16_n24_N8S19680C3D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19680C3D1Ev,_ZTvn24_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19680C3D0Ev,_ZTvn24_n24_N8S19680C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19680C3D1Ev,_ZTv0_n12_N8S19680C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C3D1Ev,_ZThn64_N8S19680C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C3D0Ev,_ZTv0_n12_N8S19680C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C3D0Ev,_ZThn64_N8S19680C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C3D1Ev,_ZTv0_n16_N8S19680C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19680C3D1Ev,_ZThn68_N8S19680C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C3D0Ev,_ZTv0_n16_N8S19680C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19680C3D0Ev,_ZThn68_N8S19680C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19680C3[] = {
  ABISELECT(136,68),
  ABISELECT(128,64),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&_ZN8S19680C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C3D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19680C3D1Ev,_ZTv0_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19680C3D0Ev,_ZTv0_n24_N8S19680C3D0Ev),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19680C3D1Ev,_ZTvn8_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19680C3D0Ev,_ZTvn8_n24_N8S19680C3D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19680C3D1Ev,_ZTvn16_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19680C3D0Ev,_ZTvn16_n24_N8S19680C3D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19680C3D1Ev,_ZTvn24_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19680C3D0Ev,_ZTvn24_n24_N8S19680C3D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C3D1Ev,_ZTv0_n12_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C3D0Ev,_ZTv0_n12_N8S19680C3D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C3D1Ev,_ZTv0_n16_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C3D0Ev,_ZTv0_n16_N8S19680C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19680C3[];
extern void _ZN8S19680C5D1Ev();
extern void _ZN8S19680C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C5__8S19680C3[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&_ZN8S19680C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C5D0Ev,
};
extern void _ZN8S19680C8D1Ev();
extern void _ZN8S19680C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C88S19680C5__8S19680C3[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&_ZN8S19680C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C8D0Ev,
};
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C98S19680C88S19680C5__8S19680C3[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C98S19680C88S19680C5__A1__8S19680C3[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19680C8D1Ev,_ZThn60_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn120_N8S19680C8D0Ev,_ZThn60_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19680C88S19680C5__8S19680C3[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C8D1Ev,_ZThn64_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C8D0Ev,_ZThn64_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C7__A1__8S19680C88S19680C5__8S19680C3[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev),
};
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C98S19680C5__A1__8S19680C3[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C98S19680C5__A2__8S19680C3[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn120_N8S19680C5D1Ev,_ZThn60_N8S19680C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn120_N8S19680C5D0Ev,_ZThn60_N8S19680C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19680C5__8S19680C3[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C5D1Ev,_ZThn64_N8S19680C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C5D0Ev,_ZThn64_N8S19680C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C5__8S19680C3[] = {
  ABISELECT(-128,-64),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev),
};
extern void ABISELECT(_ZThn32_N8S19680C5D1Ev,_ZThn16_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S19680C5D0Ev,_ZThn16_N8S19680C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19680C9__A1__8S19680C5__8S19680C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19680C5D1Ev,_ZThn16_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19680C5D0Ev,_ZThn16_N8S19680C5D0Ev),
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C3[] = {
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
static  VTT_ENTRY vtt_S19680C3[] = {
  {&(_ZTV8S19680C3[6]),  6,40},
  {&(_ZTV8S19680C3[14]),  14,40},
  {&(_ZTV8S19680C3[32]),  32,40},
  {&(_ZTV8S19680C3[38]),  38,40},
  {&(_ZTV8S19680C3[18]),  18,40},
  {&(_ZTV8S19680C3[23]),  23,40},
  {&(_ZTV8S19680C3[27]),  27,40},
  {&(_tg__ZTV8S19680C5__8S19680C3[5]),  5,7},
  {&(_tg__ZTV8S19680C88S19680C5__8S19680C3[5]),  5,7},
  {&(_tg__ZTV8S19680C98S19680C88S19680C5__8S19680C3[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C98S19680C88S19680C5__A1__8S19680C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19680C88S19680C5__8S19680C3[3]),  3,5},
  {&(_tg__ZTV8S19680C7__A1__8S19680C88S19680C5__8S19680C3[4]),  4,6},
  {&(_tg__ZTV8S19680C98S19680C5__A1__8S19680C3[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C98S19680C5__A2__8S19680C3[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__8S19680C5__8S19680C3[3]),  3,5},
  {&(_tg__ZTV8S19680C7__8S19680C5__8S19680C3[4]),  4,6},
  {&(_tg__ZTV8S19680C9__A1__8S19680C5__8S19680C3[3]),  3,5},
  {&(_tg__ZTV8S19680C7__8S19680C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19680C3[];
extern  VTBL_ENTRY _ZTV8S19680C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C3[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C5D0Ev,_ZThn64_N8S19680C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C5D1Ev,_ZThn64_N8S19680C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C5D0Ev,_ZThn60_N8S19680C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C5D1Ev,_ZThn60_N8S19680C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C8D0Ev,_ZThn64_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C8D1Ev,_ZThn64_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C8D0Ev,_ZThn60_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C8D1Ev,_ZThn60_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C3D0Ev,_ZTv0_n16_N8S19680C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19680C3D0Ev,_ZThn68_N8S19680C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C3D1Ev,_ZTv0_n16_N8S19680C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19680C3D1Ev,_ZThn68_N8S19680C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C3D0Ev,_ZTv0_n12_N8S19680C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C3D0Ev,_ZThn64_N8S19680C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C3D1Ev,_ZTv0_n12_N8S19680C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C3D1Ev,_ZThn64_N8S19680C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19680C3D0Ev,_ZTv0_n24_N8S19680C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19680C3D0Ev,_ZThn4_N8S19680C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19680C3D1Ev,_ZTv0_n24_N8S19680C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19680C3D1Ev,_ZThn4_N8S19680C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19680C3 = {  "S19680C3", // class name
  bases_S19680C3, 16,
  &(vtc_S19680C3[0]), // expected_vtbl_contents
  &(vtt_S19680C3[0]), // expected_vtt_contents
  ABISELECT(152,76), // object size
  NSPAIRA(_ZTI8S19680C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19680C3),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19680C3),19, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19680C1  : virtual S19486C9_nt , virtual S19680C3 , S21216C26_nt {
  __tsi64 s19680c1f0:10;
  virtual  ~S19680C1(); // _ZN8S19680C1D2Ev
  S19680C1(); // tgen
};
//SIG(1 S19680C1) C1{ VBC2{ m FD[10]} VBC3{ BC4{ vd m} VBC5{ VBC6{ m} VBC4 VBC7{ BC4 VBC6 vd Fi} BC8{ BC9{ VBC6 BC7 BC4 Fl} VBC4 BC6 VBC7 vd} BC9 FC8}} BC4 vd FL:10}


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

static void Test_S19680C1()
{
  extern Class_Descriptor cd_S19680C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,52)];
    init_test(&cd_S19680C1, buf);
    S19680C1 *dp, &lv = *(dp=new (buf) S19680C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,204), "sizeof(S19680C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19680C1)");
    check_base_class_offset(lv, (S19486C9_nt*), ABISELECT(16,8), "S19680C1");
    /*is_ambiguous_... S19680C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C3*), ABISELECT(176,128), "S19680C1");
    /*is_ambiguous_... S19680C5::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C5*), 0, "S19680C1");
    /*is_ambiguous_... S19680C1::S19680C7 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*), 0, "S19680C1");
    check_base_class_offset(lv, (S19894C34*)(S19680C9*)(S19680C8*)(S19680C5*), 0, "S19680C1");
    check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*)(S19680C8*)(S19680C5*), 0, "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C9*)(S19680C5*), 0, "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C7*)(S19680C9*)(S19680C5*), 0, "S19680C1");
    /*is_ambiguous_... S19680C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C5*), ABISELECT(304,192), "S19680C1");
    /*is_ambiguous_... S19680C8::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C8*)(S19680C5*), ABISELECT(304,192), "S19680C1");
    /*is_ambiguous_... S19680C1::S19680C7 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*), ABISELECT(312,196), "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C5*), ABISELECT(312,196), "S19680C1");
    /*is_ambiguous_... S19680C8::S19680C7 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C8*)(S19680C5*), ABISELECT(312,196), "S19680C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(184,132), "S19680C1");
    check_base_class_offset(lv, (S19680C7*)(S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(184,132), "S19680C1");
    /*is_ambiguous_... S19680C9::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(200,140), "S19680C1");
    check_base_class_offset(lv, (S19680C9*)(S19680C8*)(S19680C5*), ABISELECT(184,132), "S19680C1");
    /*is_ambiguous_... S19680C8::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19680C8*)(S19680C5*), ABISELECT(184,132), "S19680C1");
    check_base_class_offset(lv, (S19680C8*)(S19680C5*), ABISELECT(184,132), "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C7*)(S19680C9*)(S19680C5*), ABISELECT(216,148), "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19680C7*)(S19680C9*)(S19680C5*), ABISELECT(216,148), "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19680C9*)(S19680C5*), ABISELECT(232,156), "S19680C1");
    /*is_ambiguous_... S19680C5::S19680C9 */ AMB_check_base_class_offset(lv, (S19680C9*)(S19680C5*), ABISELECT(216,148), "S19680C1");
    check_base_class_offset(lv, (S19680C5*)(S19680C3*), ABISELECT(184,132), "S19680C1");
    check_base_class_offset(lv, (S19680C3*), ABISELECT(176,128), "S19680C1");
    /*is_ambiguous_... S19680C1::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), 0, "S19680C1");
    set_bf_and_test(lv, s19680c1f0, ABISELECT(8,4), 0, 10, 1, "S19680C1");
    set_bf_and_test(lv, s19680c1f0, ABISELECT(8,4), 0, 10, hide_sll(1LL<<9), "S19680C1");
    test_class_info(&lv, &cd_S19680C1);
    dp->~S19680C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19680C1(Test_S19680C1, "S19680C1", ABISELECT(336,204));

#else // __cplusplus

extern void _ZN8S19680C1C1Ev();
extern void _ZN8S19680C1D2Ev();
Name_Map name_map_S19680C1[] = {
  NSPAIR(_ZN8S19680C1C1Ev),
  NSPAIR(_ZN8S19680C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19486C9_nt;
extern VTBL_ENTRY _ZTI11S19486C9_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19680C8;
extern VTBL_ENTRY _ZTI8S19680C8[];
extern  VTBL_ENTRY _ZTV8S19680C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C8[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C7;
extern VTBL_ENTRY _ZTI8S19680C7[];
extern  VTBL_ENTRY _ZTV8S19680C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C7[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19680C9;
extern VTBL_ENTRY _ZTI8S19680C9[];
extern  VTBL_ENTRY _ZTV8S19680C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C9[];
extern Class_Descriptor cd_S19680C5;
extern VTBL_ENTRY _ZTI8S19680C5[];
extern  VTBL_ENTRY _ZTV8S19680C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C5[];
extern Class_Descriptor cd_S19680C3;
extern VTBL_ENTRY _ZTI8S19680C3[];
extern  VTBL_ENTRY _ZTV8S19680C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19680C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19486C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    ABISELECT(176,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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(304,192), //bcp->offset
    40, //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
    11, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(312,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(312,196), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    ABISELECT(184,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(184,132), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(200,140), //bcp->offset
    27, //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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19680C9,    ABISELECT(184,132), //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19680C8,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(216,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19680C7,    ABISELECT(216,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(232,156), //bcp->offset
    36, //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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19680C9,    ABISELECT(216,148), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19680C5,    ABISELECT(184,132), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19680C3,    ABISELECT(176,128), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19680C1[];
extern void _ZN8S19680C1D1Ev();
extern void _ZN8S19680C1D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S19680C1D1Ev,_ZTv0_n28_N8S19680C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19680C1D1Ev,_ZThn128_N8S19680C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19680C1D0Ev,_ZTv0_n28_N8S19680C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19680C1D0Ev,_ZThn128_N8S19680C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19680C1D1Ev,_ZTv0_n24_N8S19680C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S19680C1D1Ev,_ZThn132_N8S19680C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19680C1D0Ev,_ZTv0_n24_N8S19680C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S19680C1D0Ev,_ZThn132_N8S19680C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19680C1D1Ev,_ZTvn8_n24_N8S19680C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19680C1D0Ev,_ZTvn8_n24_N8S19680C1D0Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19680C1D1Ev,_ZTvn16_n24_N8S19680C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19680C1D0Ev,_ZTvn16_n24_N8S19680C1D0Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19680C1D1Ev,_ZTvn24_n24_N8S19680C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19680C1D0Ev,_ZTvn24_n24_N8S19680C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19680C1D1Ev,_ZTv0_n12_N8S19680C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19680C1D1Ev,_ZThn192_N8S19680C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C1D0Ev,_ZTv0_n12_N8S19680C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19680C1D0Ev,_ZThn192_N8S19680C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C1D1Ev,_ZTv0_n16_N8S19680C1D1Ev)();
extern void ABISELECT(_ZThn312_N8S19680C1D1Ev,_ZThn196_N8S19680C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C1D0Ev,_ZTv0_n16_N8S19680C1D0Ev)();
extern void ABISELECT(_ZThn312_N8S19680C1D0Ev,_ZThn196_N8S19680C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19680C1[] = {
  ABISELECT(312,196),
  ABISELECT(304,192),
  0,
  ABISELECT(184,132),
  ABISELECT(176,128),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&_ZN8S19680C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C1D0Ev,
  ABISELECT(-176,-128),
  ABISELECT(136,68),
  ABISELECT(128,64),
  ABISELECT(-176,-128),
  ABISELECT(8,4),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19680C1D1Ev,_ZTv0_n28_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19680C1D0Ev,_ZTv0_n28_N8S19680C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19680C1D1Ev,_ZTv0_n24_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19680C1D0Ev,_ZTv0_n24_N8S19680C1D0Ev),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19680C1D1Ev,_ZTvn8_n24_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19680C1D0Ev,_ZTvn8_n24_N8S19680C1D0Ev),
  ABISELECT(-216,-148),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19680C1D1Ev,_ZTvn16_n24_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19680C1D0Ev,_ZTvn16_n24_N8S19680C1D0Ev),
  ABISELECT(-232,-156),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19680C1D1Ev,_ZTvn24_n24_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19680C1D0Ev,_ZTvn24_n24_N8S19680C1D0Ev),
  ABISELECT(-304,-192),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C1D1Ev,_ZTv0_n12_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C1D0Ev,_ZTv0_n12_N8S19680C1D0Ev),
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI8S19680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C1D1Ev,_ZTv0_n16_N8S19680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C1D0Ev,_ZTv0_n16_N8S19680C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19680C1[];
extern void _ZN8S19680C3D1Ev();
extern void _ZN8S19680C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C3__8S19680C1[] = {
  ABISELECT(136,68),
  ABISELECT(128,64),
  ABISELECT(-176,-128),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&_ZN8S19680C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19680C3D1Ev,_ZTv0_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S19680C3D1Ev,_ZThn4_N8S19680C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19680C3D0Ev,_ZTv0_n24_N8S19680C3D0Ev)();
extern void ABISELECT(_ZThn8_N8S19680C3D0Ev,_ZThn4_N8S19680C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C5__8S19680C3__8S19680C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-184,-132),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19680C3D1Ev,_ZTv0_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19680C3D0Ev,_ZTv0_n24_N8S19680C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19680C3D1Ev,_ZTv0_n12_N8S19680C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C3D1Ev,_ZThn64_N8S19680C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C3D0Ev,_ZTv0_n12_N8S19680C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C3D0Ev,_ZThn64_N8S19680C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A1__8S19680C3__8S19680C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C3D1Ev,_ZTv0_n12_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C3D0Ev,_ZTv0_n12_N8S19680C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19680C3D1Ev,_ZTv0_n16_N8S19680C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19680C3D1Ev,_ZThn68_N8S19680C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C3D0Ev,_ZTv0_n16_N8S19680C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19680C3D0Ev,_ZThn68_N8S19680C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C3__8S19680C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-312,-196),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C3D1Ev,_ZTv0_n16_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C3D0Ev,_ZTv0_n16_N8S19680C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S19680C3D1Ev,_ZTvn8_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19680C3D0Ev,_ZTvn8_n24_N8S19680C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19680C98S19680C88S19680C5__A4__8S19680C3__8S19680C1[] = {
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19680C3D1Ev,_ZTvn8_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19680C3D0Ev,_ZTvn8_n24_N8S19680C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n48_N8S19680C3D1Ev,_ZTvn16_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19680C3D0Ev,_ZTvn16_n24_N8S19680C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19680C98S19680C5__A1__8S19680C3__8S19680C1[] = {
  ABISELECT(-216,-148),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19680C3D1Ev,_ZTvn16_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19680C3D0Ev,_ZTvn16_n24_N8S19680C3D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19680C3D1Ev,_ZTvn24_n24_N8S19680C3D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19680C3D0Ev,_ZTvn24_n24_N8S19680C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt8S19680C98S19680C5__A6__8S19680C3__8S19680C1[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19680C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19680C3D1Ev,_ZTvn24_n24_N8S19680C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19680C3D0Ev,_ZTvn24_n24_N8S19680C3D0Ev),
};
extern void _ZN8S19680C5D1Ev();
extern void _ZN8S19680C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C5__8S19680C1[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&_ZN8S19680C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C5D0Ev,
};
extern void _ZN8S19680C8D1Ev();
extern void _ZN8S19680C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C88S19680C5__8S19680C1[] = {
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&_ZN8S19680C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C8D0Ev,
};
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C98S19680C88S19680C5__8S19680C1[] = {
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C98S19680C88S19680C5__A1__8S19680C1[] = {
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19680C8D1Ev,_ZThn60_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn120_N8S19680C8D0Ev,_ZThn60_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19680C88S19680C5__8S19680C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C8D1Ev,_ZThn64_N8S19680C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C8D0Ev,_ZThn64_N8S19680C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C7__A1__8S19680C88S19680C5__8S19680C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-312,-196),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev),
};
extern void _ZN8S19680C9D1Ev();
extern void _ZN8S19680C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C98S19680C5__A1__8S19680C1[] = {
  ABISELECT(-216,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C9[0]),
  (VTBL_ENTRY)&_ZN8S19680C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C9D0Ev,
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C78S19680C98S19680C5__A2__8S19680C1[] = {
  ABISELECT(-216,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn120_N8S19680C5D1Ev,_ZThn60_N8S19680C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn120_N8S19680C5D0Ev,_ZThn60_N8S19680C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19680C5__8S19680C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S19680C5D1Ev,_ZThn64_N8S19680C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S19680C5D0Ev,_ZThn64_N8S19680C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C5__8S19680C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-312,-196),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev),
};
extern void ABISELECT(_ZThn32_N8S19680C5D1Ev,_ZThn16_N8S19680C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S19680C5D0Ev,_ZThn16_N8S19680C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19680C9__A1__8S19680C5__8S19680C1[] = {
  ABISELECT(-216,-148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19680C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19680C5D1Ev,_ZThn16_N8S19680C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19680C5D0Ev,_ZThn16_N8S19680C5D0Ev),
};
extern void _ZN8S19680C7D1Ev();
extern void _ZN8S19680C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19680C7__8S19680C1[] = {
  ABISELECT(-312,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19680C7[0]),
  (VTBL_ENTRY)&_ZN8S19680C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19680C7D0Ev,
};
static  VTT_ENTRY vtt_S19680C1[] = {
  {&(_ZTV8S19680C1[8]),  8,51},
  {&(_ZTV8S19680C1[17]),  17,51},
  {&(_ZTV8S19680C1[25]),  25,51},
  {&(_ZTV8S19680C1[43]),  43,51},
  {&(_ZTV8S19680C1[49]),  49,51},
  {&(_ZTV8S19680C1[29]),  29,51},
  {&(_ZTV8S19680C1[34]),  34,51},
  {&(_ZTV8S19680C1[38]),  38,51},
  {&(_tg__ZTV8S19680C3__8S19680C1[6]),  6,8},
  {&(_tg__ZTV8S19680C5__8S19680C3__8S19680C1[6]),  6,8},
  {&(_tg__ZTV12S21216C26_nt__A1__8S19680C3__8S19680C1[3]),  3,5},
  {&(_tg__ZTV8S19680C7__8S19680C3__8S19680C1[4]),  4,6},
  {&(_tg__ZTV12S21216C26_nt8S19680C98S19680C88S19680C5__A4__8S19680C3__8S19680C1[2]),  2,4},
  {&(_tg__ZTV8S19680C98S19680C5__A1__8S19680C3__8S19680C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt8S19680C98S19680C5__A6__8S19680C3__8S19680C1[2]),  2,4},
  {&(_tg__ZTV8S19680C5__8S19680C1[5]),  5,7},
  {&(_tg__ZTV8S19680C88S19680C5__8S19680C1[5]),  5,7},
  {&(_tg__ZTV8S19680C98S19680C88S19680C5__8S19680C1[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C98S19680C88S19680C5__A1__8S19680C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19680C88S19680C5__8S19680C1[3]),  3,5},
  {&(_tg__ZTV8S19680C7__A1__8S19680C88S19680C5__8S19680C1[4]),  4,6},
  {&(_tg__ZTV8S19680C98S19680C5__A1__8S19680C1[3]),  3,5},
  {&(_tg__ZTV8S19680C78S19680C98S19680C5__A2__8S19680C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__8S19680C5__8S19680C1[3]),  3,5},
  {&(_tg__ZTV8S19680C7__8S19680C5__8S19680C1[4]),  4,6},
  {&(_tg__ZTV8S19680C9__A1__8S19680C5__8S19680C1[3]),  3,5},
  {&(_tg__ZTV8S19680C7__8S19680C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19680C1[];
extern  VTBL_ENTRY _ZTV8S19680C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19680C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C5D0Ev,_ZTv0_n16_N8S19680C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C5D0Ev,_ZThn64_N8S19680C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C5D1Ev,_ZTv0_n16_N8S19680C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C5D1Ev,_ZThn64_N8S19680C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C5D0Ev,_ZTv0_n12_N8S19680C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C5D0Ev,_ZThn60_N8S19680C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C5D1Ev,_ZTv0_n12_N8S19680C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C5D1Ev,_ZThn60_N8S19680C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D0Ev,_ZTv0_n16_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C8D0Ev,_ZThn64_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C8D1Ev,_ZTv0_n16_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C8D1Ev,_ZThn64_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D0Ev,_ZTv0_n12_N8S19680C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C8D0Ev,_ZThn60_N8S19680C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C8D1Ev,_ZTv0_n12_N8S19680C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19680C8D1Ev,_ZThn60_N8S19680C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C3D0Ev,_ZTv0_n16_N8S19680C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19680C3D0Ev,_ZThn68_N8S19680C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C3D1Ev,_ZTv0_n16_N8S19680C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19680C3D1Ev,_ZThn68_N8S19680C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C3D0Ev,_ZTv0_n12_N8S19680C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C3D0Ev,_ZThn64_N8S19680C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C3D1Ev,_ZTv0_n12_N8S19680C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19680C3D1Ev,_ZThn64_N8S19680C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19680C3D0Ev,_ZTv0_n24_N8S19680C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19680C3D0Ev,_ZThn4_N8S19680C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19680C3D1Ev,_ZTv0_n24_N8S19680C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19680C3D1Ev,_ZThn4_N8S19680C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C1D0Ev,_ZTv0_n16_N8S19680C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19680C1D0Ev,_ZThn196_N8S19680C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19680C1D1Ev,_ZTv0_n16_N8S19680C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19680C1D1Ev,_ZThn196_N8S19680C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C1D0Ev,_ZTv0_n12_N8S19680C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19680C1D0Ev,_ZThn192_N8S19680C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19680C1D1Ev,_ZTv0_n12_N8S19680C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19680C1D1Ev,_ZThn192_N8S19680C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19680C1D0Ev,_ZTv0_n24_N8S19680C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19680C1D0Ev,_ZThn132_N8S19680C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19680C1D1Ev,_ZTv0_n24_N8S19680C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19680C1D1Ev,_ZThn132_N8S19680C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19680C1D0Ev,_ZTv0_n28_N8S19680C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19680C1D0Ev,_ZThn128_N8S19680C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19680C1D1Ev,_ZTv0_n28_N8S19680C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19680C1D1Ev,_ZThn128_N8S19680C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19680C1 = {  "S19680C1", // class name
  bases_S19680C1, 19,
  &(vtc_S19680C1[0]), // expected_vtbl_contents
  &(vtt_S19680C1[0]), // expected_vtt_contents
  ABISELECT(336,204), // object size
  NSPAIRA(_ZTI8S19680C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19680C1),51, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19680C1),27, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3136C3  {
  __tsi64 s3136c3f0:52;
  __tsi64 s3136c3f1[2];
  virtual void  v3(); // _ZN7S3136C32v3Ev
  virtual void  v4(); // _ZN7S3136C32v4Ev
  virtual void  v5(); // _ZN7S3136C32v5Ev
  ~S3136C3(); // tgen
  S3136C3(); // tgen
};
//SIG(-1 S3136C3) C1{ v1 v2 v3 FL:52 FL[2]}


void  S3136C3 ::v3(){vfunc_called(this, "_ZN7S3136C32v3Ev");}
void  S3136C3 ::v4(){vfunc_called(this, "_ZN7S3136C32v4Ev");}
void  S3136C3 ::v5(){vfunc_called(this, "_ZN7S3136C32v5Ev");}
S3136C3 ::~S3136C3(){ note_dtor("S3136C3", this);} // tgen
S3136C3 ::S3136C3(){ note_ctor("S3136C3", this);} // tgen

static void Test_S3136C3()
{
  extern Class_Descriptor cd_S3136C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S3136C3, buf);
    S3136C3 *dp, &lv = *(dp=new (buf) S3136C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S3136C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3136C3)");
    set_bf_and_test(lv, s3136c3f0, ABISELECT(8,4), 0, 52, 1, "S3136C3");
    set_bf_and_test(lv, s3136c3f0, ABISELECT(8,4), 0, 52, hide_sll(1LL<<51), "S3136C3");
    check_field_offset(lv, s3136c3f1, ABISELECT(16,12), "S3136C3.s3136c3f1");
    test_class_info(&lv, &cd_S3136C3);
    dp->~S3136C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3136C3(Test_S3136C3, "S3136C3", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S3136C3C1Ev();
extern void _ZN7S3136C3D1Ev();
Name_Map name_map_S3136C3[] = {
  NSPAIR(_ZN7S3136C3C1Ev),
  NSPAIR(_ZN7S3136C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3136C3[];
extern void _ZN7S3136C32v3Ev();
extern void _ZN7S3136C32v4Ev();
extern void _ZN7S3136C32v5Ev();
static  VTBL_ENTRY vtc_S3136C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C3[0]),
  (VTBL_ENTRY)&_ZN7S3136C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S3136C3[];
extern  VTBL_ENTRY _ZTV7S3136C3[];
Class_Descriptor cd_S3136C3 = {  "S3136C3", // class name
  0,0,//no base classes
  &(vtc_S3136C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S3136C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3136C3),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  S3136C6  {
  void *s3136c6f0;
  virtual void  v6(); // _ZN7S3136C62v6Ev
  virtual void  v7(); // _ZN7S3136C62v7Ev
  ~S3136C6(); // tgen
  S3136C6(); // tgen
};
//SIG(-1 S3136C6) C1{ v1 v2 Fp}


void  S3136C6 ::v6(){vfunc_called(this, "_ZN7S3136C62v6Ev");}
void  S3136C6 ::v7(){vfunc_called(this, "_ZN7S3136C62v7Ev");}
S3136C6 ::~S3136C6(){ note_dtor("S3136C6", this);} // tgen
S3136C6 ::S3136C6(){ note_ctor("S3136C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3136C6C1Ev();
extern void _ZN7S3136C6D1Ev();
Name_Map name_map_S3136C6[] = {
  NSPAIR(_ZN7S3136C6C1Ev),
  NSPAIR(_ZN7S3136C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3136C6[];
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY vtc_S3136C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C6[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern VTBL_ENTRY _ZTI7S3136C6[];
extern  VTBL_ENTRY _ZTV7S3136C6[];
Class_Descriptor cd_S3136C6 = {  "S3136C6", // class name
  0,0,//no base classes
  &(vtc_S3136C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3136C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3136C6),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  S3136C5  : virtual S3136C6 {
  virtual void  v8(); // _ZN7S3136C52v8Ev
  virtual void  v9(); // _ZN7S3136C52v9Ev
  virtual void  v10(); // _ZN7S3136C53v10Ev
  virtual void  v11(); // _ZN7S3136C53v11Ev
  virtual void  v12(); // _ZN7S3136C53v12Ev
  virtual void  v13(); // _ZN7S3136C53v13Ev
  ~S3136C5(); // tgen
  S3136C5(); // tgen
};
//SIG(-1 S3136C5) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S3136C5 ::v8(){vfunc_called(this, "_ZN7S3136C52v8Ev");}
void  S3136C5 ::v9(){vfunc_called(this, "_ZN7S3136C52v9Ev");}
void  S3136C5 ::v10(){vfunc_called(this, "_ZN7S3136C53v10Ev");}
void  S3136C5 ::v11(){vfunc_called(this, "_ZN7S3136C53v11Ev");}
void  S3136C5 ::v12(){vfunc_called(this, "_ZN7S3136C53v12Ev");}
void  S3136C5 ::v13(){vfunc_called(this, "_ZN7S3136C53v13Ev");}
S3136C5 ::~S3136C5(){ note_dtor("S3136C5", this);} // tgen
S3136C5 ::S3136C5(){ note_ctor("S3136C5", this);} // tgen

static void Test_S3136C5()
{
  extern Class_Descriptor cd_S3136C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3136C5, buf);
    S3136C5 *dp, &lv = *(dp=new (buf) S3136C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3136C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3136C5)");
    check_base_class_offset(lv, (S3136C6*), ABISELECT(8,4), "S3136C5");
    test_class_info(&lv, &cd_S3136C5);
    dp->~S3136C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3136C5(Test_S3136C5, "S3136C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3136C5C1Ev();
extern void _ZN7S3136C5D1Ev();
Name_Map name_map_S3136C5[] = {
  NSPAIR(_ZN7S3136C5C1Ev),
  NSPAIR(_ZN7S3136C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3136C6;
extern VTBL_ENTRY _ZTI7S3136C6[];
extern  VTBL_ENTRY _ZTV7S3136C6[];
static Base_Class bases_S3136C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3136C6,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3136C5[];
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY vtc_S3136C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3136C5[];
static  VTT_ENTRY vtt_S3136C5[] = {
  {&(_ZTV7S3136C5[3]),  3,15},
  {&(_ZTV7S3136C5[13]),  13,15},
};
extern VTBL_ENTRY _ZTI7S3136C5[];
extern  VTBL_ENTRY _ZTV7S3136C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C5[];
Class_Descriptor cd_S3136C5 = {  "S3136C5", // class name
  bases_S3136C5, 1,
  &(vtc_S3136C5[0]), // expected_vtbl_contents
  &(vtt_S3136C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3136C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3136C5),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3136C5),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  S3136C7  : virtual S3136C5 {
  void *s3136c7f0;
  ::S3136C6 s3136c7f1;
  ::S3136C6 s3136c7f2;
  virtual void  v14(); // _ZN7S3136C73v14Ev
  virtual void  v15(); // _ZN7S3136C73v15Ev
  ~S3136C7(); // tgen
  S3136C7(); // tgen
};
//SIG(-1 S3136C7) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v1 v2 Fp FC3 FC3}


void  S3136C7 ::v14(){vfunc_called(this, "_ZN7S3136C73v14Ev");}
void  S3136C7 ::v15(){vfunc_called(this, "_ZN7S3136C73v15Ev");}
S3136C7 ::~S3136C7(){ note_dtor("S3136C7", this);} // tgen
S3136C7 ::S3136C7(){ note_ctor("S3136C7", this);} // tgen

static void Test_S3136C7()
{
  extern Class_Descriptor cd_S3136C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S3136C7, buf);
    S3136C7 *dp, &lv = *(dp=new (buf) S3136C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S3136C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3136C7)");
    check_base_class_offset(lv, (S3136C6*)(S3136C5*), ABISELECT(48,24), "S3136C7");
    check_base_class_offset(lv, (S3136C5*), 0, "S3136C7");
    check_field_offset(lv, s3136c7f0, ABISELECT(8,4), "S3136C7.s3136c7f0");
    check_field_offset(lv, s3136c7f1, ABISELECT(16,8), "S3136C7.s3136c7f1");
    check_field_offset(lv, s3136c7f2, ABISELECT(32,16), "S3136C7.s3136c7f2");
    test_class_info(&lv, &cd_S3136C7);
    dp->~S3136C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3136C7(Test_S3136C7, "S3136C7", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S3136C7C1Ev();
extern void _ZN7S3136C7D1Ev();
Name_Map name_map_S3136C7[] = {
  NSPAIR(_ZN7S3136C7C1Ev),
  NSPAIR(_ZN7S3136C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3136C6;
extern VTBL_ENTRY _ZTI7S3136C6[];
extern  VTBL_ENTRY _ZTV7S3136C6[];
extern Class_Descriptor cd_S3136C5;
extern VTBL_ENTRY _ZTI7S3136C5[];
extern  VTBL_ENTRY _ZTV7S3136C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C5[];
static Base_Class bases_S3136C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3136C6,    ABISELECT(48,24), //bcp->offset
    18, //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_S3136C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3136C7[];
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY vtc_S3136C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3136C7[];
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C5__7S3136C7[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C5__7S3136C7[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
static  VTT_ENTRY vtt_S3136C7[] = {
  {&(_ZTV7S3136C7[10]),  10,24},
  {&(_ZTV7S3136C7[10]),  10,24},
  {&(_ZTV7S3136C7[22]),  22,24},
  {&(_tg__ZTV7S3136C5__7S3136C7[3]),  3,9},
  {&(_tg__ZTV7S3136C6__7S3136C5__7S3136C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S3136C7[];
extern  VTBL_ENTRY _ZTV7S3136C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C7[];
Class_Descriptor cd_S3136C7 = {  "S3136C7", // class name
  bases_S3136C7, 2,
  &(vtc_S3136C7[0]), // expected_vtbl_contents
  &(vtt_S3136C7[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S3136C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3136C7),24, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3136C7),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  S3136C4  : virtual S3136C5 , S3136C7 {
  virtual void  v16(); // _ZN7S3136C43v16Ev
  virtual void  v17(); // _ZN7S3136C43v17Ev
  ~S3136C4(); // tgen
  S3136C4(); // tgen
};
//SIG(-1 S3136C4) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} BC4{ VBC2 v11 v12 Fp FC3 FC3} v1 v2}


void  S3136C4 ::v16(){vfunc_called(this, "_ZN7S3136C43v16Ev");}
void  S3136C4 ::v17(){vfunc_called(this, "_ZN7S3136C43v17Ev");}
S3136C4 ::~S3136C4(){ note_dtor("S3136C4", this);} // tgen
S3136C4 ::S3136C4(){ note_ctor("S3136C4", this);} // tgen

static void Test_S3136C4()
{
  extern Class_Descriptor cd_S3136C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S3136C4, buf);
    S3136C4 *dp, &lv = *(dp=new (buf) S3136C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S3136C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3136C4)");
    check_base_class_offset(lv, (S3136C6*)(S3136C5*), ABISELECT(48,24), "S3136C4");
    check_base_class_offset(lv, (S3136C5*), 0, "S3136C4");
    check_base_class_offset(lv, (S3136C5*)(S3136C7*), 0, "S3136C4");
    check_base_class_offset(lv, (S3136C7*), 0, "S3136C4");
    test_class_info(&lv, &cd_S3136C4);
    dp->~S3136C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3136C4(Test_S3136C4, "S3136C4", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S3136C4C1Ev();
extern void _ZN7S3136C4D1Ev();
Name_Map name_map_S3136C4[] = {
  NSPAIR(_ZN7S3136C4C1Ev),
  NSPAIR(_ZN7S3136C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3136C6;
extern VTBL_ENTRY _ZTI7S3136C6[];
extern  VTBL_ENTRY _ZTV7S3136C6[];
extern Class_Descriptor cd_S3136C5;
extern VTBL_ENTRY _ZTI7S3136C5[];
extern  VTBL_ENTRY _ZTV7S3136C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C5[];
extern Class_Descriptor cd_S3136C7;
extern VTBL_ENTRY _ZTI7S3136C7[];
extern  VTBL_ENTRY _ZTV7S3136C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C7[];
static Base_Class bases_S3136C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3136C6,    ABISELECT(48,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3136C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3136C7,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3136C4[];
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C43v16Ev();
extern void _ZN7S3136C43v17Ev();
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY vtc_S3136C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C4[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v17Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C4[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3136C4[];
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C7__7S3136C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C7__7S3136C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C5__7S3136C4[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C5__7S3136C4[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
static  VTT_ENTRY vtt_S3136C4[] = {
  {&(_ZTV7S3136C4[10]),  10,26},
  {&(_tg__ZTV7S3136C7__7S3136C4[10]),  10,18},
  {&(_tg__ZTV7S3136C7__7S3136C4[10]),  10,18},
  {&(_tg__ZTV7S3136C6__7S3136C7__7S3136C4[4]),  4,6},
  {&(_ZTV7S3136C4[10]),  10,26},
  {&(_ZTV7S3136C4[24]),  24,26},
  {&(_tg__ZTV7S3136C5__7S3136C4[3]),  3,9},
  {&(_tg__ZTV7S3136C6__7S3136C5__7S3136C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S3136C4[];
extern  VTBL_ENTRY _ZTV7S3136C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C4[];
Class_Descriptor cd_S3136C4 = {  "S3136C4", // class name
  bases_S3136C4, 3,
  &(vtc_S3136C4[0]), // expected_vtbl_contents
  &(vtt_S3136C4[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S3136C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3136C4),26, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3136C4),8, //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  S3136C2  : S3136C3 , virtual S3136C4 {
  char s3136c2f0;
  virtual void  v18(); // _ZN7S3136C23v18Ev
  ~S3136C2(); // tgen
  S3136C2(); // tgen
};
//SIG(-1 S3136C2) C1{ BC2{ v2 v3 v4 FL:52 FL[2]} VBC3{ VBC4{ VBC5{ v5 v6 Fp} v7 v8 v9 v10 v11 v12} BC6{ VBC4 v13 v14 Fp FC5 FC5} v15 v16} v1 Fc}


void  S3136C2 ::v18(){vfunc_called(this, "_ZN7S3136C23v18Ev");}
S3136C2 ::~S3136C2(){ note_dtor("S3136C2", this);} // tgen
S3136C2 ::S3136C2(){ note_ctor("S3136C2", this);} // tgen

static void Test_S3136C2()
{
  extern Class_Descriptor cd_S3136C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S3136C2, buf);
    S3136C2 *dp, &lv = *(dp=new (buf) S3136C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S3136C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3136C2)");
    check_base_class_offset(lv, (S3136C3*), 0, "S3136C2");
    check_base_class_offset(lv, (S3136C6*)(S3136C5*), ABISELECT(88,56), "S3136C2");
    check_base_class_offset(lv, (S3136C5*)(S3136C4*), ABISELECT(40,32), "S3136C2");
    check_base_class_offset(lv, (S3136C5*)(S3136C7*)(S3136C4*), ABISELECT(40,32), "S3136C2");
    check_base_class_offset(lv, (S3136C7*)(S3136C4*), ABISELECT(40,32), "S3136C2");
    check_base_class_offset(lv, (S3136C4*), ABISELECT(40,32), "S3136C2");
    check_field_offset(lv, s3136c2f0, ABISELECT(32,28), "S3136C2.s3136c2f0");
    test_class_info(&lv, &cd_S3136C2);
    dp->~S3136C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3136C2(Test_S3136C2, "S3136C2", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S3136C2C1Ev();
extern void _ZN7S3136C2D1Ev();
Name_Map name_map_S3136C2[] = {
  NSPAIR(_ZN7S3136C2C1Ev),
  NSPAIR(_ZN7S3136C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3136C3;
extern VTBL_ENTRY _ZTI7S3136C3[];
extern  VTBL_ENTRY _ZTV7S3136C3[];
extern Class_Descriptor cd_S3136C6;
extern VTBL_ENTRY _ZTI7S3136C6[];
extern  VTBL_ENTRY _ZTV7S3136C6[];
extern Class_Descriptor cd_S3136C5;
extern VTBL_ENTRY _ZTI7S3136C5[];
extern  VTBL_ENTRY _ZTV7S3136C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C5[];
extern Class_Descriptor cd_S3136C7;
extern VTBL_ENTRY _ZTI7S3136C7[];
extern  VTBL_ENTRY _ZTV7S3136C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C7[];
extern Class_Descriptor cd_S3136C4;
extern VTBL_ENTRY _ZTI7S3136C4[];
extern  VTBL_ENTRY _ZTV7S3136C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C4[];
static Base_Class bases_S3136C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3136C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3136C6,    ABISELECT(88,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3136C5,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3136C7,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3136C4,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3136C2[];
extern void _ZN7S3136C32v3Ev();
extern void _ZN7S3136C32v4Ev();
extern void _ZN7S3136C32v5Ev();
extern void _ZN7S3136C23v18Ev();
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C43v16Ev();
extern void _ZN7S3136C43v17Ev();
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY vtc_S3136C2[] = {
  ABISELECT(88,56),
  ABISELECT(40,32),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C2[0]),
  (VTBL_ENTRY)&_ZN7S3136C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3136C23v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3136C2[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v17Ev,
  0,
  0,
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S3136C2[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3136C2[];
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C43v16Ev();
extern void _ZN7S3136C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C4__7S3136C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C4[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v17Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C77S3136C4__7S3136C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C77S3136C4__7S3136C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C4__7S3136C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C4[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C5__7S3136C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C5__7S3136C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
static  VTT_ENTRY vtt_S3136C2[] = {
  {&(_ZTV7S3136C2[5]),  5,39},
  {&(_ZTV7S3136C2[23]),  23,39},
  {&(_ZTV7S3136C2[23]),  23,39},
  {&(_ZTV7S3136C2[37]),  37,39},
  {&(_tg__ZTV7S3136C4__7S3136C2[10]),  10,20},
  {&(_tg__ZTV7S3136C77S3136C4__7S3136C2[10]),  10,18},
  {&(_tg__ZTV7S3136C77S3136C4__7S3136C2[10]),  10,18},
  {&(_tg__ZTV7S3136C6__7S3136C77S3136C4__7S3136C2[4]),  4,6},
  {&(_tg__ZTV7S3136C4__7S3136C2[10]),  10,20},
  {&(_tg__ZTV7S3136C6__7S3136C4__7S3136C2[4]),  4,6},
  {&(_tg__ZTV7S3136C5__7S3136C2[3]),  3,9},
  {&(_tg__ZTV7S3136C6__7S3136C5__7S3136C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S3136C2[];
extern  VTBL_ENTRY _ZTV7S3136C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C2[];
Class_Descriptor cd_S3136C2 = {  "S3136C2", // class name
  bases_S3136C2, 5,
  &(vtc_S3136C2[0]), // expected_vtbl_contents
  &(vtt_S3136C2[0]), // expected_vtt_contents
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S3136C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3136C2),39, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3136C2),12, //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  S3136C1  : S3136C2 {
  virtual void  v1(); // _ZN7S3136C12v1Ev
  virtual void  v2(); // _ZN7S3136C12v2Ev
  ~S3136C1(); // tgen
  S3136C1(); // tgen
};
//SIG(1 S3136C1) C1{ BC2{ BC3{ v3 v4 v5 FL:52 FL[2]} VBC4{ VBC5{ VBC6{ v6 v7 Fp} v8 v9 v10 v11 v12 v13} BC7{ VBC5 v14 v15 Fp FC6 FC6} v16 v17} v18 Fc} v1 v2}


void  S3136C1 ::v1(){vfunc_called(this, "_ZN7S3136C12v1Ev");}
void  S3136C1 ::v2(){vfunc_called(this, "_ZN7S3136C12v2Ev");}
S3136C1 ::~S3136C1(){ note_dtor("S3136C1", this);} // tgen
S3136C1 ::S3136C1(){ note_ctor("S3136C1", this);} // tgen

static void Test_S3136C1()
{
  extern Class_Descriptor cd_S3136C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S3136C1, buf);
    S3136C1 *dp, &lv = *(dp=new (buf) S3136C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S3136C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3136C1)");
    check_base_class_offset(lv, (S3136C3*)(S3136C2*), 0, "S3136C1");
    check_base_class_offset(lv, (S3136C6*)(S3136C5*), ABISELECT(88,56), "S3136C1");
    check_base_class_offset(lv, (S3136C5*)(S3136C4*), ABISELECT(40,32), "S3136C1");
    check_base_class_offset(lv, (S3136C5*)(S3136C7*)(S3136C4*), ABISELECT(40,32), "S3136C1");
    check_base_class_offset(lv, (S3136C7*)(S3136C4*), ABISELECT(40,32), "S3136C1");
    check_base_class_offset(lv, (S3136C4*)(S3136C2*), ABISELECT(40,32), "S3136C1");
    check_base_class_offset(lv, (S3136C2*), 0, "S3136C1");
    test_class_info(&lv, &cd_S3136C1);
    dp->~S3136C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3136C1(Test_S3136C1, "S3136C1", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S3136C1C1Ev();
extern void _ZN7S3136C1D1Ev();
Name_Map name_map_S3136C1[] = {
  NSPAIR(_ZN7S3136C1C1Ev),
  NSPAIR(_ZN7S3136C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3136C3;
extern VTBL_ENTRY _ZTI7S3136C3[];
extern  VTBL_ENTRY _ZTV7S3136C3[];
extern Class_Descriptor cd_S3136C6;
extern VTBL_ENTRY _ZTI7S3136C6[];
extern  VTBL_ENTRY _ZTV7S3136C6[];
extern Class_Descriptor cd_S3136C5;
extern VTBL_ENTRY _ZTI7S3136C5[];
extern  VTBL_ENTRY _ZTV7S3136C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C5[];
extern Class_Descriptor cd_S3136C7;
extern VTBL_ENTRY _ZTI7S3136C7[];
extern  VTBL_ENTRY _ZTV7S3136C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C7[];
extern Class_Descriptor cd_S3136C4;
extern VTBL_ENTRY _ZTI7S3136C4[];
extern  VTBL_ENTRY _ZTV7S3136C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C4[];
extern Class_Descriptor cd_S3136C2;
extern VTBL_ENTRY _ZTI7S3136C2[];
extern  VTBL_ENTRY _ZTV7S3136C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C2[];
static Base_Class bases_S3136C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3136C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3136C6,    ABISELECT(88,56), //bcp->offset
    35, //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_S3136C5,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //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
    3, //immediately_derived
  0, 1},
  {&cd_S3136C7,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3136C4,    ABISELECT(40,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3136C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3136C1[];
extern void _ZN7S3136C32v3Ev();
extern void _ZN7S3136C32v4Ev();
extern void _ZN7S3136C32v5Ev();
extern void _ZN7S3136C23v18Ev();
extern void _ZN7S3136C12v1Ev();
extern void _ZN7S3136C12v2Ev();
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C43v16Ev();
extern void _ZN7S3136C43v17Ev();
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY vtc_S3136C1[] = {
  ABISELECT(88,56),
  ABISELECT(40,32),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C1[0]),
  (VTBL_ENTRY)&_ZN7S3136C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3136C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3136C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3136C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3136C1[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v17Ev,
  0,
  0,
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S3136C1[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3136C1[];
extern void _ZN7S3136C32v3Ev();
extern void _ZN7S3136C32v4Ev();
extern void _ZN7S3136C32v5Ev();
extern void _ZN7S3136C23v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C2__7S3136C1[] = {
  ABISELECT(88,56),
  ABISELECT(40,32),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C2[0]),
  (VTBL_ENTRY)&_ZN7S3136C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3136C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3136C23v18Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C43v16Ev();
extern void _ZN7S3136C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C4__7S3136C2__7S3136C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3136C2[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v17Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C2__7S3136C1[] = {
  0,
  0,
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S3136C2[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
extern void _ZN7S3136C43v16Ev();
extern void _ZN7S3136C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C4__7S3136C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C4[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3136C43v17Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
extern void _ZN7S3136C73v14Ev();
extern void _ZN7S3136C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C77S3136C4__7S3136C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3136C73v15Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C77S3136C4__7S3136C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C7[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C4__7S3136C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C4[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
extern void _ZN7S3136C52v8Ev();
extern void _ZN7S3136C52v9Ev();
extern void _ZN7S3136C53v10Ev();
extern void _ZN7S3136C53v11Ev();
extern void _ZN7S3136C53v12Ev();
extern void _ZN7S3136C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C5__7S3136C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3136C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3136C53v13Ev,
};
extern void _ZN7S3136C62v6Ev();
extern void _ZN7S3136C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3136C6__7S3136C5__7S3136C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3136C5[0]),
  (VTBL_ENTRY)&_ZN7S3136C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3136C62v7Ev,
};
static  VTT_ENTRY vtt_S3136C1[] = {
  {&(_ZTV7S3136C1[5]),  5,41},
  {&(_tg__ZTV7S3136C2__7S3136C1[5]),  5,9},
  {&(_tg__ZTV7S3136C4__7S3136C2__7S3136C1[14]),  14,24},
  {&(_tg__ZTV7S3136C4__7S3136C2__7S3136C1[14]),  14,24},
  {&(_tg__ZTV7S3136C6__7S3136C2__7S3136C1[4]),  4,6},
  {&(_ZTV7S3136C1[25]),  25,41},
  {&(_ZTV7S3136C1[25]),  25,41},
  {&(_ZTV7S3136C1[39]),  39,41},
  {&(_tg__ZTV7S3136C4__7S3136C1[10]),  10,20},
  {&(_tg__ZTV7S3136C77S3136C4__7S3136C1[10]),  10,18},
  {&(_tg__ZTV7S3136C77S3136C4__7S3136C1[10]),  10,18},
  {&(_tg__ZTV7S3136C6__7S3136C77S3136C4__7S3136C1[4]),  4,6},
  {&(_tg__ZTV7S3136C4__7S3136C1[10]),  10,20},
  {&(_tg__ZTV7S3136C6__7S3136C4__7S3136C1[4]),  4,6},
  {&(_tg__ZTV7S3136C5__7S3136C1[3]),  3,9},
  {&(_tg__ZTV7S3136C6__7S3136C5__7S3136C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S3136C1[];
extern  VTBL_ENTRY _ZTV7S3136C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3136C1[];
Class_Descriptor cd_S3136C1 = {  "S3136C1", // class name
  bases_S3136C1, 6,
  &(vtc_S3136C1[0]), // expected_vtbl_contents
  &(vtt_S3136C1[0]), // expected_vtt_contents
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S3136C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3136C1),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3136C1),16, //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  S7018C2  {
  int s7018c2f0[2];
  virtual  ~S7018C2(); // _ZN7S7018C2D1Ev
  virtual void  v6(); // _ZN7S7018C22v6Ev
  virtual void  v7(); // _ZN7S7018C22v7Ev
  virtual void  v8(); // _ZN7S7018C22v8Ev
  virtual void  v9(); // _ZN7S7018C22v9Ev
  virtual void  v10(); // _ZN7S7018C23v10Ev
  virtual void  v11(); // _ZN7S7018C23v11Ev
  virtual void  v12(); // _ZN7S7018C23v12Ev
  virtual void  v13(); // _ZN7S7018C23v13Ev
  virtual void  v14(); // _ZN7S7018C23v14Ev
  virtual void  v15(); // _ZN7S7018C23v15Ev
  virtual void  v16(); // _ZN7S7018C23v16Ev
  virtual void  v17(); // _ZN7S7018C23v17Ev
  virtual void  v18(); // _ZN7S7018C23v18Ev
  virtual void  v19(); // _ZN7S7018C23v19Ev
  S7018C2(); // tgen
};
//SIG(-1 S7018C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7018C2 ::~S7018C2(){ note_dtor("S7018C2", this);}
void  S7018C2 ::v6(){vfunc_called(this, "_ZN7S7018C22v6Ev");}
void  S7018C2 ::v7(){vfunc_called(this, "_ZN7S7018C22v7Ev");}
void  S7018C2 ::v8(){vfunc_called(this, "_ZN7S7018C22v8Ev");}
void  S7018C2 ::v9(){vfunc_called(this, "_ZN7S7018C22v9Ev");}
void  S7018C2 ::v10(){vfunc_called(this, "_ZN7S7018C23v10Ev");}
void  S7018C2 ::v11(){vfunc_called(this, "_ZN7S7018C23v11Ev");}
void  S7018C2 ::v12(){vfunc_called(this, "_ZN7S7018C23v12Ev");}
void  S7018C2 ::v13(){vfunc_called(this, "_ZN7S7018C23v13Ev");}
void  S7018C2 ::v14(){vfunc_called(this, "_ZN7S7018C23v14Ev");}
void  S7018C2 ::v15(){vfunc_called(this, "_ZN7S7018C23v15Ev");}
void  S7018C2 ::v16(){vfunc_called(this, "_ZN7S7018C23v16Ev");}
void  S7018C2 ::v17(){vfunc_called(this, "_ZN7S7018C23v17Ev");}
void  S7018C2 ::v18(){vfunc_called(this, "_ZN7S7018C23v18Ev");}
void  S7018C2 ::v19(){vfunc_called(this, "_ZN7S7018C23v19Ev");}
S7018C2 ::S7018C2(){ note_ctor("S7018C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7018C2C1Ev();
extern void _ZN7S7018C2D1Ev();
Name_Map name_map_S7018C2[] = {
  NSPAIR(_ZN7S7018C2C1Ev),
  NSPAIR(_ZN7S7018C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7018C2[];
extern void _ZN7S7018C2D1Ev();
extern void _ZN7S7018C2D0Ev();
extern void _ZN7S7018C22v6Ev();
extern void _ZN7S7018C22v7Ev();
extern void _ZN7S7018C22v8Ev();
extern void _ZN7S7018C22v9Ev();
extern void _ZN7S7018C23v10Ev();
extern void _ZN7S7018C23v11Ev();
extern void _ZN7S7018C23v12Ev();
extern void _ZN7S7018C23v13Ev();
extern void _ZN7S7018C23v14Ev();
extern void _ZN7S7018C23v15Ev();
extern void _ZN7S7018C23v16Ev();
extern void _ZN7S7018C23v17Ev();
extern void _ZN7S7018C23v18Ev();
extern void _ZN7S7018C23v19Ev();
static  VTBL_ENTRY vtc_S7018C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7018C2[0]),
  (VTBL_ENTRY)&_ZN7S7018C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7018C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S7018C2[];
extern  VTBL_ENTRY _ZTV7S7018C2[];
Class_Descriptor cd_S7018C2 = {  "S7018C2", // class name
  0,0,//no base classes
  &(vtc_S7018C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7018C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7018C2),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  S7018C1  : S7018C2 {
  ::S7097C3 s7018c1f0;
  void *s7018c1f1[7];
  ::S3619C13_nt s7018c1f2;
  virtual  ~S7018C1(); // _ZN7S7018C1D1Ev
  virtual void  v1(); // _ZN7S7018C12v1Ev
  virtual void  v2(); // _ZN7S7018C12v2Ev
  virtual void  v3(); // _ZN7S7018C12v3Ev
  virtual void  v4(); // _ZN7S7018C12v4Ev
  virtual void  v5(); // _ZN7S7018C12v5Ev
  S7018C1(); // tgen
};
//SIG(1 S7018C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi[2]} vd v1 v2 v3 v4 v5 FC3{ m Fp FL Fi} Fp[7] FC4{ m FC5{ FL[4]}}}


 S7018C1 ::~S7018C1(){ note_dtor("S7018C1", this);}
void  S7018C1 ::v1(){vfunc_called(this, "_ZN7S7018C12v1Ev");}
void  S7018C1 ::v2(){vfunc_called(this, "_ZN7S7018C12v2Ev");}
void  S7018C1 ::v3(){vfunc_called(this, "_ZN7S7018C12v3Ev");}
void  S7018C1 ::v4(){vfunc_called(this, "_ZN7S7018C12v4Ev");}
void  S7018C1 ::v5(){vfunc_called(this, "_ZN7S7018C12v5Ev");}
S7018C1 ::S7018C1(){ note_ctor("S7018C1", this);} // tgen

static void Test_S7018C1()
{
  extern Class_Descriptor cd_S7018C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S7018C1, buf);
    S7018C1 *dp, &lv = *(dp=new (buf) S7018C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S7018C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7018C1)");
    check_base_class_offset(lv, (S7018C2*), 0, "S7018C1");
    check_field_offset(lv, s7018c1f0, ABISELECT(16,12), "S7018C1.s7018c1f0");
    check_field_offset(lv, s7018c1f1, ABISELECT(40,28), "S7018C1.s7018c1f1");
    check_field_offset(lv, s7018c1f2, ABISELECT(96,56), "S7018C1.s7018c1f2");
    test_class_info(&lv, &cd_S7018C1);
    dp->~S7018C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7018C1(Test_S7018C1, "S7018C1", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN7S7018C1C1Ev();
extern void _ZN7S7018C1D1Ev();
Name_Map name_map_S7018C1[] = {
  NSPAIR(_ZN7S7018C1C1Ev),
  NSPAIR(_ZN7S7018C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7018C2;
extern VTBL_ENTRY _ZTI7S7018C2[];
extern  VTBL_ENTRY _ZTV7S7018C2[];
static Base_Class bases_S7018C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7018C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7018C1[];
extern void _ZN7S7018C1D1Ev();
extern void _ZN7S7018C1D0Ev();
extern void _ZN7S7018C22v6Ev();
extern void _ZN7S7018C22v7Ev();
extern void _ZN7S7018C22v8Ev();
extern void _ZN7S7018C22v9Ev();
extern void _ZN7S7018C23v10Ev();
extern void _ZN7S7018C23v11Ev();
extern void _ZN7S7018C23v12Ev();
extern void _ZN7S7018C23v13Ev();
extern void _ZN7S7018C23v14Ev();
extern void _ZN7S7018C23v15Ev();
extern void _ZN7S7018C23v16Ev();
extern void _ZN7S7018C23v17Ev();
extern void _ZN7S7018C23v18Ev();
extern void _ZN7S7018C23v19Ev();
extern void _ZN7S7018C12v1Ev();
extern void _ZN7S7018C12v2Ev();
extern void _ZN7S7018C12v3Ev();
extern void _ZN7S7018C12v4Ev();
extern void _ZN7S7018C12v5Ev();
static  VTBL_ENTRY vtc_S7018C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7018C1[0]),
  (VTBL_ENTRY)&_ZN7S7018C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7018C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7018C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7018C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7018C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7018C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7018C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7018C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7018C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7018C1[];
extern  VTBL_ENTRY _ZTV7S7018C1[];
Class_Descriptor cd_S7018C1 = {  "S7018C1", // class name
  bases_S7018C1, 1,
  &(vtc_S7018C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI7S7018C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7018C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7017C2  {
  int s7017c2f0[2];
  virtual  ~S7017C2(); // _ZN7S7017C2D1Ev
  virtual void  v6(); // _ZN7S7017C22v6Ev
  virtual void  v7(); // _ZN7S7017C22v7Ev
  virtual void  v8(); // _ZN7S7017C22v8Ev
  virtual void  v9(); // _ZN7S7017C22v9Ev
  virtual void  v10(); // _ZN7S7017C23v10Ev
  virtual void  v11(); // _ZN7S7017C23v11Ev
  virtual void  v12(); // _ZN7S7017C23v12Ev
  virtual void  v13(); // _ZN7S7017C23v13Ev
  virtual void  v14(); // _ZN7S7017C23v14Ev
  virtual void  v15(); // _ZN7S7017C23v15Ev
  virtual void  v16(); // _ZN7S7017C23v16Ev
  virtual void  v17(); // _ZN7S7017C23v17Ev
  virtual void  v18(); // _ZN7S7017C23v18Ev
  virtual void  v19(); // _ZN7S7017C23v19Ev
  S7017C2(); // tgen
};
//SIG(-1 S7017C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7017C2 ::~S7017C2(){ note_dtor("S7017C2", this);}
void  S7017C2 ::v6(){vfunc_called(this, "_ZN7S7017C22v6Ev");}
void  S7017C2 ::v7(){vfunc_called(this, "_ZN7S7017C22v7Ev");}
void  S7017C2 ::v8(){vfunc_called(this, "_ZN7S7017C22v8Ev");}
void  S7017C2 ::v9(){vfunc_called(this, "_ZN7S7017C22v9Ev");}
void  S7017C2 ::v10(){vfunc_called(this, "_ZN7S7017C23v10Ev");}
void  S7017C2 ::v11(){vfunc_called(this, "_ZN7S7017C23v11Ev");}
void  S7017C2 ::v12(){vfunc_called(this, "_ZN7S7017C23v12Ev");}
void  S7017C2 ::v13(){vfunc_called(this, "_ZN7S7017C23v13Ev");}
void  S7017C2 ::v14(){vfunc_called(this, "_ZN7S7017C23v14Ev");}
void  S7017C2 ::v15(){vfunc_called(this, "_ZN7S7017C23v15Ev");}
void  S7017C2 ::v16(){vfunc_called(this, "_ZN7S7017C23v16Ev");}
void  S7017C2 ::v17(){vfunc_called(this, "_ZN7S7017C23v17Ev");}
void  S7017C2 ::v18(){vfunc_called(this, "_ZN7S7017C23v18Ev");}
void  S7017C2 ::v19(){vfunc_called(this, "_ZN7S7017C23v19Ev");}
S7017C2 ::S7017C2(){ note_ctor("S7017C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7017C2C1Ev();
extern void _ZN7S7017C2D1Ev();
Name_Map name_map_S7017C2[] = {
  NSPAIR(_ZN7S7017C2C1Ev),
  NSPAIR(_ZN7S7017C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7017C2[];
extern void _ZN7S7017C2D1Ev();
extern void _ZN7S7017C2D0Ev();
extern void _ZN7S7017C22v6Ev();
extern void _ZN7S7017C22v7Ev();
extern void _ZN7S7017C22v8Ev();
extern void _ZN7S7017C22v9Ev();
extern void _ZN7S7017C23v10Ev();
extern void _ZN7S7017C23v11Ev();
extern void _ZN7S7017C23v12Ev();
extern void _ZN7S7017C23v13Ev();
extern void _ZN7S7017C23v14Ev();
extern void _ZN7S7017C23v15Ev();
extern void _ZN7S7017C23v16Ev();
extern void _ZN7S7017C23v17Ev();
extern void _ZN7S7017C23v18Ev();
extern void _ZN7S7017C23v19Ev();
static  VTBL_ENTRY vtc_S7017C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7017C2[0]),
  (VTBL_ENTRY)&_ZN7S7017C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7017C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S7017C2[];
extern  VTBL_ENTRY _ZTV7S7017C2[];
Class_Descriptor cd_S7017C2 = {  "S7017C2", // class name
  0,0,//no base classes
  &(vtc_S7017C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7017C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7017C2),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  S7017C1  : S7017C2 {
  ::S7097C3 s7017c1f0;
  void *s7017c1f1[7];
  ::S3618C13_nt s7017c1f2;
  virtual  ~S7017C1(); // _ZN7S7017C1D1Ev
  virtual void  v1(); // _ZN7S7017C12v1Ev
  virtual void  v2(); // _ZN7S7017C12v2Ev
  virtual void  v3(); // _ZN7S7017C12v3Ev
  virtual void  v4(); // _ZN7S7017C12v4Ev
  virtual void  v5(); // _ZN7S7017C12v5Ev
  S7017C1(); // tgen
};
//SIG(1 S7017C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi[2]} vd v1 v2 v3 v4 v5 FC3{ m Fp FL Fi} Fp[7] FC4{ m FC5{ Fl[4]}}}


 S7017C1 ::~S7017C1(){ note_dtor("S7017C1", this);}
void  S7017C1 ::v1(){vfunc_called(this, "_ZN7S7017C12v1Ev");}
void  S7017C1 ::v2(){vfunc_called(this, "_ZN7S7017C12v2Ev");}
void  S7017C1 ::v3(){vfunc_called(this, "_ZN7S7017C12v3Ev");}
void  S7017C1 ::v4(){vfunc_called(this, "_ZN7S7017C12v4Ev");}
void  S7017C1 ::v5(){vfunc_called(this, "_ZN7S7017C12v5Ev");}
S7017C1 ::S7017C1(){ note_ctor("S7017C1", this);} // tgen

static void Test_S7017C1()
{
  extern Class_Descriptor cd_S7017C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,19)];
    init_test(&cd_S7017C1, buf);
    S7017C1 *dp, &lv = *(dp=new (buf) S7017C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,72), "sizeof(S7017C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7017C1)");
    check_base_class_offset(lv, (S7017C2*), 0, "S7017C1");
    check_field_offset(lv, s7017c1f0, ABISELECT(16,12), "S7017C1.s7017c1f0");
    check_field_offset(lv, s7017c1f1, ABISELECT(40,28), "S7017C1.s7017c1f1");
    check_field_offset(lv, s7017c1f2, ABISELECT(96,56), "S7017C1.s7017c1f2");
    test_class_info(&lv, &cd_S7017C1);
    dp->~S7017C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7017C1(Test_S7017C1, "S7017C1", ABISELECT(128,72));

#else // __cplusplus

extern void _ZN7S7017C1C1Ev();
extern void _ZN7S7017C1D1Ev();
Name_Map name_map_S7017C1[] = {
  NSPAIR(_ZN7S7017C1C1Ev),
  NSPAIR(_ZN7S7017C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7017C2;
extern VTBL_ENTRY _ZTI7S7017C2[];
extern  VTBL_ENTRY _ZTV7S7017C2[];
static Base_Class bases_S7017C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7017C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7017C1[];
extern void _ZN7S7017C1D1Ev();
extern void _ZN7S7017C1D0Ev();
extern void _ZN7S7017C22v6Ev();
extern void _ZN7S7017C22v7Ev();
extern void _ZN7S7017C22v8Ev();
extern void _ZN7S7017C22v9Ev();
extern void _ZN7S7017C23v10Ev();
extern void _ZN7S7017C23v11Ev();
extern void _ZN7S7017C23v12Ev();
extern void _ZN7S7017C23v13Ev();
extern void _ZN7S7017C23v14Ev();
extern void _ZN7S7017C23v15Ev();
extern void _ZN7S7017C23v16Ev();
extern void _ZN7S7017C23v17Ev();
extern void _ZN7S7017C23v18Ev();
extern void _ZN7S7017C23v19Ev();
extern void _ZN7S7017C12v1Ev();
extern void _ZN7S7017C12v2Ev();
extern void _ZN7S7017C12v3Ev();
extern void _ZN7S7017C12v4Ev();
extern void _ZN7S7017C12v5Ev();
static  VTBL_ENTRY vtc_S7017C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7017C1[0]),
  (VTBL_ENTRY)&_ZN7S7017C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7017C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7017C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7017C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7017C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7017C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7017C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7017C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7017C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7017C1[];
extern  VTBL_ENTRY _ZTV7S7017C1[];
Class_Descriptor cd_S7017C1 = {  "S7017C1", // class name
  bases_S7017C1, 1,
  &(vtc_S7017C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,72), // object size
  NSPAIRA(_ZTI7S7017C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7017C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3336C3  {
  virtual void  v5(); // _ZN7S3336C32v5Ev
  ~S3336C3(); // tgen
  S3336C3(); // tgen
};
//SIG(-1 S3336C3) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S3336C3C1Ev();
extern void _ZN7S3336C3D1Ev();
Name_Map name_map_S3336C3[] = {
  NSPAIR(_ZN7S3336C3C1Ev),
  NSPAIR(_ZN7S3336C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3336C3[];
extern void _ZN7S3336C32v5Ev();
static  VTBL_ENTRY vtc_S3336C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3336C3[0]),
  (VTBL_ENTRY)&_ZN7S3336C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S3336C3[];
extern  VTBL_ENTRY _ZTV7S3336C3[];
Class_Descriptor cd_S3336C3 = {  "S3336C3", // class name
  0,0,//no base classes
  &(vtc_S3336C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3336C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3336C3),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  S3336C2  : S3336C3 {
  ::S3445C28 s3336c2f0;
  int s3336c2f1[2];
  virtual  ~S3336C2(); // _ZN7S3336C2D1Ev
  virtual void  v6(); // _ZN7S3336C22v6Ev
  virtual void  v7(); // _ZN7S3336C22v7Ev
  virtual void  v8(); // _ZN7S3336C22v8Ev
  virtual void  v9(); // _ZN7S3336C22v9Ev
  virtual void  v10(); // _ZN7S3336C23v10Ev
  virtual void  v11(); // _ZN7S3336C23v11Ev
  virtual void  v12(); // _ZN7S3336C23v12Ev
  virtual void  v13(); // _ZN7S3336C23v13Ev
  S3336C2(); // tgen
};
//SIG(-1 S3336C2) C1{ BC2{ v9} vd v1 v2 v3 v4 v5 v6 v7 v8 FC3{ BC4{ m Fp Fi[2]}} Fi[2]}


 S3336C2 ::~S3336C2(){ note_dtor("S3336C2", this);}
void  S3336C2 ::v6(){vfunc_called(this, "_ZN7S3336C22v6Ev");}
void  S3336C2 ::v7(){vfunc_called(this, "_ZN7S3336C22v7Ev");}
void  S3336C2 ::v8(){vfunc_called(this, "_ZN7S3336C22v8Ev");}
void  S3336C2 ::v9(){vfunc_called(this, "_ZN7S3336C22v9Ev");}
void  S3336C2 ::v10(){vfunc_called(this, "_ZN7S3336C23v10Ev");}
void  S3336C2 ::v11(){vfunc_called(this, "_ZN7S3336C23v11Ev");}
void  S3336C2 ::v12(){vfunc_called(this, "_ZN7S3336C23v12Ev");}
void  S3336C2 ::v13(){vfunc_called(this, "_ZN7S3336C23v13Ev");}
S3336C2 ::S3336C2(){ note_ctor("S3336C2", this);} // tgen

static void Test_S3336C2()
{
  extern Class_Descriptor cd_S3336C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3336C2, buf);
    S3336C2 *dp, &lv = *(dp=new (buf) S3336C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3336C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3336C2)");
    check_base_class_offset(lv, (S3336C3*), 0, "S3336C2");
    check_field_offset(lv, s3336c2f0, ABISELECT(8,4), "S3336C2.s3336c2f0");
    check_field_offset(lv, s3336c2f1, ABISELECT(24,16), "S3336C2.s3336c2f1");
    test_class_info(&lv, &cd_S3336C2);
    dp->~S3336C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3336C2(Test_S3336C2, "S3336C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3336C2C1Ev();
extern void _ZN7S3336C2D1Ev();
Name_Map name_map_S3336C2[] = {
  NSPAIR(_ZN7S3336C2C1Ev),
  NSPAIR(_ZN7S3336C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3336C3;
extern VTBL_ENTRY _ZTI7S3336C3[];
extern  VTBL_ENTRY _ZTV7S3336C3[];
static Base_Class bases_S3336C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3336C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3336C2[];
extern void _ZN7S3336C32v5Ev();
extern void _ZN7S3336C2D1Ev();
extern void _ZN7S3336C2D0Ev();
extern void _ZN7S3336C22v6Ev();
extern void _ZN7S3336C22v7Ev();
extern void _ZN7S3336C22v8Ev();
extern void _ZN7S3336C22v9Ev();
extern void _ZN7S3336C23v10Ev();
extern void _ZN7S3336C23v11Ev();
extern void _ZN7S3336C23v12Ev();
extern void _ZN7S3336C23v13Ev();
static  VTBL_ENTRY vtc_S3336C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3336C2[0]),
  (VTBL_ENTRY)&_ZN7S3336C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3336C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3336C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S3336C2[];
extern  VTBL_ENTRY _ZTV7S3336C2[];
Class_Descriptor cd_S3336C2 = {  "S3336C2", // class name
  bases_S3336C2, 1,
  &(vtc_S3336C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3336C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3336C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3336C1  : S3336C2 {
  void *s3336c1f0[4];
  ::S3413C13_nt s3336c1f1[4];
  ::S3223C4_nt s3336c1f2;
  ::S3223C4_nt s3336c1f3;
  virtual void  v1(); // _ZN7S3336C12v1Ev
  virtual void  v2(); // _ZN7S3336C12v2Ev
  virtual void  v3(); // _ZN7S3336C12v3Ev
  virtual void  v4(); // _ZN7S3336C12v4Ev
  ~S3336C1(); // tgen
  S3336C1(); // tgen
};
//SIG(1 S3336C1) C1{ BC2{ BC3{ v5} vd v6 v7 v8 v9 v10 v11 v12 v13 FC4{ BC5{ m Fp Fi[2]}} Fi[2]} v1 v2 v3 v4 Fp[4] FC6{ m Fi[4]}[4] FC7{ m Fi[2]} FC7}


void  S3336C1 ::v1(){vfunc_called(this, "_ZN7S3336C12v1Ev");}
void  S3336C1 ::v2(){vfunc_called(this, "_ZN7S3336C12v2Ev");}
void  S3336C1 ::v3(){vfunc_called(this, "_ZN7S3336C12v3Ev");}
void  S3336C1 ::v4(){vfunc_called(this, "_ZN7S3336C12v4Ev");}
S3336C1 ::~S3336C1(){ note_dtor("S3336C1", this);} // tgen
S3336C1 ::S3336C1(){ note_ctor("S3336C1", this);} // tgen

static void Test_S3336C1()
{
  extern Class_Descriptor cd_S3336C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,31)];
    init_test(&cd_S3336C1, buf);
    S3336C1 *dp, &lv = *(dp=new (buf) S3336C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,120), "sizeof(S3336C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3336C1)");
    check_base_class_offset(lv, (S3336C3*)(S3336C2*), 0, "S3336C1");
    check_base_class_offset(lv, (S3336C2*), 0, "S3336C1");
    check_field_offset(lv, s3336c1f0, ABISELECT(32,24), "S3336C1.s3336c1f0");
    check_field_offset(lv, s3336c1f1, ABISELECT(64,40), "S3336C1.s3336c1f1");
    check_field_offset(lv, s3336c1f2, ABISELECT(128,104), "S3336C1.s3336c1f2");
    check_field_offset(lv, s3336c1f3, ABISELECT(136,112), "S3336C1.s3336c1f3");
    test_class_info(&lv, &cd_S3336C1);
    dp->~S3336C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3336C1(Test_S3336C1, "S3336C1", ABISELECT(144,120));

#else // __cplusplus

extern void _ZN7S3336C1C1Ev();
extern void _ZN7S3336C1D1Ev();
Name_Map name_map_S3336C1[] = {
  NSPAIR(_ZN7S3336C1C1Ev),
  NSPAIR(_ZN7S3336C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3336C3;
extern VTBL_ENTRY _ZTI7S3336C3[];
extern  VTBL_ENTRY _ZTV7S3336C3[];
extern Class_Descriptor cd_S3336C2;
extern VTBL_ENTRY _ZTI7S3336C2[];
extern  VTBL_ENTRY _ZTV7S3336C2[];
static Base_Class bases_S3336C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3336C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3336C1[];
extern void _ZN7S3336C32v5Ev();
extern void _ZN7S3336C1D1Ev();
extern void _ZN7S3336C1D0Ev();
extern void _ZN7S3336C22v6Ev();
extern void _ZN7S3336C22v7Ev();
extern void _ZN7S3336C22v8Ev();
extern void _ZN7S3336C22v9Ev();
extern void _ZN7S3336C23v10Ev();
extern void _ZN7S3336C23v11Ev();
extern void _ZN7S3336C23v12Ev();
extern void _ZN7S3336C23v13Ev();
extern void _ZN7S3336C12v1Ev();
extern void _ZN7S3336C12v2Ev();
extern void _ZN7S3336C12v3Ev();
extern void _ZN7S3336C12v4Ev();
static  VTBL_ENTRY vtc_S3336C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3336C1[0]),
  (VTBL_ENTRY)&_ZN7S3336C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3336C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3336C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3336C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3336C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3336C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3336C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3336C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3336C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3336C1[];
extern  VTBL_ENTRY _ZTV7S3336C1[];
Class_Descriptor cd_S3336C1 = {  "S3336C1", // class name
  bases_S3336C1, 2,
  &(vtc_S3336C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,120), // object size
  NSPAIRA(_ZTI7S3336C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3336C1),17, //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  S7021C2  {
  int s7021c2f0[2];
  virtual  ~S7021C2(); // _ZN7S7021C2D1Ev
  virtual void  v6(); // _ZN7S7021C22v6Ev
  virtual void  v7(); // _ZN7S7021C22v7Ev
  virtual void  v8(); // _ZN7S7021C22v8Ev
  virtual void  v9(); // _ZN7S7021C22v9Ev
  virtual void  v10(); // _ZN7S7021C23v10Ev
  virtual void  v11(); // _ZN7S7021C23v11Ev
  virtual void  v12(); // _ZN7S7021C23v12Ev
  virtual void  v13(); // _ZN7S7021C23v13Ev
  virtual void  v14(); // _ZN7S7021C23v14Ev
  virtual void  v15(); // _ZN7S7021C23v15Ev
  virtual void  v16(); // _ZN7S7021C23v16Ev
  virtual void  v17(); // _ZN7S7021C23v17Ev
  virtual void  v18(); // _ZN7S7021C23v18Ev
  virtual void  v19(); // _ZN7S7021C23v19Ev
  S7021C2(); // tgen
};
//SIG(-1 S7021C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7021C2 ::~S7021C2(){ note_dtor("S7021C2", this);}
void  S7021C2 ::v6(){vfunc_called(this, "_ZN7S7021C22v6Ev");}
void  S7021C2 ::v7(){vfunc_called(this, "_ZN7S7021C22v7Ev");}
void  S7021C2 ::v8(){vfunc_called(this, "_ZN7S7021C22v8Ev");}
void  S7021C2 ::v9(){vfunc_called(this, "_ZN7S7021C22v9Ev");}
void  S7021C2 ::v10(){vfunc_called(this, "_ZN7S7021C23v10Ev");}
void  S7021C2 ::v11(){vfunc_called(this, "_ZN7S7021C23v11Ev");}
void  S7021C2 ::v12(){vfunc_called(this, "_ZN7S7021C23v12Ev");}
void  S7021C2 ::v13(){vfunc_called(this, "_ZN7S7021C23v13Ev");}
void  S7021C2 ::v14(){vfunc_called(this, "_ZN7S7021C23v14Ev");}
void  S7021C2 ::v15(){vfunc_called(this, "_ZN7S7021C23v15Ev");}
void  S7021C2 ::v16(){vfunc_called(this, "_ZN7S7021C23v16Ev");}
void  S7021C2 ::v17(){vfunc_called(this, "_ZN7S7021C23v17Ev");}
void  S7021C2 ::v18(){vfunc_called(this, "_ZN7S7021C23v18Ev");}
void  S7021C2 ::v19(){vfunc_called(this, "_ZN7S7021C23v19Ev");}
S7021C2 ::S7021C2(){ note_ctor("S7021C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7021C2C1Ev();
extern void _ZN7S7021C2D1Ev();
Name_Map name_map_S7021C2[] = {
  NSPAIR(_ZN7S7021C2C1Ev),
  NSPAIR(_ZN7S7021C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7021C2[];
extern void _ZN7S7021C2D1Ev();
extern void _ZN7S7021C2D0Ev();
extern void _ZN7S7021C22v6Ev();
extern void _ZN7S7021C22v7Ev();
extern void _ZN7S7021C22v8Ev();
extern void _ZN7S7021C22v9Ev();
extern void _ZN7S7021C23v10Ev();
extern void _ZN7S7021C23v11Ev();
extern void _ZN7S7021C23v12Ev();
extern void _ZN7S7021C23v13Ev();
extern void _ZN7S7021C23v14Ev();
extern void _ZN7S7021C23v15Ev();
extern void _ZN7S7021C23v16Ev();
extern void _ZN7S7021C23v17Ev();
extern void _ZN7S7021C23v18Ev();
extern void _ZN7S7021C23v19Ev();
static  VTBL_ENTRY vtc_S7021C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7021C2[0]),
  (VTBL_ENTRY)&_ZN7S7021C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7021C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S7021C2[];
extern  VTBL_ENTRY _ZTV7S7021C2[];
Class_Descriptor cd_S7021C2 = {  "S7021C2", // class name
  0,0,//no base classes
  &(vtc_S7021C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7021C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7021C2),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  S7021C4  {
  void *s7021c4f0[16];
  void  mf7021c4(); // _ZN7S7021C48mf7021c4Ev
};
//SIG(1 S7021C4) C1{ m Fp[16]}


void  S7021C4 ::mf7021c4(){}

static void Test_S7021C4()
{
  {
    init_simple_test("S7021C4");
    S7021C4 lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S7021C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7021C4)");
    check_field_offset(lv, s7021c4f0, 0, "S7021C4.s7021c4f0");
  }
}
static Arrange_To_Call_Me vS7021C4(Test_S7021C4, "S7021C4", ABISELECT(128,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7021C3  {
  void *s7021c3f0;
  int s7021c3f1[7];
  ::S7021C4 s7021c3f2[6];
  int s7021c3f3;
  void  mf7021c3(); // _ZN7S7021C38mf7021c3Ev
};
//SIG(-1 S7021C3) C1{ m Fp Fi[7] FC2{ m Fp[16]}[6] Fi}


void  S7021C3 ::mf7021c3(){}

static void Test_S7021C3()
{
  {
    init_simple_test("S7021C3");
    S7021C3 lv;
    check2(sizeof(lv), ABISELECT(816,420), "sizeof(S7021C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7021C3)");
    check_field_offset(lv, s7021c3f0, 0, "S7021C3.s7021c3f0");
    check_field_offset(lv, s7021c3f1, ABISELECT(8,4), "S7021C3.s7021c3f1");
    check_field_offset(lv, s7021c3f2, ABISELECT(40,32), "S7021C3.s7021c3f2");
    check_field_offset(lv, s7021c3f3, ABISELECT(808,416), "S7021C3.s7021c3f3");
  }
}
static Arrange_To_Call_Me vS7021C3(Test_S7021C3, "S7021C3", ABISELECT(816,420));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7021C1  : S7021C2 {
  ::S7021C3 s7021c1f0;
  virtual  ~S7021C1(); // _ZN7S7021C1D1Ev
  virtual void  v1(); // _ZN7S7021C12v1Ev
  virtual void  v2(); // _ZN7S7021C12v2Ev
  virtual void  v3(); // _ZN7S7021C12v3Ev
  virtual void  v4(); // _ZN7S7021C12v4Ev
  virtual void  v5(); // _ZN7S7021C12v5Ev
  S7021C1(); // tgen
};
//SIG(1 S7021C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi[2]} vd v1 v2 v3 v4 v5 FC3{ m Fp Fi[7] FC4{ m Fp[16]}[6] Fi}}


 S7021C1 ::~S7021C1(){ note_dtor("S7021C1", this);}
void  S7021C1 ::v1(){vfunc_called(this, "_ZN7S7021C12v1Ev");}
void  S7021C1 ::v2(){vfunc_called(this, "_ZN7S7021C12v2Ev");}
void  S7021C1 ::v3(){vfunc_called(this, "_ZN7S7021C12v3Ev");}
void  S7021C1 ::v4(){vfunc_called(this, "_ZN7S7021C12v4Ev");}
void  S7021C1 ::v5(){vfunc_called(this, "_ZN7S7021C12v5Ev");}
S7021C1 ::S7021C1(){ note_ctor("S7021C1", this);} // tgen

static void Test_S7021C1()
{
  extern Class_Descriptor cd_S7021C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(105,109)];
    init_test(&cd_S7021C1, buf);
    S7021C1 *dp, &lv = *(dp=new (buf) S7021C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,432), "sizeof(S7021C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7021C1)");
    check_base_class_offset(lv, (S7021C2*), 0, "S7021C1");
    check_field_offset(lv, s7021c1f0, ABISELECT(16,12), "S7021C1.s7021c1f0");
    test_class_info(&lv, &cd_S7021C1);
    dp->~S7021C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7021C1(Test_S7021C1, "S7021C1", ABISELECT(832,432));

#else // __cplusplus

extern void _ZN7S7021C1C1Ev();
extern void _ZN7S7021C1D1Ev();
Name_Map name_map_S7021C1[] = {
  NSPAIR(_ZN7S7021C1C1Ev),
  NSPAIR(_ZN7S7021C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7021C2;
extern VTBL_ENTRY _ZTI7S7021C2[];
extern  VTBL_ENTRY _ZTV7S7021C2[];
static Base_Class bases_S7021C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7021C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7021C1[];
extern void _ZN7S7021C1D1Ev();
extern void _ZN7S7021C1D0Ev();
extern void _ZN7S7021C22v6Ev();
extern void _ZN7S7021C22v7Ev();
extern void _ZN7S7021C22v8Ev();
extern void _ZN7S7021C22v9Ev();
extern void _ZN7S7021C23v10Ev();
extern void _ZN7S7021C23v11Ev();
extern void _ZN7S7021C23v12Ev();
extern void _ZN7S7021C23v13Ev();
extern void _ZN7S7021C23v14Ev();
extern void _ZN7S7021C23v15Ev();
extern void _ZN7S7021C23v16Ev();
extern void _ZN7S7021C23v17Ev();
extern void _ZN7S7021C23v18Ev();
extern void _ZN7S7021C23v19Ev();
extern void _ZN7S7021C12v1Ev();
extern void _ZN7S7021C12v2Ev();
extern void _ZN7S7021C12v3Ev();
extern void _ZN7S7021C12v4Ev();
extern void _ZN7S7021C12v5Ev();
static  VTBL_ENTRY vtc_S7021C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7021C1[0]),
  (VTBL_ENTRY)&_ZN7S7021C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7021C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7021C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7021C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7021C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7021C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7021C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7021C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7021C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7021C1[];
extern  VTBL_ENTRY _ZTV7S7021C1[];
Class_Descriptor cd_S7021C1 = {  "S7021C1", // class name
  bases_S7021C1, 1,
  &(vtc_S7021C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,432), // object size
  NSPAIRA(_ZTI7S7021C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7021C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20532C4  {
  void *s20532c4f0;
  virtual void  v3(); // _ZN8S20532C42v3Ev
  virtual void  v4(); // _ZN8S20532C42v4Ev
  ~S20532C4(); // tgen
  S20532C4(); // tgen
};
//SIG(-1 S20532C4) C1{ v1 v2 Fp}


void  S20532C4 ::v3(){vfunc_called(this, "_ZN8S20532C42v3Ev");}
void  S20532C4 ::v4(){vfunc_called(this, "_ZN8S20532C42v4Ev");}
S20532C4 ::~S20532C4(){ note_dtor("S20532C4", this);} // tgen
S20532C4 ::S20532C4(){ note_ctor("S20532C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20532C4C1Ev();
extern void _ZN8S20532C4D1Ev();
Name_Map name_map_S20532C4[] = {
  NSPAIR(_ZN8S20532C4C1Ev),
  NSPAIR(_ZN8S20532C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20532C4[];
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY vtc_S20532C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C4[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
Class_Descriptor cd_S20532C4 = {  "S20532C4", // class name
  0,0,//no base classes
  &(vtc_S20532C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20532C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20532C4),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  S20532C5  : virtual S20532C4 {
  virtual void  v5(); // _ZN8S20532C52v5Ev
  virtual void  v6(); // _ZN8S20532C52v6Ev
  virtual void  v7(); // _ZN8S20532C52v7Ev
  virtual void  v8(); // _ZN8S20532C52v8Ev
  virtual void  v9(); // _ZN8S20532C52v9Ev
  virtual void  v10(); // _ZN8S20532C53v10Ev
  ~S20532C5(); // tgen
  S20532C5(); // tgen
};
//SIG(-1 S20532C5) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S20532C5 ::v5(){vfunc_called(this, "_ZN8S20532C52v5Ev");}
void  S20532C5 ::v6(){vfunc_called(this, "_ZN8S20532C52v6Ev");}
void  S20532C5 ::v7(){vfunc_called(this, "_ZN8S20532C52v7Ev");}
void  S20532C5 ::v8(){vfunc_called(this, "_ZN8S20532C52v8Ev");}
void  S20532C5 ::v9(){vfunc_called(this, "_ZN8S20532C52v9Ev");}
void  S20532C5 ::v10(){vfunc_called(this, "_ZN8S20532C53v10Ev");}
S20532C5 ::~S20532C5(){ note_dtor("S20532C5", this);} // tgen
S20532C5 ::S20532C5(){ note_ctor("S20532C5", this);} // tgen

static void Test_S20532C5()
{
  extern Class_Descriptor cd_S20532C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20532C5, buf);
    S20532C5 *dp, &lv = *(dp=new (buf) S20532C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20532C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20532C5)");
    check_base_class_offset(lv, (S20532C4*), ABISELECT(8,4), "S20532C5");
    test_class_info(&lv, &cd_S20532C5);
    dp->~S20532C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20532C5(Test_S20532C5, "S20532C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20532C5C1Ev();
extern void _ZN8S20532C5D1Ev();
Name_Map name_map_S20532C5[] = {
  NSPAIR(_ZN8S20532C5C1Ev),
  NSPAIR(_ZN8S20532C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
static Base_Class bases_S20532C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20532C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20532C5[];
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY vtc_S20532C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20532C5[];
static  VTT_ENTRY vtt_S20532C5[] = {
  {&(_ZTV8S20532C5[3]),  3,15},
  {&(_ZTV8S20532C5[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S20532C5[];
extern  VTBL_ENTRY _ZTV8S20532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C5[];
Class_Descriptor cd_S20532C5 = {  "S20532C5", // class name
  bases_S20532C5, 1,
  &(vtc_S20532C5[0]), // expected_vtbl_contents
  &(vtt_S20532C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20532C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20532C5),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20532C5),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  S20532C3  : S20532C4 , virtual S20532C5 {
  long double s20532c3f0;
  char s20532c3f1:8;
  void *s20532c3f2;
  virtual void  v11(); // _ZN8S20532C33v11Ev
  virtual void  v12(); // _ZN8S20532C33v12Ev
  virtual void  v13(); // _ZN8S20532C33v13Ev
  virtual void  v14(); // _ZN8S20532C33v14Ev
  virtual void  v15(); // _ZN8S20532C33v15Ev
  ~S20532C3(); // tgen
  S20532C3(); // tgen
};
//SIG(-1 S20532C3) C1{ BC2{ v6 v7 Fp} VBC3{ VBC2 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 FD Fc:8 Fp}


void  S20532C3 ::v11(){vfunc_called(this, "_ZN8S20532C33v11Ev");}
void  S20532C3 ::v12(){vfunc_called(this, "_ZN8S20532C33v12Ev");}
void  S20532C3 ::v13(){vfunc_called(this, "_ZN8S20532C33v13Ev");}
void  S20532C3 ::v14(){vfunc_called(this, "_ZN8S20532C33v14Ev");}
void  S20532C3 ::v15(){vfunc_called(this, "_ZN8S20532C33v15Ev");}
S20532C3 ::~S20532C3(){ note_dtor("S20532C3", this);} // tgen
S20532C3 ::S20532C3(){ note_ctor("S20532C3", this);} // tgen

static void Test_S20532C3()
{
  extern Class_Descriptor cd_S20532C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20532C3, buf);
    S20532C3 *dp, &lv = *(dp=new (buf) S20532C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20532C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20532C3)");
    /*is_ambiguous_... S20532C3::S20532C4 */ AMB_check_base_class_offset(lv, (S20532C4*), 0, "S20532C3");
    check_base_class_offset(lv, (S20532C4*)(S20532C5*), ABISELECT(56,32), "S20532C3");
    check_base_class_offset(lv, (S20532C5*), ABISELECT(48,28), "S20532C3");
    check_field_offset(lv, s20532c3f0, ABISELECT(16,8), "S20532C3.s20532c3f0");
    set_bf_and_test(lv, s20532c3f1, ABISELECT(32,20), 0, 8, 1, "S20532C3");
    set_bf_and_test(lv, s20532c3f1, ABISELECT(32,20), 0, 8, hide_sll(1LL<<7), "S20532C3");
    check_field_offset(lv, s20532c3f2, ABISELECT(40,24), "S20532C3.s20532c3f2");
    test_class_info(&lv, &cd_S20532C3);
    dp->~S20532C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20532C3(Test_S20532C3, "S20532C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20532C3C1Ev();
extern void _ZN8S20532C3D1Ev();
Name_Map name_map_S20532C3[] = {
  NSPAIR(_ZN8S20532C3C1Ev),
  NSPAIR(_ZN8S20532C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
extern Class_Descriptor cd_S20532C5;
extern VTBL_ENTRY _ZTI8S20532C5[];
extern  VTBL_ENTRY _ZTV8S20532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C5[];
static Base_Class bases_S20532C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20532C4,    ABISELECT(56,32), //bcp->offset
    26, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20532C5,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20532C3[];
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
extern void _ZN8S20532C33v11Ev();
extern void _ZN8S20532C33v12Ev();
extern void _ZN8S20532C33v13Ev();
extern void _ZN8S20532C33v14Ev();
extern void _ZN8S20532C33v15Ev();
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY vtc_S20532C3[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20532C3[];
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C5__8S20532C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__8S20532C5__8S20532C3[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
static  VTT_ENTRY vtt_S20532C3[] = {
  {&(_ZTV8S20532C3[4]),  4,32},
  {&(_ZTV8S20532C3[20]),  20,32},
  {&(_ZTV8S20532C3[30]),  30,32},
  {&(_tg__ZTV8S20532C5__8S20532C3[3]),  3,9},
  {&(_tg__ZTV8S20532C4__8S20532C5__8S20532C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20532C3[];
extern  VTBL_ENTRY _ZTV8S20532C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C3[];
Class_Descriptor cd_S20532C3 = {  "S20532C3", // class name
  bases_S20532C3, 3,
  &(vtc_S20532C3[0]), // expected_vtbl_contents
  &(vtt_S20532C3[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20532C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20532C3),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20532C3),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  S20532C2  : virtual S20532C3 {
  __tsi64 s20532c2f0[6];
  ::S20532C5 s20532c2f1;
  virtual void  v16(); // _ZN8S20532C23v16Ev
  virtual void  v17(); // _ZN8S20532C23v17Ev
  virtual void  v18(); // _ZN8S20532C23v18Ev
  virtual void  v19(); // _ZN8S20532C23v19Ev
  ~S20532C2(); // tgen
  S20532C2(); // tgen
};
//SIG(-1 S20532C2) C1{ VBC2{ BC3{ v5 v6 Fp} VBC4{ VBC3 v7 v8 v9 v10 v11 v12} v13 v14 v15 v16 v17 FD Fc:8 Fp} v1 v2 v3 v4 FL[6] FC4}


void  S20532C2 ::v16(){vfunc_called(this, "_ZN8S20532C23v16Ev");}
void  S20532C2 ::v17(){vfunc_called(this, "_ZN8S20532C23v17Ev");}
void  S20532C2 ::v18(){vfunc_called(this, "_ZN8S20532C23v18Ev");}
void  S20532C2 ::v19(){vfunc_called(this, "_ZN8S20532C23v19Ev");}
S20532C2 ::~S20532C2(){ note_dtor("S20532C2", this);} // tgen
S20532C2 ::S20532C2(){ note_ctor("S20532C2", this);} // tgen

static void Test_S20532C2()
{
  extern Class_Descriptor cd_S20532C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S20532C2, buf);
    S20532C2 *dp, &lv = *(dp=new (buf) S20532C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S20532C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20532C2)");
    /*is_ambiguous_... S20532C3::S20532C4 */ AMB_check_base_class_offset(lv, (S20532C4*)(S20532C3*), ABISELECT(80,64), "S20532C2");
    check_base_class_offset(lv, (S20532C4*)(S20532C5*), ABISELECT(128,92), "S20532C2");
    check_base_class_offset(lv, (S20532C5*)(S20532C3*), 0, "S20532C2");
    check_base_class_offset(lv, (S20532C3*), ABISELECT(80,64), "S20532C2");
    check_field_offset(lv, s20532c2f0, ABISELECT(8,4), "S20532C2.s20532c2f0");
    check_field_offset(lv, s20532c2f1, ABISELECT(56,52), "S20532C2.s20532c2f1");
    test_class_info(&lv, &cd_S20532C2);
    dp->~S20532C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20532C2(Test_S20532C2, "S20532C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S20532C2C1Ev();
extern void _ZN8S20532C2D1Ev();
Name_Map name_map_S20532C2[] = {
  NSPAIR(_ZN8S20532C2C1Ev),
  NSPAIR(_ZN8S20532C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
extern Class_Descriptor cd_S20532C5;
extern VTBL_ENTRY _ZTI8S20532C5[];
extern  VTBL_ENTRY _ZTV8S20532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C5[];
extern Class_Descriptor cd_S20532C3;
extern VTBL_ENTRY _ZTI8S20532C3[];
extern  VTBL_ENTRY _ZTV8S20532C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C3[];
static Base_Class bases_S20532C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20532C4,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20532C4,    ABISELECT(128,92), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20532C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20532C3,    ABISELECT(80,64), //bcp->offset
    21, //bcp->virtual_function_table_offset
    11, //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 _ZTI8S20532C2[];
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
extern void _ZN8S20532C23v16Ev();
extern void _ZN8S20532C23v17Ev();
extern void _ZN8S20532C23v18Ev();
extern void _ZN8S20532C23v19Ev();
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
extern void _ZN8S20532C33v11Ev();
extern void _ZN8S20532C33v12Ev();
extern void _ZN8S20532C33v13Ev();
extern void _ZN8S20532C33v14Ev();
extern void _ZN8S20532C33v15Ev();
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY vtc_S20532C2[] = {
  0,
  ABISELECT(80,64),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C2[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20532C2[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v15Ev,
  0,
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S20532C2[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20532C2[];
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
extern void _ZN8S20532C33v11Ev();
extern void _ZN8S20532C33v12Ev();
extern void _ZN8S20532C33v13Ev();
extern void _ZN8S20532C33v14Ev();
extern void _ZN8S20532C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C3__8S20532C2[] = {
  ABISELECT(48,28),
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v15Ev,
};
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C5__8S20532C3__8S20532C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,92),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__A1__8S20532C3__8S20532C2[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C5__8S20532C2[] = {
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__8S20532C5__8S20532C2[] = {
  0,
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
static  VTT_ENTRY vtt_S20532C2[] = {
  {&(_ZTV8S20532C2[11]),  11,45},
  {&(_ZTV8S20532C2[32]),  32,45},
  {&(_ZTV8S20532C2[11]),  11,45},
  {&(_ZTV8S20532C2[43]),  43,45},
  {&(_tg__ZTV8S20532C3__8S20532C2[4]),  4,11},
  {&(_tg__ZTV8S20532C5__8S20532C3__8S20532C2[9]),  9,15},
  {&(_tg__ZTV8S20532C4__A1__8S20532C3__8S20532C2[4]),  4,6},
  {&(_tg__ZTV8S20532C5__8S20532C2[3]),  3,9},
  {&(_tg__ZTV8S20532C4__8S20532C5__8S20532C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20532C2[];
extern  VTBL_ENTRY _ZTV8S20532C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C2[];
Class_Descriptor cd_S20532C2 = {  "S20532C2", // class name
  bases_S20532C2, 4,
  &(vtc_S20532C2[0]), // expected_vtbl_contents
  &(vtt_S20532C2[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S20532C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20532C2),45, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20532C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20532C1  : virtual S20532C2 , S20532C5 {
  virtual void  v1(); // _ZN8S20532C12v1Ev
  virtual void  v2(); // _ZN8S20532C12v2Ev
  ~S20532C1(); // tgen
  S20532C1(); // tgen
};
//SIG(1 S20532C1) C1{ VBC2{ VBC3{ BC4{ v3 v4 Fp} VBC5{ VBC4 v5 v6 v7 v8 v9 v10} v11 v12 v13 v14 v15 FD Fc:8 Fp} v16 v17 v18 v19 FL[6] FC5} BC5 v1 v2}


void  S20532C1 ::v1(){vfunc_called(this, "_ZN8S20532C12v1Ev");}
void  S20532C1 ::v2(){vfunc_called(this, "_ZN8S20532C12v2Ev");}
S20532C1 ::~S20532C1(){ note_dtor("S20532C1", this);} // tgen
S20532C1 ::S20532C1(){ note_ctor("S20532C1", this);} // tgen

static void Test_S20532C1()
{
  extern Class_Descriptor cd_S20532C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,27)];
    init_test(&cd_S20532C1, buf);
    S20532C1 *dp, &lv = *(dp=new (buf) S20532C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S20532C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20532C1)");
    /*is_ambiguous_... S20532C3::S20532C4 */ AMB_check_base_class_offset(lv, (S20532C4*)(S20532C3*), ABISELECT(96,68), "S20532C1");
    /*is_ambiguous_... S20532C1::S20532C5 */ AMB_check_base_class_offset(lv, (S20532C4*)(S20532C5*), ABISELECT(144,96), "S20532C1");
    /*is_ambiguous_... S20532C1::S20532C5 */ AMB_check_base_class_offset(lv, (S20532C4*)(S20532C5*), ABISELECT(144,96), "S20532C1");
    check_base_class_offset(lv, (S20532C5*)(S20532C3*), ABISELECT(8,4), "S20532C1");
    check_base_class_offset(lv, (S20532C3*)(S20532C2*), ABISELECT(96,68), "S20532C1");
    check_base_class_offset(lv, (S20532C2*), ABISELECT(8,4), "S20532C1");
    /*is_ambiguous_... S20532C1::S20532C5 */ AMB_check_base_class_offset(lv, (S20532C5*), 0, "S20532C1");
    test_class_info(&lv, &cd_S20532C1);
    dp->~S20532C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20532C1(Test_S20532C1, "S20532C1", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN8S20532C1C1Ev();
extern void _ZN8S20532C1D1Ev();
Name_Map name_map_S20532C1[] = {
  NSPAIR(_ZN8S20532C1C1Ev),
  NSPAIR(_ZN8S20532C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
extern Class_Descriptor cd_S20532C4;
extern VTBL_ENTRY _ZTI8S20532C4[];
extern  VTBL_ENTRY _ZTV8S20532C4[];
extern Class_Descriptor cd_S20532C5;
extern VTBL_ENTRY _ZTI8S20532C5[];
extern  VTBL_ENTRY _ZTV8S20532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C5[];
extern Class_Descriptor cd_S20532C3;
extern VTBL_ENTRY _ZTI8S20532C3[];
extern  VTBL_ENTRY _ZTV8S20532C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C3[];
extern Class_Descriptor cd_S20532C2;
extern VTBL_ENTRY _ZTI8S20532C2[];
extern  VTBL_ENTRY _ZTV8S20532C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C2[];
extern Class_Descriptor cd_S20532C5;
extern VTBL_ENTRY _ZTI8S20532C5[];
extern  VTBL_ENTRY _ZTV8S20532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C5[];
static Base_Class bases_S20532C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20532C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20532C4,    ABISELECT(144,96), //bcp->offset
    57, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20532C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20532C3,    ABISELECT(96,68), //bcp->offset
    39, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20532C2,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    15, //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_S20532C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20532C1[];
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
extern void _ZN8S20532C12v1Ev();
extern void _ZN8S20532C12v2Ev();
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
extern void _ZN8S20532C23v16Ev();
extern void _ZN8S20532C23v17Ev();
extern void _ZN8S20532C23v18Ev();
extern void _ZN8S20532C23v19Ev();
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
extern void _ZN8S20532C33v11Ev();
extern void _ZN8S20532C33v12Ev();
extern void _ZN8S20532C33v13Ev();
extern void _ZN8S20532C33v14Ev();
extern void _ZN8S20532C33v15Ev();
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY vtc_S20532C1[] = {
  ABISELECT(8,4),
  ABISELECT(96,68),
  ABISELECT(8,4),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C1[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20532C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20532C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,64),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20532C1[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-88,-64),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20532C1[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v15Ev,
  0,
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20532C1[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20532C1[];
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C5__A__8S20532C1[] = {
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__8S20532C5__A__8S20532C1[] = {
  0,
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
extern void _ZN8S20532C23v16Ev();
extern void _ZN8S20532C23v17Ev();
extern void _ZN8S20532C23v18Ev();
extern void _ZN8S20532C23v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C2__8S20532C1[] = {
  0,
  ABISELECT(88,64),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C2[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20532C23v19Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
extern void _ZN8S20532C33v11Ev();
extern void _ZN8S20532C33v12Ev();
extern void _ZN8S20532C33v13Ev();
extern void _ZN8S20532C33v14Ev();
extern void _ZN8S20532C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C3__8S20532C2__8S20532C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S20532C2[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v15Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__A1__8S20532C2__8S20532C1[] = {
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20532C2[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
extern void _ZN8S20532C33v11Ev();
extern void _ZN8S20532C33v12Ev();
extern void _ZN8S20532C33v13Ev();
extern void _ZN8S20532C33v14Ev();
extern void _ZN8S20532C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C3__8S20532C1[] = {
  ABISELECT(48,28),
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20532C33v15Ev,
};
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C5__8S20532C3__8S20532C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,92),
  ABISELECT(88,64),
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__A1__8S20532C3__8S20532C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20532C3[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
extern void _ZN8S20532C52v5Ev();
extern void _ZN8S20532C52v6Ev();
extern void _ZN8S20532C52v7Ev();
extern void _ZN8S20532C52v8Ev();
extern void _ZN8S20532C52v9Ev();
extern void _ZN8S20532C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C5__8S20532C1[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20532C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20532C53v10Ev,
};
extern void _ZN8S20532C42v3Ev();
extern void _ZN8S20532C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20532C4__8S20532C5__8S20532C1[] = {
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20532C5[0]),
  (VTBL_ENTRY)&_ZN8S20532C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20532C42v4Ev,
};
static  VTT_ENTRY vtt_S20532C1[] = {
  {&(_ZTV8S20532C1[6]),  6,63},
  {&(_tg__ZTV8S20532C5__A__8S20532C1[3]),  3,9},
  {&(_tg__ZTV8S20532C4__8S20532C5__A__8S20532C1[4]),  4,6},
  {&(_ZTV8S20532C1[29]),  29,63},
  {&(_ZTV8S20532C1[50]),  50,63},
  {&(_ZTV8S20532C1[29]),  29,63},
  {&(_ZTV8S20532C1[61]),  61,63},
  {&(_tg__ZTV8S20532C2__8S20532C1[11]),  11,21},
  {&(_tg__ZTV8S20532C3__8S20532C2__8S20532C1[11]),  11,18},
  {&(_tg__ZTV8S20532C2__8S20532C1[11]),  11,21},
  {&(_tg__ZTV8S20532C4__A1__8S20532C2__8S20532C1[4]),  4,6},
  {&(_tg__ZTV8S20532C3__8S20532C1[4]),  4,11},
  {&(_tg__ZTV8S20532C5__8S20532C3__8S20532C1[9]),  9,15},
  {&(_tg__ZTV8S20532C4__A1__8S20532C3__8S20532C1[4]),  4,6},
  {&(_tg__ZTV8S20532C5__8S20532C1[3]),  3,9},
  {&(_tg__ZTV8S20532C4__8S20532C5__8S20532C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20532C1[];
extern  VTBL_ENTRY _ZTV8S20532C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20532C1[];
Class_Descriptor cd_S20532C1 = {  "S20532C1", // class name
  bases_S20532C1, 6,
  &(vtc_S20532C1[0]), // expected_vtbl_contents
  &(vtt_S20532C1[0]), // expected_vtt_contents
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI8S20532C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20532C1),63, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20532C1),16, //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  S21069C4  {
  void *s21069c4f0;
  virtual void  v3(); // _ZN8S21069C42v3Ev
  virtual void  v4(); // _ZN8S21069C42v4Ev
  ~S21069C4(); // tgen
  S21069C4(); // tgen
};
//SIG(-1 S21069C4) C1{ v1 v2 Fp}


void  S21069C4 ::v3(){vfunc_called(this, "_ZN8S21069C42v3Ev");}
void  S21069C4 ::v4(){vfunc_called(this, "_ZN8S21069C42v4Ev");}
S21069C4 ::~S21069C4(){ note_dtor("S21069C4", this);} // tgen
S21069C4 ::S21069C4(){ note_ctor("S21069C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21069C4C1Ev();
extern void _ZN8S21069C4D1Ev();
Name_Map name_map_S21069C4[] = {
  NSPAIR(_ZN8S21069C4C1Ev),
  NSPAIR(_ZN8S21069C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21069C4[];
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY vtc_S21069C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C4[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
Class_Descriptor cd_S21069C4 = {  "S21069C4", // class name
  0,0,//no base classes
  &(vtc_S21069C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21069C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21069C4),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  S21069C3  : virtual S21069C4 {
  virtual void  v5(); // _ZN8S21069C32v5Ev
  virtual void  v6(); // _ZN8S21069C32v6Ev
  virtual void  v7(); // _ZN8S21069C32v7Ev
  virtual void  v8(); // _ZN8S21069C32v8Ev
  virtual void  v9(); // _ZN8S21069C32v9Ev
  virtual void  v10(); // _ZN8S21069C33v10Ev
  ~S21069C3(); // tgen
  S21069C3(); // tgen
};
//SIG(-1 S21069C3) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S21069C3 ::v5(){vfunc_called(this, "_ZN8S21069C32v5Ev");}
void  S21069C3 ::v6(){vfunc_called(this, "_ZN8S21069C32v6Ev");}
void  S21069C3 ::v7(){vfunc_called(this, "_ZN8S21069C32v7Ev");}
void  S21069C3 ::v8(){vfunc_called(this, "_ZN8S21069C32v8Ev");}
void  S21069C3 ::v9(){vfunc_called(this, "_ZN8S21069C32v9Ev");}
void  S21069C3 ::v10(){vfunc_called(this, "_ZN8S21069C33v10Ev");}
S21069C3 ::~S21069C3(){ note_dtor("S21069C3", this);} // tgen
S21069C3 ::S21069C3(){ note_ctor("S21069C3", this);} // tgen

static void Test_S21069C3()
{
  extern Class_Descriptor cd_S21069C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21069C3, buf);
    S21069C3 *dp, &lv = *(dp=new (buf) S21069C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21069C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21069C3)");
    check_base_class_offset(lv, (S21069C4*), ABISELECT(8,4), "S21069C3");
    test_class_info(&lv, &cd_S21069C3);
    dp->~S21069C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21069C3(Test_S21069C3, "S21069C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21069C3C1Ev();
extern void _ZN8S21069C3D1Ev();
Name_Map name_map_S21069C3[] = {
  NSPAIR(_ZN8S21069C3C1Ev),
  NSPAIR(_ZN8S21069C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21069C4;
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
static Base_Class bases_S21069C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21069C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21069C3[];
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY vtc_S21069C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S21069C3[];
static  VTT_ENTRY vtt_S21069C3[] = {
  {&(_ZTV8S21069C3[3]),  3,15},
  {&(_ZTV8S21069C3[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S21069C3[];
extern  VTBL_ENTRY _ZTV8S21069C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C3[];
Class_Descriptor cd_S21069C3 = {  "S21069C3", // class name
  bases_S21069C3, 1,
  &(vtc_S21069C3[0]), // expected_vtbl_contents
  &(vtt_S21069C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21069C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21069C3),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21069C3),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  S21069C2  : virtual S21069C3 {
  void *s21069c2f0;
  ::S21069C4 s21069c2f1;
  ::S21069C4 s21069c2f2;
  virtual void  v11(); // _ZN8S21069C23v11Ev
  virtual void  v12(); // _ZN8S21069C23v12Ev
  ~S21069C2(); // tgen
  S21069C2(); // tgen
};
//SIG(-1 S21069C2) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v1 v2 Fp FC3 FC3}


void  S21069C2 ::v11(){vfunc_called(this, "_ZN8S21069C23v11Ev");}
void  S21069C2 ::v12(){vfunc_called(this, "_ZN8S21069C23v12Ev");}
S21069C2 ::~S21069C2(){ note_dtor("S21069C2", this);} // tgen
S21069C2 ::S21069C2(){ note_ctor("S21069C2", this);} // tgen

static void Test_S21069C2()
{
  extern Class_Descriptor cd_S21069C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S21069C2, buf);
    S21069C2 *dp, &lv = *(dp=new (buf) S21069C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21069C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21069C2)");
    check_base_class_offset(lv, (S21069C4*)(S21069C3*), ABISELECT(48,24), "S21069C2");
    check_base_class_offset(lv, (S21069C3*), 0, "S21069C2");
    check_field_offset(lv, s21069c2f0, ABISELECT(8,4), "S21069C2.s21069c2f0");
    check_field_offset(lv, s21069c2f1, ABISELECT(16,8), "S21069C2.s21069c2f1");
    check_field_offset(lv, s21069c2f2, ABISELECT(32,16), "S21069C2.s21069c2f2");
    test_class_info(&lv, &cd_S21069C2);
    dp->~S21069C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21069C2(Test_S21069C2, "S21069C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S21069C2C1Ev();
extern void _ZN8S21069C2D1Ev();
Name_Map name_map_S21069C2[] = {
  NSPAIR(_ZN8S21069C2C1Ev),
  NSPAIR(_ZN8S21069C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21069C4;
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
extern Class_Descriptor cd_S21069C3;
extern VTBL_ENTRY _ZTI8S21069C3[];
extern  VTBL_ENTRY _ZTV8S21069C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C3[];
static Base_Class bases_S21069C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21069C4,    ABISELECT(48,24), //bcp->offset
    18, //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_S21069C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21069C2[];
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
extern void _ZN8S21069C23v11Ev();
extern void _ZN8S21069C23v12Ev();
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY vtc_S21069C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C2[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
  (VTBL_ENTRY)&_ZN8S21069C23v11Ev,
  (VTBL_ENTRY)&_ZN8S21069C23v12Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21069C2[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S21069C2[];
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C3__8S21069C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
};
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C4__8S21069C3__8S21069C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
static  VTT_ENTRY vtt_S21069C2[] = {
  {&(_ZTV8S21069C2[10]),  10,24},
  {&(_ZTV8S21069C2[10]),  10,24},
  {&(_ZTV8S21069C2[22]),  22,24},
  {&(_tg__ZTV8S21069C3__8S21069C2[3]),  3,9},
  {&(_tg__ZTV8S21069C4__8S21069C3__8S21069C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21069C2[];
extern  VTBL_ENTRY _ZTV8S21069C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C2[];
Class_Descriptor cd_S21069C2 = {  "S21069C2", // class name
  bases_S21069C2, 2,
  &(vtc_S21069C2[0]), // expected_vtbl_contents
  &(vtt_S21069C2[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S21069C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21069C2),24, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21069C2),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  S21069C5  : S21069C4 , virtual S21069C3 {
  long double s21069c5f0;
  char s21069c5f1:8;
  void *s21069c5f2;
  virtual void  v13(); // _ZN8S21069C53v13Ev
  virtual void  v14(); // _ZN8S21069C53v14Ev
  virtual void  v15(); // _ZN8S21069C53v15Ev
  virtual void  v16(); // _ZN8S21069C53v16Ev
  virtual void  v17(); // _ZN8S21069C53v17Ev
  ~S21069C5(); // tgen
  S21069C5(); // tgen
};
//SIG(-1 S21069C5) C1{ BC2{ v6 v7 Fp} VBC3{ VBC2 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 FD Fc:8 Fp}


void  S21069C5 ::v13(){vfunc_called(this, "_ZN8S21069C53v13Ev");}
void  S21069C5 ::v14(){vfunc_called(this, "_ZN8S21069C53v14Ev");}
void  S21069C5 ::v15(){vfunc_called(this, "_ZN8S21069C53v15Ev");}
void  S21069C5 ::v16(){vfunc_called(this, "_ZN8S21069C53v16Ev");}
void  S21069C5 ::v17(){vfunc_called(this, "_ZN8S21069C53v17Ev");}
S21069C5 ::~S21069C5(){ note_dtor("S21069C5", this);} // tgen
S21069C5 ::S21069C5(){ note_ctor("S21069C5", this);} // tgen

static void Test_S21069C5()
{
  extern Class_Descriptor cd_S21069C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S21069C5, buf);
    S21069C5 *dp, &lv = *(dp=new (buf) S21069C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S21069C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21069C5)");
    /*is_ambiguous_... S21069C5::S21069C4 */ AMB_check_base_class_offset(lv, (S21069C4*), 0, "S21069C5");
    check_base_class_offset(lv, (S21069C4*)(S21069C3*), ABISELECT(56,32), "S21069C5");
    check_base_class_offset(lv, (S21069C3*), ABISELECT(48,28), "S21069C5");
    check_field_offset(lv, s21069c5f0, ABISELECT(16,8), "S21069C5.s21069c5f0");
    set_bf_and_test(lv, s21069c5f1, ABISELECT(32,20), 0, 8, 1, "S21069C5");
    set_bf_and_test(lv, s21069c5f1, ABISELECT(32,20), 0, 8, hide_sll(1LL<<7), "S21069C5");
    check_field_offset(lv, s21069c5f2, ABISELECT(40,24), "S21069C5.s21069c5f2");
    test_class_info(&lv, &cd_S21069C5);
    dp->~S21069C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21069C5(Test_S21069C5, "S21069C5", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S21069C5C1Ev();
extern void _ZN8S21069C5D1Ev();
Name_Map name_map_S21069C5[] = {
  NSPAIR(_ZN8S21069C5C1Ev),
  NSPAIR(_ZN8S21069C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21069C4;
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
extern Class_Descriptor cd_S21069C4;
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
extern Class_Descriptor cd_S21069C3;
extern VTBL_ENTRY _ZTI8S21069C3[];
extern  VTBL_ENTRY _ZTV8S21069C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C3[];
static Base_Class bases_S21069C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21069C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21069C4,    ABISELECT(56,32), //bcp->offset
    26, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21069C3,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21069C5[];
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
extern void _ZN8S21069C53v13Ev();
extern void _ZN8S21069C53v14Ev();
extern void _ZN8S21069C53v15Ev();
extern void _ZN8S21069C53v16Ev();
extern void _ZN8S21069C53v17Ev();
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY vtc_S21069C5[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C5[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v15Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v16Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21069C5[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21069C5[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S21069C5[];
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C3__8S21069C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
};
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C4__8S21069C3__8S21069C5[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
static  VTT_ENTRY vtt_S21069C5[] = {
  {&(_ZTV8S21069C5[4]),  4,32},
  {&(_ZTV8S21069C5[20]),  20,32},
  {&(_ZTV8S21069C5[30]),  30,32},
  {&(_tg__ZTV8S21069C3__8S21069C5[3]),  3,9},
  {&(_tg__ZTV8S21069C4__8S21069C3__8S21069C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21069C5[];
extern  VTBL_ENTRY _ZTV8S21069C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C5[];
Class_Descriptor cd_S21069C5 = {  "S21069C5", // class name
  bases_S21069C5, 3,
  &(vtc_S21069C5[0]), // expected_vtbl_contents
  &(vtt_S21069C5[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S21069C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21069C5),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21069C5),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  S21069C1  : virtual S21069C2 , S21069C5 {
  void *s21069c1f0;
  virtual  ~S21069C1(); // _ZN8S21069C1D2Ev
  virtual void  v1(); // _ZN8S21069C12v1Ev
  virtual void  v2(); // _ZN8S21069C12v2Ev
  S21069C1(); // tgen
};
//SIG(1 S21069C1) C1{ VBC2{ VBC3{ VBC4{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v11 v12 Fp FC4 FC4} BC5{ BC4 VBC3 v13 v14 v15 v16 v17 FD Fc:8 Fp} vd v1 v2 Fp}


 S21069C1 ::~S21069C1(){ note_dtor("S21069C1", this);}
void  S21069C1 ::v1(){vfunc_called(this, "_ZN8S21069C12v1Ev");}
void  S21069C1 ::v2(){vfunc_called(this, "_ZN8S21069C12v2Ev");}
S21069C1 ::S21069C1(){ note_ctor("S21069C1", this);} // tgen

static void Test_S21069C1()
{
  extern Class_Descriptor cd_S21069C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S21069C1, buf);
    S21069C1 *dp, &lv = *(dp=new (buf) S21069C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S21069C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21069C1)");
    check_base_class_offset(lv, (S21069C4*)(S21069C3*), ABISELECT(104,56), "S21069C1");
    check_base_class_offset(lv, (S21069C3*)(S21069C2*), ABISELECT(56,32), "S21069C1");
    check_base_class_offset(lv, (S21069C3*)(S21069C5*), ABISELECT(56,32), "S21069C1");
    check_base_class_offset(lv, (S21069C2*), ABISELECT(56,32), "S21069C1");
    /*is_ambiguous_... S21069C5::S21069C4 */ AMB_check_base_class_offset(lv, (S21069C4*)(S21069C5*), 0, "S21069C1");
    check_base_class_offset(lv, (S21069C5*), 0, "S21069C1");
    check_field_offset(lv, s21069c1f0, ABISELECT(48,28), "S21069C1.s21069c1f0");
    test_class_info(&lv, &cd_S21069C1);
    dp->~S21069C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21069C1(Test_S21069C1, "S21069C1", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S21069C1C1Ev();
extern void _ZN8S21069C1D2Ev();
Name_Map name_map_S21069C1[] = {
  NSPAIR(_ZN8S21069C1C1Ev),
  NSPAIR(_ZN8S21069C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21069C4;
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
extern Class_Descriptor cd_S21069C3;
extern VTBL_ENTRY _ZTI8S21069C3[];
extern  VTBL_ENTRY _ZTV8S21069C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C3[];
extern Class_Descriptor cd_S21069C2;
extern VTBL_ENTRY _ZTI8S21069C2[];
extern  VTBL_ENTRY _ZTV8S21069C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C2[];
extern Class_Descriptor cd_S21069C4;
extern VTBL_ENTRY _ZTI8S21069C4[];
extern  VTBL_ENTRY _ZTV8S21069C4[];
extern Class_Descriptor cd_S21069C5;
extern VTBL_ENTRY _ZTI8S21069C5[];
extern  VTBL_ENTRY _ZTV8S21069C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C5[];
static Base_Class bases_S21069C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21069C4,    ABISELECT(104,56), //bcp->offset
    36, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21069C3,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21069C2,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21069C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21069C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21069C1[];
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
extern void _ZN8S21069C53v13Ev();
extern void _ZN8S21069C53v14Ev();
extern void _ZN8S21069C53v15Ev();
extern void _ZN8S21069C53v16Ev();
extern void _ZN8S21069C53v17Ev();
extern void _ZN8S21069C1D1Ev();
extern void _ZN8S21069C1D0Ev();
extern void _ZN8S21069C12v1Ev();
extern void _ZN8S21069C12v2Ev();
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
extern void _ZN8S21069C23v11Ev();
extern void _ZN8S21069C23v12Ev();
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY vtc_S21069C1[] = {
  ABISELECT(56,32),
  ABISELECT(104,56),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C1[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v15Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v16Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v17Ev,
  (VTBL_ENTRY)&_ZN8S21069C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21069C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21069C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21069C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21069C1[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
  (VTBL_ENTRY)&_ZN8S21069C23v11Ev,
  (VTBL_ENTRY)&_ZN8S21069C23v12Ev,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S21069C1[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S21069C1[];
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
extern void _ZN8S21069C53v13Ev();
extern void _ZN8S21069C53v14Ev();
extern void _ZN8S21069C53v15Ev();
extern void _ZN8S21069C53v16Ev();
extern void _ZN8S21069C53v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C5__8S21069C1[] = {
  ABISELECT(104,56),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C5[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v15Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v16Ev,
  (VTBL_ENTRY)&_ZN8S21069C53v17Ev,
};
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C3__8S21069C5__8S21069C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21069C5[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
};
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C4__A1__8S21069C5__8S21069C1[] = {
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S21069C5[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
extern void _ZN8S21069C23v11Ev();
extern void _ZN8S21069C23v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C2__8S21069C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C2[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
  (VTBL_ENTRY)&_ZN8S21069C23v11Ev,
  (VTBL_ENTRY)&_ZN8S21069C23v12Ev,
};
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C4__8S21069C2__8S21069C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21069C2[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
extern void _ZN8S21069C32v5Ev();
extern void _ZN8S21069C32v6Ev();
extern void _ZN8S21069C32v7Ev();
extern void _ZN8S21069C32v8Ev();
extern void _ZN8S21069C32v9Ev();
extern void _ZN8S21069C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C3__8S21069C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21069C33v10Ev,
};
extern void _ZN8S21069C42v3Ev();
extern void _ZN8S21069C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21069C4__8S21069C3__8S21069C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21069C3[0]),
  (VTBL_ENTRY)&_ZN8S21069C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21069C42v4Ev,
};
static  VTT_ENTRY vtt_S21069C1[] = {
  {&(_ZTV8S21069C1[5]),  5,42},
  {&(_tg__ZTV8S21069C5__8S21069C1[4]),  4,11},
  {&(_tg__ZTV8S21069C3__8S21069C5__8S21069C1[9]),  9,15},
  {&(_tg__ZTV8S21069C4__A1__8S21069C5__8S21069C1[4]),  4,6},
  {&(_ZTV8S21069C1[28]),  28,42},
  {&(_ZTV8S21069C1[28]),  28,42},
  {&(_ZTV8S21069C1[40]),  40,42},
  {&(_tg__ZTV8S21069C2__8S21069C1[10]),  10,18},
  {&(_tg__ZTV8S21069C2__8S21069C1[10]),  10,18},
  {&(_tg__ZTV8S21069C4__8S21069C2__8S21069C1[4]),  4,6},
  {&(_tg__ZTV8S21069C3__8S21069C1[3]),  3,9},
  {&(_tg__ZTV8S21069C4__8S21069C3__8S21069C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21069C1[];
extern  VTBL_ENTRY _ZTV8S21069C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21069C1[];
Class_Descriptor cd_S21069C1 = {  "S21069C1", // class name
  bases_S21069C1, 5,
  &(vtc_S21069C1[0]), // expected_vtbl_contents
  &(vtt_S21069C1[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S21069C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21069C1),42, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21069C1),12, //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  S7019C2  {
  int s7019c2f0[2];
  virtual  ~S7019C2(); // _ZN7S7019C2D1Ev
  virtual void  v6(); // _ZN7S7019C22v6Ev
  virtual void  v7(); // _ZN7S7019C22v7Ev
  virtual void  v8(); // _ZN7S7019C22v8Ev
  virtual void  v9(); // _ZN7S7019C22v9Ev
  virtual void  v10(); // _ZN7S7019C23v10Ev
  virtual void  v11(); // _ZN7S7019C23v11Ev
  virtual void  v12(); // _ZN7S7019C23v12Ev
  virtual void  v13(); // _ZN7S7019C23v13Ev
  virtual void  v14(); // _ZN7S7019C23v14Ev
  virtual void  v15(); // _ZN7S7019C23v15Ev
  virtual void  v16(); // _ZN7S7019C23v16Ev
  virtual void  v17(); // _ZN7S7019C23v17Ev
  virtual void  v18(); // _ZN7S7019C23v18Ev
  virtual void  v19(); // _ZN7S7019C23v19Ev
  S7019C2(); // tgen
};
//SIG(-1 S7019C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7019C2 ::~S7019C2(){ note_dtor("S7019C2", this);}
void  S7019C2 ::v6(){vfunc_called(this, "_ZN7S7019C22v6Ev");}
void  S7019C2 ::v7(){vfunc_called(this, "_ZN7S7019C22v7Ev");}
void  S7019C2 ::v8(){vfunc_called(this, "_ZN7S7019C22v8Ev");}
void  S7019C2 ::v9(){vfunc_called(this, "_ZN7S7019C22v9Ev");}
void  S7019C2 ::v10(){vfunc_called(this, "_ZN7S7019C23v10Ev");}
void  S7019C2 ::v11(){vfunc_called(this, "_ZN7S7019C23v11Ev");}
void  S7019C2 ::v12(){vfunc_called(this, "_ZN7S7019C23v12Ev");}
void  S7019C2 ::v13(){vfunc_called(this, "_ZN7S7019C23v13Ev");}
void  S7019C2 ::v14(){vfunc_called(this, "_ZN7S7019C23v14Ev");}
void  S7019C2 ::v15(){vfunc_called(this, "_ZN7S7019C23v15Ev");}
void  S7019C2 ::v16(){vfunc_called(this, "_ZN7S7019C23v16Ev");}
void  S7019C2 ::v17(){vfunc_called(this, "_ZN7S7019C23v17Ev");}
void  S7019C2 ::v18(){vfunc_called(this, "_ZN7S7019C23v18Ev");}
void  S7019C2 ::v19(){vfunc_called(this, "_ZN7S7019C23v19Ev");}
S7019C2 ::S7019C2(){ note_ctor("S7019C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7019C2C1Ev();
extern void _ZN7S7019C2D1Ev();
Name_Map name_map_S7019C2[] = {
  NSPAIR(_ZN7S7019C2C1Ev),
  NSPAIR(_ZN7S7019C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7019C2[];
extern void _ZN7S7019C2D1Ev();
extern void _ZN7S7019C2D0Ev();
extern void _ZN7S7019C22v6Ev();
extern void _ZN7S7019C22v7Ev();
extern void _ZN7S7019C22v8Ev();
extern void _ZN7S7019C22v9Ev();
extern void _ZN7S7019C23v10Ev();
extern void _ZN7S7019C23v11Ev();
extern void _ZN7S7019C23v12Ev();
extern void _ZN7S7019C23v13Ev();
extern void _ZN7S7019C23v14Ev();
extern void _ZN7S7019C23v15Ev();
extern void _ZN7S7019C23v16Ev();
extern void _ZN7S7019C23v17Ev();
extern void _ZN7S7019C23v18Ev();
extern void _ZN7S7019C23v19Ev();
static  VTBL_ENTRY vtc_S7019C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7019C2[0]),
  (VTBL_ENTRY)&_ZN7S7019C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7019C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S7019C2[];
extern  VTBL_ENTRY _ZTV7S7019C2[];
Class_Descriptor cd_S7019C2 = {  "S7019C2", // class name
  0,0,//no base classes
  &(vtc_S7019C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7019C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7019C2),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  S7019C1  : S7019C2 {
  ::S7097C3 s7019c1f0;
  void *s7019c1f1[7];
  ::S3620C13_nt s7019c1f2;
  virtual  ~S7019C1(); // _ZN7S7019C1D1Ev
  virtual void  v1(); // _ZN7S7019C12v1Ev
  virtual void  v2(); // _ZN7S7019C12v2Ev
  virtual void  v3(); // _ZN7S7019C12v3Ev
  virtual void  v4(); // _ZN7S7019C12v4Ev
  virtual void  v5(); // _ZN7S7019C12v5Ev
  S7019C1(); // tgen
};
//SIG(1 S7019C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi[2]} vd v1 v2 v3 v4 v5 FC3{ m Fp FL Fi} Fp[7] FC4{ m FL[4]}}


 S7019C1 ::~S7019C1(){ note_dtor("S7019C1", this);}
void  S7019C1 ::v1(){vfunc_called(this, "_ZN7S7019C12v1Ev");}
void  S7019C1 ::v2(){vfunc_called(this, "_ZN7S7019C12v2Ev");}
void  S7019C1 ::v3(){vfunc_called(this, "_ZN7S7019C12v3Ev");}
void  S7019C1 ::v4(){vfunc_called(this, "_ZN7S7019C12v4Ev");}
void  S7019C1 ::v5(){vfunc_called(this, "_ZN7S7019C12v5Ev");}
S7019C1 ::S7019C1(){ note_ctor("S7019C1", this);} // tgen

static void Test_S7019C1()
{
  extern Class_Descriptor cd_S7019C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S7019C1, buf);
    S7019C1 *dp, &lv = *(dp=new (buf) S7019C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S7019C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7019C1)");
    check_base_class_offset(lv, (S7019C2*), 0, "S7019C1");
    check_field_offset(lv, s7019c1f0, ABISELECT(16,12), "S7019C1.s7019c1f0");
    check_field_offset(lv, s7019c1f1, ABISELECT(40,28), "S7019C1.s7019c1f1");
    check_field_offset(lv, s7019c1f2, ABISELECT(96,56), "S7019C1.s7019c1f2");
    test_class_info(&lv, &cd_S7019C1);
    dp->~S7019C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7019C1(Test_S7019C1, "S7019C1", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN7S7019C1C1Ev();
extern void _ZN7S7019C1D1Ev();
Name_Map name_map_S7019C1[] = {
  NSPAIR(_ZN7S7019C1C1Ev),
  NSPAIR(_ZN7S7019C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7019C2;
extern VTBL_ENTRY _ZTI7S7019C2[];
extern  VTBL_ENTRY _ZTV7S7019C2[];
static Base_Class bases_S7019C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7019C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7019C1[];
extern void _ZN7S7019C1D1Ev();
extern void _ZN7S7019C1D0Ev();
extern void _ZN7S7019C22v6Ev();
extern void _ZN7S7019C22v7Ev();
extern void _ZN7S7019C22v8Ev();
extern void _ZN7S7019C22v9Ev();
extern void _ZN7S7019C23v10Ev();
extern void _ZN7S7019C23v11Ev();
extern void _ZN7S7019C23v12Ev();
extern void _ZN7S7019C23v13Ev();
extern void _ZN7S7019C23v14Ev();
extern void _ZN7S7019C23v15Ev();
extern void _ZN7S7019C23v16Ev();
extern void _ZN7S7019C23v17Ev();
extern void _ZN7S7019C23v18Ev();
extern void _ZN7S7019C23v19Ev();
extern void _ZN7S7019C12v1Ev();
extern void _ZN7S7019C12v2Ev();
extern void _ZN7S7019C12v3Ev();
extern void _ZN7S7019C12v4Ev();
extern void _ZN7S7019C12v5Ev();
static  VTBL_ENTRY vtc_S7019C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7019C1[0]),
  (VTBL_ENTRY)&_ZN7S7019C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7019C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7019C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7019C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7019C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7019C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7019C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7019C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7019C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7019C1[];
extern  VTBL_ENTRY _ZTV7S7019C1[];
Class_Descriptor cd_S7019C1 = {  "S7019C1", // class name
  bases_S7019C1, 1,
  &(vtc_S7019C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI7S7019C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7019C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1147C3  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s1147c3f0;
  int s1147c3f1;
  void *s1147c3f2;
  char s1147c3f3;
  int s1147c3f4;
  virtual  ~S1147C3(); // _ZN7S1147C3D1Ev
  virtual void  v4(); // _ZN7S1147C32v4Ev
  virtual void  v5(); // _ZN7S1147C32v5Ev
  virtual void  v6(); // _ZN7S1147C32v6Ev
  virtual void  v7(); // _ZN7S1147C32v7Ev
  S1147C3(); // tgen
};
//SIG(-1 S1147C3) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S1147C3 ::~S1147C3(){ note_dtor("S1147C3", this);}
void  S1147C3 ::v4(){vfunc_called(this, "_ZN7S1147C32v4Ev");}
void  S1147C3 ::v5(){vfunc_called(this, "_ZN7S1147C32v5Ev");}
void  S1147C3 ::v6(){vfunc_called(this, "_ZN7S1147C32v6Ev");}
void  S1147C3 ::v7(){vfunc_called(this, "_ZN7S1147C32v7Ev");}
S1147C3 ::S1147C3(){ note_ctor("S1147C3", this);} // tgen

static void Test_S1147C3()
{
  extern Class_Descriptor cd_S1147C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S1147C3, buf);
    S1147C3 *dp, &lv = *(dp=new (buf) S1147C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S1147C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1147C3)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S1147C3");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S1147C3");
    check_field_offset(lv, s1147c3f0, ABISELECT(24,12), "S1147C3.s1147c3f0");
    check_field_offset(lv, s1147c3f1, ABISELECT(48,28), "S1147C3.s1147c3f1");
    check_field_offset(lv, s1147c3f2, ABISELECT(56,32), "S1147C3.s1147c3f2");
    check_field_offset(lv, s1147c3f3, ABISELECT(64,36), "S1147C3.s1147c3f3");
    check_field_offset(lv, s1147c3f4, ABISELECT(68,40), "S1147C3.s1147c3f4");
    test_class_info(&lv, &cd_S1147C3);
    dp->~S1147C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1147C3(Test_S1147C3, "S1147C3", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S1147C3C1Ev();
extern void _ZN7S1147C3D1Ev();
Name_Map name_map_S1147C3[] = {
  NSPAIR(_ZN7S1147C3C1Ev),
  NSPAIR(_ZN7S1147C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S1147C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1147C3[];
extern void _ZN7S1147C3D1Ev();
extern void _ZN7S1147C3D0Ev();
extern void _ZN7S1147C32v4Ev();
extern void _ZN7S1147C32v5Ev();
extern void _ZN7S1147C32v6Ev();
extern void _ZN7S1147C32v7Ev();
static  VTBL_ENTRY vtc_S1147C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1147C3[0]),
  (VTBL_ENTRY)&_ZN7S1147C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1147C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S1147C3[];
extern  VTBL_ENTRY _ZTV7S1147C3[];
Class_Descriptor cd_S1147C3 = {  "S1147C3", // class name
  bases_S1147C3, 2,
  &(vtc_S1147C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S1147C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1147C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1147C2  : S1147C3 {
  char s1147c2f0;
  virtual  ~S1147C2(); // _ZN7S1147C2D1Ev
  virtual void  v8(); // _ZN7S1147C22v8Ev
  virtual void  v9(); // _ZN7S1147C22v9Ev
  virtual void  v10(); // _ZN7S1147C23v10Ev
  virtual void  v11(); // _ZN7S1147C23v11Ev
  S1147C2(); // tgen
};
//SIG(-1 S1147C2) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v5 v6 v7 v8 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd v1 v2 v3 v4 Fc}


 S1147C2 ::~S1147C2(){ note_dtor("S1147C2", this);}
void  S1147C2 ::v8(){vfunc_called(this, "_ZN7S1147C22v8Ev");}
void  S1147C2 ::v9(){vfunc_called(this, "_ZN7S1147C22v9Ev");}
void  S1147C2 ::v10(){vfunc_called(this, "_ZN7S1147C23v10Ev");}
void  S1147C2 ::v11(){vfunc_called(this, "_ZN7S1147C23v11Ev");}
S1147C2 ::S1147C2(){ note_ctor("S1147C2", this);} // tgen

static void Test_S1147C2()
{
  extern Class_Descriptor cd_S1147C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S1147C2, buf);
    S1147C2 *dp, &lv = *(dp=new (buf) S1147C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S1147C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1147C2)");
    check_base_class_offset(lv, (S19894C6_nt*)(S1147C3*), ABISELECT(8,4), "S1147C2");
    check_base_class_offset(lv, (S5757C19_nt*)(S1147C3*), ABISELECT(16,8), "S1147C2");
    check_base_class_offset(lv, (S1147C3*), 0, "S1147C2");
    check_field_offset(lv, s1147c2f0, ABISELECT(72,44), "S1147C2.s1147c2f0");
    test_class_info(&lv, &cd_S1147C2);
    dp->~S1147C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1147C2(Test_S1147C2, "S1147C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S1147C2C1Ev();
extern void _ZN7S1147C2D1Ev();
Name_Map name_map_S1147C2[] = {
  NSPAIR(_ZN7S1147C2C1Ev),
  NSPAIR(_ZN7S1147C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S1147C3;
extern VTBL_ENTRY _ZTI7S1147C3[];
extern  VTBL_ENTRY _ZTV7S1147C3[];
static Base_Class bases_S1147C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1147C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1147C2[];
extern void _ZN7S1147C2D1Ev();
extern void _ZN7S1147C2D0Ev();
extern void _ZN7S1147C32v4Ev();
extern void _ZN7S1147C32v5Ev();
extern void _ZN7S1147C32v6Ev();
extern void _ZN7S1147C32v7Ev();
extern void _ZN7S1147C22v8Ev();
extern void _ZN7S1147C22v9Ev();
extern void _ZN7S1147C23v10Ev();
extern void _ZN7S1147C23v11Ev();
static  VTBL_ENTRY vtc_S1147C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1147C2[0]),
  (VTBL_ENTRY)&_ZN7S1147C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1147C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1147C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1147C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1147C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1147C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S1147C2[];
extern  VTBL_ENTRY _ZTV7S1147C2[];
Class_Descriptor cd_S1147C2 = {  "S1147C2", // class name
  bases_S1147C2, 3,
  &(vtc_S1147C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S1147C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1147C2),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  S1147C1  : S1147C2 {
  void *s1147c1f0;
  virtual  ~S1147C1(); // _ZN7S1147C1D1Ev
  virtual void  v1(); // _ZN7S1147C12v1Ev
  virtual void  v2(); // _ZN7S1147C12v2Ev
  virtual void  v3(); // _ZN7S1147C12v3Ev
  S1147C1(); // tgen
};
//SIG(1 S1147C1) C1{ BC2{ BC3{ BC4{ m Fp} BC5{ m Fp} vd v4 v5 v6 v7 FC6{ m FC7{ m Fp Fi FC8{ m}} Fi} Fi Fp Fc Fi} vd v8 v9 v10 v11 Fc} vd v1 v2 v3 Fp}


 S1147C1 ::~S1147C1(){ note_dtor("S1147C1", this);}
void  S1147C1 ::v1(){vfunc_called(this, "_ZN7S1147C12v1Ev");}
void  S1147C1 ::v2(){vfunc_called(this, "_ZN7S1147C12v2Ev");}
void  S1147C1 ::v3(){vfunc_called(this, "_ZN7S1147C12v3Ev");}
S1147C1 ::S1147C1(){ note_ctor("S1147C1", this);} // tgen

static void Test_S1147C1()
{
  extern Class_Descriptor cd_S1147C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S1147C1, buf);
    S1147C1 *dp, &lv = *(dp=new (buf) S1147C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S1147C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1147C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S1147C3*)(S1147C2*), ABISELECT(8,4), "S1147C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S1147C3*)(S1147C2*), ABISELECT(16,8), "S1147C1");
    check_base_class_offset(lv, (S1147C3*)(S1147C2*), 0, "S1147C1");
    check_base_class_offset(lv, (S1147C2*), 0, "S1147C1");
    check_field_offset(lv, s1147c1f0, ABISELECT(80,48), "S1147C1.s1147c1f0");
    test_class_info(&lv, &cd_S1147C1);
    dp->~S1147C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1147C1(Test_S1147C1, "S1147C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S1147C1C1Ev();
extern void _ZN7S1147C1D1Ev();
Name_Map name_map_S1147C1[] = {
  NSPAIR(_ZN7S1147C1C1Ev),
  NSPAIR(_ZN7S1147C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S1147C3;
extern VTBL_ENTRY _ZTI7S1147C3[];
extern  VTBL_ENTRY _ZTV7S1147C3[];
extern Class_Descriptor cd_S1147C2;
extern VTBL_ENTRY _ZTI7S1147C2[];
extern  VTBL_ENTRY _ZTV7S1147C2[];
static Base_Class bases_S1147C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1147C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1147C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1147C1[];
extern void _ZN7S1147C1D1Ev();
extern void _ZN7S1147C1D0Ev();
extern void _ZN7S1147C32v4Ev();
extern void _ZN7S1147C32v5Ev();
extern void _ZN7S1147C32v6Ev();
extern void _ZN7S1147C32v7Ev();
extern void _ZN7S1147C22v8Ev();
extern void _ZN7S1147C22v9Ev();
extern void _ZN7S1147C23v10Ev();
extern void _ZN7S1147C23v11Ev();
extern void _ZN7S1147C12v1Ev();
extern void _ZN7S1147C12v2Ev();
extern void _ZN7S1147C12v3Ev();
static  VTBL_ENTRY vtc_S1147C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1147C1[0]),
  (VTBL_ENTRY)&_ZN7S1147C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1147C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1147C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1147C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1147C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1147C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1147C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1147C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1147C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1147C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1147C1[];
extern  VTBL_ENTRY _ZTV7S1147C1[];
Class_Descriptor cd_S1147C1 = {  "S1147C1", // class name
  bases_S1147C1, 4,
  &(vtc_S1147C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S1147C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1147C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S19583C7C1Ev();
extern void _ZN8S19583C7D1Ev();
Name_Map name_map_S19583C7[] = {
  NSPAIR(_ZN8S19583C7C1Ev),
  NSPAIR(_ZN8S19583C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19583C7[];
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY vtc_S19583C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C7[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
Class_Descriptor cd_S19583C7 = {  "S19583C7", // class name
  0,0,//no base classes
  &(vtc_S19583C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19583C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19583C7),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  S19583C5  : virtual S19894C34 , virtual S19583C7 {
  ::S19583C7 s19583c5f0;
  ~S19583C5(); // tgen
  S19583C5(); // tgen
};
//SIG(-1 S19583C5) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S19583C5()
{
  extern Class_Descriptor cd_S19583C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19583C5, buf);
    S19583C5 *dp, &lv = *(dp=new (buf) S19583C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19583C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19583C5");
    check_base_class_offset(lv, (S19583C7*), 0, "S19583C5");
    check_field_offset(lv, s19583c5f0, ABISELECT(8,4), "S19583C5.s19583c5f0");
    test_class_info(&lv, &cd_S19583C5);
    dp->~S19583C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C5(Test_S19583C5, "S19583C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19583C5C1Ev();
extern void _ZN8S19583C5D1Ev();
Name_Map name_map_S19583C5[] = {
  NSPAIR(_ZN8S19583C5C1Ev),
  NSPAIR(_ZN8S19583C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
static Base_Class bases_S19583C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19583C7,    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 _ZTI8S19583C5[];
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY vtc_S19583C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19583C5[];
static  VTT_ENTRY vtt_S19583C5[] = {
  {&(_ZTV8S19583C5[5]),  5,6},
  {&(_ZTV8S19583C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
Class_Descriptor cd_S19583C5 = {  "S19583C5", // class name
  bases_S19583C5, 2,
  &(vtc_S19583C5[0]), // expected_vtbl_contents
  &(vtt_S19583C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19583C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19583C5),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19583C5),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  S19583C8  : S19583C7 , S19894C6_nt , virtual S19583C5 {
  virtual void  v2(); // _ZN8S19583C82v2Ev
  ~S19583C8(); // tgen
  S19583C8(); // tgen
};
//SIG(-1 S19583C8) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S19583C8()
{
  extern Class_Descriptor cd_S19583C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19583C8, buf);
    S19583C8 *dp, &lv = *(dp=new (buf) S19583C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19583C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C8)");
    /*is_ambiguous_... S19583C8::S19583C7 */ AMB_check_base_class_offset(lv, (S19583C7*), 0, "S19583C8");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19583C8");
    check_base_class_offset(lv, (S19894C34*)(S19583C5*), 0, "S19583C8");
    check_base_class_offset(lv, (S19583C7*)(S19583C5*), ABISELECT(16,8), "S19583C8");
    check_base_class_offset(lv, (S19583C5*), ABISELECT(16,8), "S19583C8");
    test_class_info(&lv, &cd_S19583C8);
    dp->~S19583C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C8(Test_S19583C8, "S19583C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19583C8C1Ev();
extern void _ZN8S19583C8D1Ev();
Name_Map name_map_S19583C8[] = {
  NSPAIR(_ZN8S19583C8C1Ev),
  NSPAIR(_ZN8S19583C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
static Base_Class bases_S19583C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19583C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19583C7,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19583C5,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S19583C8[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY vtc_S19583C8[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S19583C8[];
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C8[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTT_ENTRY vtt_S19583C8[] = {
  {&(_ZTV8S19583C8[5]),  5,13},
  {&(_ZTV8S19583C8[12]),  12,13},
  {&(_ZTV8S19583C8[12]),  12,13},
  {&(_tg__ZTV8S19583C5__8S19583C8[5]),  5,6},
  {&(_tg__ZTV8S19583C5__8S19583C8[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19583C8[];
extern  VTBL_ENTRY _ZTV8S19583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C8[];
Class_Descriptor cd_S19583C8 = {  "S19583C8", // class name
  bases_S19583C8, 5,
  &(vtc_S19583C8[0]), // expected_vtbl_contents
  &(vtt_S19583C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19583C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19583C8),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19583C8),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19583C4  : virtual S19583C5 , virtual S19583C8 {
  ~S19583C4(); // tgen
  S19583C4(); // tgen
};
//SIG(-1 S19583C4) C1{ VBC2{ VBC3{ m} VBC4{ v1} FC4} VBC5{ BC4 BC6{ m Fp} VBC2 v2}}


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

static void Test_S19583C4()
{
  extern Class_Descriptor cd_S19583C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19583C4, buf);
    S19583C4 *dp, &lv = *(dp=new (buf) S19583C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19583C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C4)");
    check_base_class_offset(lv, (S19894C34*)(S19583C5*), 0, "S19583C4");
    check_base_class_offset(lv, (S19583C7*)(S19583C5*), 0, "S19583C4");
    check_base_class_offset(lv, (S19583C5*), ABISELECT(8,4), "S19583C4");
    check_base_class_offset(lv, (S19583C5*)(S19583C8*), ABISELECT(8,4), "S19583C4");
    /*is_ambiguous_... S19583C8::S19583C7 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C8*), ABISELECT(24,12), "S19583C4");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C8*), ABISELECT(32,16), "S19583C4");
    check_base_class_offset(lv, (S19583C8*), ABISELECT(24,12), "S19583C4");
    test_class_info(&lv, &cd_S19583C4);
    dp->~S19583C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C4(Test_S19583C4, "S19583C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19583C4C1Ev();
extern void _ZN8S19583C4D1Ev();
Name_Map name_map_S19583C4[] = {
  NSPAIR(_ZN8S19583C4C1Ev),
  NSPAIR(_ZN8S19583C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C8;
extern VTBL_ENTRY _ZTI8S19583C8[];
extern  VTBL_ENTRY _ZTV8S19583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C8[];
static Base_Class bases_S19583C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19583C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19583C5,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19583C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19583C8,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19583C4[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY vtc_S19583C4[] = {
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19583C4[];
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C5__8S19583C4[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C8__8S19583C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__A1__8S19583C8__8S19583C4[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTT_ENTRY vtt_S19583C4[] = {
  {&(_ZTV8S19583C4[7]),  7,23},
  {&(_ZTV8S19583C4[13]),  13,23},
  {&(_ZTV8S19583C4[7]),  7,23},
  {&(_ZTV8S19583C4[21]),  21,23},
  {&(_tg__ZTV8S19583C5__8S19583C4[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C5__8S19583C4[3]),  3,4},
  {&(_tg__ZTV8S19583C8__8S19583C4[5]),  5,7},
  {&(_tg__ZTV8S19583C5__8S19583C8__8S19583C4[5]),  5,6},
  {&(_tg__ZTV8S19583C7__A1__8S19583C8__8S19583C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19583C4[];
extern  VTBL_ENTRY _ZTV8S19583C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C4[];
Class_Descriptor cd_S19583C4 = {  "S19583C4", // class name
  bases_S19583C4, 6,
  &(vtc_S19583C4[0]), // expected_vtbl_contents
  &(vtt_S19583C4[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19583C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19583C4),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19583C4),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19583C11  : virtual S19894C34 , virtual S19894C6_nt {
  ~S19583C11(); // tgen
  S19583C11(); // tgen
};
//SIG(-1 S19583C11) C1{ VBC2{ m} VBC3{ m Fp}}


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

static void Test_S19583C11()
{
  extern Class_Descriptor cd_S19583C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19583C11, buf);
    S19583C11 *dp, &lv = *(dp=new (buf) S19583C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19583C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C11)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19583C11");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19583C11");
    test_class_info(&lv, &cd_S19583C11);
    dp->~S19583C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C11(Test_S19583C11, "S19583C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19583C11C1Ev();
extern void _ZN9S19583C11D1Ev();
Name_Map name_map_S19583C11[] = {
  NSPAIR(_ZN9S19583C11C1Ev),
  NSPAIR(_ZN9S19583C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S19583C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19583C11[];
static  VTBL_ENTRY vtc_S19583C11[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19583C11[0]),
};
extern VTBL_ENTRY _ZTV9S19583C11[];
static  VTT_ENTRY vtt_S19583C11[] = {
  {&(_ZTV9S19583C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19583C11[];
extern  VTBL_ENTRY _ZTV9S19583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19583C11[];
Class_Descriptor cd_S19583C11 = {  "S19583C11", // class name
  bases_S19583C11, 2,
  &(vtc_S19583C11[0]), // expected_vtbl_contents
  &(vtt_S19583C11[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19583C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19583C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19583C11),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  S19583C3  : virtual S19583C4 , S19583C5 , S19894C34 , S19894C17_nt , S19583C11 {
  virtual  ~S19583C3(); // _ZN8S19583C3D2Ev
  S19583C3(); // tgen
};
//SIG(-1 S19583C3) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ v1} FC5} VBC6{ BC5 BC7{ m Fp} VBC3 v2}} BC3 BC4 BC8{ m} BC9{ VBC4 VBC7} vd}


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

static void Test_S19583C3()
{
  extern Class_Descriptor cd_S19583C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19583C3, buf);
    S19583C3 *dp, &lv = *(dp=new (buf) S19583C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19583C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C3)");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C5*), ABISELECT(48,24), "S19583C3");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C5*), ABISELECT(48,24), "S19583C3");
    check_base_class_offset(lv, (S19894C34*)(S19583C11*), ABISELECT(48,24), "S19583C3");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C5*), ABISELECT(24,12), "S19583C3");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C5*), ABISELECT(24,12), "S19583C3");
    check_base_class_offset(lv, (S19583C5*)(S19583C4*), ABISELECT(32,16), "S19583C3");
    check_base_class_offset(lv, (S19583C5*)(S19583C8*), ABISELECT(32,16), "S19583C3");
    /*is_ambiguous_... S19583C8::S19583C7 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C8*), ABISELECT(48,24), "S19583C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C8*), ABISELECT(56,28), "S19583C3");
    check_base_class_offset(lv, (S19583C8*)(S19583C4*), ABISELECT(48,24), "S19583C3");
    check_base_class_offset(lv, (S19583C4*), ABISELECT(24,12), "S19583C3");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C5*), 0, "S19583C3");
    /*is_ambiguous_... S19583C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19583C3");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S19583C3");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C11*), ABISELECT(64,32), "S19583C3");
    check_base_class_offset(lv, (S19583C11*), ABISELECT(16,8), "S19583C3");
    test_class_info(&lv, &cd_S19583C3);
    dp->~S19583C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C3(Test_S19583C3, "S19583C3", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S19583C3C1Ev();
extern void _ZN8S19583C3D2Ev();
Name_Map name_map_S19583C3[] = {
  NSPAIR(_ZN8S19583C3C1Ev),
  NSPAIR(_ZN8S19583C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C8;
extern VTBL_ENTRY _ZTI8S19583C8[];
extern  VTBL_ENTRY _ZTV8S19583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C8[];
extern Class_Descriptor cd_S19583C4;
extern VTBL_ENTRY _ZTI8S19583C4[];
extern  VTBL_ENTRY _ZTV8S19583C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C4[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C11;
extern VTBL_ENTRY _ZTI9S19583C11[];
extern  VTBL_ENTRY _ZTV9S19583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19583C11[];
static Base_Class bases_S19583C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19583C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19583C5,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19583C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19583C8,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19583C4,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19583C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19583C11,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI8S19583C3[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C3D1Ev();
extern void _ZN8S19583C3D0Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY vtc_S19583C3[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19583C3D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S19583C3[];
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__A__8S19583C3[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C5__A__8S19583C3[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19583C11__8S19583C3[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19583C11[0]),
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C4__8S19583C3[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C4__8S19583C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C4__8S19583C3[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C5__8S19583C3[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C3[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C8__8S19583C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__A1__8S19583C8__8S19583C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTT_ENTRY vtt_S19583C3[] = {
  {&(_ZTV8S19583C3[9]),  9,39},
  {&(_tg__ZTV8S19583C5__A__8S19583C3[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C5__A__8S19583C3[3]),  3,4},
  {&(_tg__ZTV9S19583C11__8S19583C3[4]),  4,4},
  {&(_ZTV8S19583C3[23]),  23,39},
  {&(_ZTV8S19583C3[29]),  29,39},
  {&(_ZTV8S19583C3[23]),  23,39},
  {&(_ZTV8S19583C3[37]),  37,39},
  {&(_ZTV8S19583C3[16]),  16,39},
  {&(_tg__ZTV8S19583C4__8S19583C3[7]),  7,8},
  {&(_tg__ZTV8S19583C5__8S19583C4__8S19583C3[5]),  5,6},
  {&(_tg__ZTV8S19583C4__8S19583C3[7]),  7,8},
  {&(_tg__ZTV8S19583C8__8S19583C4__8S19583C3[7]),  7,9},
  {&(_tg__ZTV8S19583C5__8S19583C3[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C5__8S19583C3[3]),  3,4},
  {&(_tg__ZTV8S19583C8__8S19583C3[5]),  5,7},
  {&(_tg__ZTV8S19583C5__8S19583C8__8S19583C3[5]),  5,6},
  {&(_tg__ZTV8S19583C7__A1__8S19583C8__8S19583C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19583C3[];
extern  VTBL_ENTRY _ZTV8S19583C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C3[];
Class_Descriptor cd_S19583C3 = {  "S19583C3", // class name
  bases_S19583C3, 12,
  &(vtc_S19583C3[0]), // expected_vtbl_contents
  &(vtt_S19583C3[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S19583C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19583C3),39, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19583C3),18, //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  S19583C2  : S19583C3 , virtual S21216C26_nt {
  virtual  ~S19583C2(); // _ZN8S19583C2D2Ev
  S19583C2(); // tgen
};
//SIG(-1 S19583C2) C1{ BC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC6 BC8{ m Fp} VBC4 v2}} BC4 BC5 BC9{ m} BC10{ VBC5 VBC8} vd} VBC11{ vd m} vd}


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

static void Test_S19583C2()
{
  extern Class_Descriptor cd_S19583C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19583C2, buf);
    S19583C2 *dp, &lv = *(dp=new (buf) S19583C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19583C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C2)");
    /*is_ambiguous_... S19583C2::S19583C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C5*), ABISELECT(48,24), "S19583C2");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C5*)(S19583C3*), ABISELECT(48,24), "S19583C2");
    check_base_class_offset(lv, (S19894C34*)(S19583C11*)(S19583C3*), ABISELECT(48,24), "S19583C2");
    /*is_ambiguous_... S19583C2::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C5*), ABISELECT(24,12), "S19583C2");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C5*)(S19583C3*), ABISELECT(24,12), "S19583C2");
    check_base_class_offset(lv, (S19583C5*)(S19583C4*), ABISELECT(32,16), "S19583C2");
    check_base_class_offset(lv, (S19583C5*)(S19583C8*), ABISELECT(32,16), "S19583C2");
    /*is_ambiguous_... S19583C8::S19583C7 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C8*), ABISELECT(48,24), "S19583C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C8*), ABISELECT(56,28), "S19583C2");
    check_base_class_offset(lv, (S19583C8*)(S19583C4*), ABISELECT(48,24), "S19583C2");
    check_base_class_offset(lv, (S19583C4*)(S19583C3*), ABISELECT(24,12), "S19583C2");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C5*)(S19583C3*), 0, "S19583C2");
    /*is_ambiguous_... S19583C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C3*), 0, "S19583C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S19583C3*), 0, "S19583C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C11*)(S19583C3*), ABISELECT(64,32), "S19583C2");
    check_base_class_offset(lv, (S19583C11*)(S19583C3*), ABISELECT(16,8), "S19583C2");
    check_base_class_offset(lv, (S19583C3*), 0, "S19583C2");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(72,36), "S19583C2");
    test_class_info(&lv, &cd_S19583C2);
    dp->~S19583C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C2(Test_S19583C2, "S19583C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19583C2C1Ev();
extern void _ZN8S19583C2D2Ev();
Name_Map name_map_S19583C2[] = {
  NSPAIR(_ZN8S19583C2C1Ev),
  NSPAIR(_ZN8S19583C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C8;
extern VTBL_ENTRY _ZTI8S19583C8[];
extern  VTBL_ENTRY _ZTV8S19583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C8[];
extern Class_Descriptor cd_S19583C4;
extern VTBL_ENTRY _ZTI8S19583C4[];
extern  VTBL_ENTRY _ZTV8S19583C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C4[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C11;
extern VTBL_ENTRY _ZTI9S19583C11[];
extern  VTBL_ENTRY _ZTV9S19583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19583C11[];
extern Class_Descriptor cd_S19583C3;
extern VTBL_ENTRY _ZTI8S19583C3[];
extern  VTBL_ENTRY _ZTV8S19583C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19583C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19583C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19583C5,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19583C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19583C8,    ABISELECT(48,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19583C4,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19583C5,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19583C11,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19583C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(72,36), //bcp->offset
    40, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19583C2[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C2D1Ev();
extern void _ZN8S19583C2D0Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19583C2D1Ev,_ZTv0_n12_N8S19583C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S19583C2D1Ev,_ZThn36_N8S19583C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19583C2D0Ev,_ZTv0_n12_N8S19583C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S19583C2D0Ev,_ZThn36_N8S19583C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19583C2[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19583C2D0Ev,
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19583C2D1Ev,_ZTv0_n12_N8S19583C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19583C2D0Ev,_ZTv0_n12_N8S19583C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19583C2[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C3D1Ev();
extern void _ZN8S19583C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C3__8S19583C2[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19583C3D0Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C58S19583C3__A1__8S19583C2[] = {
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C58S19583C3__A1__8S19583C2[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19583C118S19583C3__8S19583C2[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19583C11[0]),
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C4__8S19583C3__8S19583C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C3__8S19583C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C3__8S19583C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19583C11__8S19583C3__8S19583C2[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C4__8S19583C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C4__8S19583C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C4__8S19583C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C5__8S19583C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C2[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C8__8S19583C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__A1__8S19583C8__8S19583C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTT_ENTRY vtt_S19583C2[] = {
  {&(_ZTV8S19583C2[10]),  10,45},
  {&(_tg__ZTV8S19583C3__8S19583C2[9]),  9,12},
  {&(_tg__ZTV8S19583C58S19583C3__A1__8S19583C2[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C58S19583C3__A1__8S19583C2[3]),  3,4},
  {&(_tg__ZTV9S19583C118S19583C3__8S19583C2[4]),  4,4},
  {&(_tg__ZTV8S19583C4__8S19583C3__8S19583C2[7]),  7,8},
  {&(_tg__ZTV8S19583C5__8S19583C3__8S19583C2[5]),  5,6},
  {&(_tg__ZTV8S19583C4__8S19583C3__8S19583C2[7]),  7,8},
  {&(_tg__ZTV8S19583C8__8S19583C3__8S19583C2[7]),  7,9},
  {&(_tg__ZTV9S19583C11__8S19583C3__8S19583C2[4]),  4,4},
  {&(_ZTV8S19583C2[24]),  24,45},
  {&(_ZTV8S19583C2[30]),  30,45},
  {&(_ZTV8S19583C2[24]),  24,45},
  {&(_ZTV8S19583C2[38]),  38,45},
  {&(_ZTV8S19583C2[17]),  17,45},
  {&(_ZTV8S19583C2[43]),  43,45},
  {&(_tg__ZTV8S19583C4__8S19583C2[7]),  7,8},
  {&(_tg__ZTV8S19583C5__8S19583C4__8S19583C2[5]),  5,6},
  {&(_tg__ZTV8S19583C4__8S19583C2[7]),  7,8},
  {&(_tg__ZTV8S19583C8__8S19583C4__8S19583C2[7]),  7,9},
  {&(_tg__ZTV8S19583C5__8S19583C2[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C5__8S19583C2[3]),  3,4},
  {&(_tg__ZTV8S19583C8__8S19583C2[5]),  5,7},
  {&(_tg__ZTV8S19583C5__8S19583C8__8S19583C2[5]),  5,6},
  {&(_tg__ZTV8S19583C7__A1__8S19583C8__8S19583C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19583C2[];
extern  VTBL_ENTRY _ZTV8S19583C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C2[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19583C2D0Ev,_ZTv0_n12_N8S19583C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19583C2D0Ev,_ZThn36_N8S19583C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19583C2D1Ev,_ZTv0_n12_N8S19583C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19583C2D1Ev,_ZThn36_N8S19583C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19583C2 = {  "S19583C2", // class name
  bases_S19583C2, 14,
  &(vtc_S19583C2[0]), // expected_vtbl_contents
  &(vtt_S19583C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19583C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19583C2),45, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19583C2),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19583C1  : virtual S19583C2 {
  ~S19583C1(); // tgen
  S19583C1(); // tgen
};
//SIG(1 S19583C1) C1{ VBC2{ BC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC7 BC9{ m Fp} VBC5 v2}} BC5 BC6 BC10{ m} BC11{ VBC6 VBC9} vd} VBC12{ vd m} vd}}


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

static void Test_S19583C1()
{
  extern Class_Descriptor cd_S19583C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19583C1, buf);
    S19583C1 *dp, &lv = *(dp=new (buf) S19583C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19583C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19583C1)");
    /*is_ambiguous_... S19583C1::S19583C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C5*), 0, "S19583C1");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C5*)(S19583C3*)(S19583C2*), 0, "S19583C1");
    check_base_class_offset(lv, (S19894C34*)(S19583C11*)(S19583C3*)(S19583C2*), 0, "S19583C1");
    /*is_ambiguous_... S19583C1::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C5*), 0, "S19583C1");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C5*)(S19583C3*)(S19583C2*), 0, "S19583C1");
    check_base_class_offset(lv, (S19583C5*)(S19583C4*), ABISELECT(32,16), "S19583C1");
    check_base_class_offset(lv, (S19583C5*)(S19583C8*), ABISELECT(32,16), "S19583C1");
    /*is_ambiguous_... S19583C8::S19583C7 */ AMB_check_base_class_offset(lv, (S19583C7*)(S19583C8*), ABISELECT(48,24), "S19583C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C8*), ABISELECT(56,28), "S19583C1");
    check_base_class_offset(lv, (S19583C8*)(S19583C4*), ABISELECT(48,24), "S19583C1");
    check_base_class_offset(lv, (S19583C4*)(S19583C3*)(S19583C2*), 0, "S19583C1");
    /*is_ambiguous_... S19583C3::S19583C5 */ AMB_check_base_class_offset(lv, (S19583C5*)(S19583C3*)(S19583C2*), ABISELECT(8,4), "S19583C1");
    /*is_ambiguous_... S19583C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19583C3*)(S19583C2*), ABISELECT(8,4), "S19583C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S19583C3*)(S19583C2*), ABISELECT(8,4), "S19583C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19583C11*)(S19583C3*)(S19583C2*), ABISELECT(64,32), "S19583C1");
    check_base_class_offset(lv, (S19583C11*)(S19583C3*)(S19583C2*), ABISELECT(24,12), "S19583C1");
    check_base_class_offset(lv, (S19583C3*)(S19583C2*), ABISELECT(8,4), "S19583C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19583C2*), ABISELECT(72,36), "S19583C1");
    check_base_class_offset(lv, (S19583C2*), ABISELECT(8,4), "S19583C1");
    test_class_info(&lv, &cd_S19583C1);
    dp->~S19583C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19583C1(Test_S19583C1, "S19583C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19583C1C1Ev();
extern void _ZN8S19583C1D1Ev();
Name_Map name_map_S19583C1[] = {
  NSPAIR(_ZN8S19583C1C1Ev),
  NSPAIR(_ZN8S19583C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19583C7;
extern VTBL_ENTRY _ZTI8S19583C7[];
extern  VTBL_ENTRY _ZTV8S19583C7[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C8;
extern VTBL_ENTRY _ZTI8S19583C8[];
extern  VTBL_ENTRY _ZTV8S19583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C8[];
extern Class_Descriptor cd_S19583C4;
extern VTBL_ENTRY _ZTI8S19583C4[];
extern  VTBL_ENTRY _ZTV8S19583C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C4[];
extern Class_Descriptor cd_S19583C5;
extern VTBL_ENTRY _ZTI8S19583C5[];
extern  VTBL_ENTRY _ZTV8S19583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C5[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19583C11;
extern VTBL_ENTRY _ZTI9S19583C11[];
extern  VTBL_ENTRY _ZTV9S19583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19583C11[];
extern Class_Descriptor cd_S19583C3;
extern VTBL_ENTRY _ZTI8S19583C3[];
extern  VTBL_ENTRY _ZTV8S19583C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19583C2;
extern VTBL_ENTRY _ZTI8S19583C2[];
extern  VTBL_ENTRY _ZTV8S19583C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C2[];
static Base_Class bases_S19583C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19583C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19583C5,    ABISELECT(32,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19583C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19583C8,    ABISELECT(48,24), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19583C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19583C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19583C11,    ABISELECT(24,12), //bcp->offset
    28, //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19583C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(72,36), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19583C2,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19583C1[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C1D1Ev();
extern void _ZN8S19583C1D0Ev();
extern void _ZN8S19583C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19583C1D1Ev,_ZTv0_n44_N8S19583C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19583C1D1Ev,_ZThn4_N8S19583C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19583C1D0Ev,_ZTv0_n44_N8S19583C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19583C1D0Ev,_ZThn4_N8S19583C1D0Ev)() __attribute__((weak));
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19583C1D1Ev,_ZTv0_n12_N8S19583C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19583C1D1Ev,_ZThn36_N8S19583C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19583C1D0Ev,_ZTv0_n12_N8S19583C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19583C1D0Ev,_ZThn36_N8S19583C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19583C1[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  0,
  ABISELECT(8,4),
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C1[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19583C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19583C1[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19583C1D1Ev,_ZTv0_n44_N8S19583C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19583C1D0Ev,_ZTv0_n44_N8S19583C1D0Ev),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C1[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19583C1[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19583C1[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19583C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19583C1D1Ev,_ZTv0_n12_N8S19583C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19583C1D0Ev,_ZTv0_n12_N8S19583C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19583C1[];
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C2D1Ev();
extern void _ZN8S19583C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C2__8S19583C1[] = {
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19583C2D0Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C3D1Ev();
extern void _ZN8S19583C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C38S19583C2__8S19583C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19583C3D0Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C58S19583C38S19583C2__A1__8S19583C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C58S19583C38S19583C2__A1__8S19583C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19583C118S19583C38S19583C2__8S19583C1[] = {
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19583C11[0]),
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C4__8S19583C38S19583C2__8S19583C1[] = {
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C38S19583C2__8S19583C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C38S19583C2__8S19583C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19583C11__8S19583C38S19583C2__8S19583C1[] = {
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19583C3[0]),
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C4__8S19583C2__8S19583C1[] = {
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C2__8S19583C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C2__8S19583C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19583C118S19583C3__8S19583C2__8S19583C1[] = {
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19583C2D1Ev,_ZTv0_n12_N8S19583C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19583C2D1Ev,_ZThn32_N8S19583C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19583C2D0Ev,_ZTv0_n12_N8S19583C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19583C2D0Ev,_ZThn32_N8S19583C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__8S19583C2__8S19583C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19583C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19583C2D1Ev,_ZTv0_n12_N8S19583C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19583C2D0Ev,_ZTv0_n12_N8S19583C2D0Ev),
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C4__8S19583C1[] = {
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C4__8S19583C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C4__8S19583C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19583C4[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__8S19583C5__8S19583C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19583C5[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
extern void _ZN8S19583C82v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C8__8S19583C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
  (VTBL_ENTRY)&_ZN8S19583C82v2Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C5__8S19583C8__8S19583C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
extern void _ZN8S19583C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19583C7__A1__8S19583C8__8S19583C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19583C8[0]),
  (VTBL_ENTRY)&_ZN8S19583C72v1Ev,
};
static  VTT_ENTRY vtt_S19583C1[] = {
  {&(_ZTV8S19583C1[11]),  11,52},
  {&(_ZTV8S19583C1[25]),  25,52},
  {&(_ZTV8S19583C1[11]),  11,52},
  {&(_ZTV8S19583C1[37]),  37,52},
  {&(_ZTV8S19583C1[11]),  11,52},
  {&(_ZTV8S19583C1[45]),  45,52},
  {&(_ZTV8S19583C1[32]),  32,52},
  {&(_ZTV8S19583C1[50]),  50,52},
  {&(_tg__ZTV8S19583C2__8S19583C1[10]),  10,13},
  {&(_tg__ZTV8S19583C38S19583C2__8S19583C1[9]),  9,12},
  {&(_tg__ZTV8S19583C58S19583C38S19583C2__A1__8S19583C1[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C58S19583C38S19583C2__A1__8S19583C1[3]),  3,4},
  {&(_tg__ZTV9S19583C118S19583C38S19583C2__8S19583C1[4]),  4,4},
  {&(_tg__ZTV8S19583C4__8S19583C38S19583C2__8S19583C1[7]),  7,8},
  {&(_tg__ZTV8S19583C5__8S19583C38S19583C2__8S19583C1[5]),  5,6},
  {&(_tg__ZTV8S19583C4__8S19583C38S19583C2__8S19583C1[7]),  7,8},
  {&(_tg__ZTV8S19583C8__8S19583C38S19583C2__8S19583C1[7]),  7,9},
  {&(_tg__ZTV9S19583C11__8S19583C38S19583C2__8S19583C1[4]),  4,4},
  {&(_tg__ZTV8S19583C4__8S19583C2__8S19583C1[7]),  7,8},
  {&(_tg__ZTV8S19583C5__8S19583C2__8S19583C1[5]),  5,6},
  {&(_tg__ZTV8S19583C4__8S19583C2__8S19583C1[7]),  7,8},
  {&(_tg__ZTV8S19583C8__8S19583C2__8S19583C1[7]),  7,9},
  {&(_tg__ZTV9S19583C118S19583C3__8S19583C2__8S19583C1[4]),  4,4},
  {&(_tg__ZTV12S21216C26_nt__8S19583C2__8S19583C1[3]),  3,5},
  {&(_tg__ZTV8S19583C4__8S19583C1[7]),  7,8},
  {&(_tg__ZTV8S19583C5__8S19583C4__8S19583C1[5]),  5,6},
  {&(_tg__ZTV8S19583C4__8S19583C1[7]),  7,8},
  {&(_tg__ZTV8S19583C8__8S19583C4__8S19583C1[7]),  7,9},
  {&(_tg__ZTV8S19583C5__8S19583C1[5]),  5,6},
  {&(_tg__ZTV8S19583C7__8S19583C5__8S19583C1[3]),  3,4},
  {&(_tg__ZTV8S19583C8__8S19583C1[5]),  5,7},
  {&(_tg__ZTV8S19583C5__8S19583C8__8S19583C1[5]),  5,6},
  {&(_tg__ZTV8S19583C7__A1__8S19583C8__8S19583C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19583C1[];
extern  VTBL_ENTRY _ZTV8S19583C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19583C1[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19583C2D0Ev,_ZTv0_n12_N8S19583C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19583C2D0Ev,_ZThn32_N8S19583C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19583C2D1Ev,_ZTv0_n12_N8S19583C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19583C2D1Ev,_ZThn32_N8S19583C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19583C1D0Ev,_ZTv0_n12_N8S19583C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19583C1D0Ev,_ZThn36_N8S19583C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19583C1D1Ev,_ZTv0_n12_N8S19583C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19583C1D1Ev,_ZThn36_N8S19583C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19583C1D0Ev,_ZTv0_n44_N8S19583C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19583C1D0Ev,_ZThn4_N8S19583C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19583C1D1Ev,_ZTv0_n44_N8S19583C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19583C1D1Ev,_ZThn4_N8S19583C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19583C1 = {  "S19583C1", // class name
  bases_S19583C1, 15,
  &(vtc_S19583C1[0]), // expected_vtbl_contents
  &(vtt_S19583C1[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19583C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19583C1),52, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19583C1),33, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6862C2_nt  {
  virtual void  v4(); // _ZN10S6862C2_nt2v4Ev
  virtual void  v5(); // _ZN10S6862C2_nt2v5Ev
  ~S6862C2_nt(); // tgen
  S6862C2_nt(); // tgen
};
//SIG(-1 S6862C2_nt) C1{ v1 v2}


void  S6862C2_nt ::v4(){vfunc_called(this, "_ZN10S6862C2_nt2v4Ev");}
void  S6862C2_nt ::v5(){vfunc_called(this, "_ZN10S6862C2_nt2v5Ev");}
S6862C2_nt ::~S6862C2_nt(){ note_dtor("S6862C2_nt", this);} // tgen
S6862C2_nt ::S6862C2_nt(){ note_ctor("S6862C2_nt", this);} // tgen

//skip512 S6862C2_nt

#else // __cplusplus

extern void _ZN10S6862C2_ntC1Ev();
extern void _ZN10S6862C2_ntD1Ev();
Name_Map name_map_S6862C2_nt[] = {
  NSPAIR(_ZN10S6862C2_ntC1Ev),
  NSPAIR(_ZN10S6862C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6862C2_nt[];
extern void _ZN10S6862C2_nt2v4Ev();
extern void _ZN10S6862C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S6862C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6862C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6862C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6862C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S6862C2_nt[];
VTBL_ENTRY *P__ZTI10S6862C2_nt = _ZTI10S6862C2_nt; 
extern  VTBL_ENTRY _ZTV10S6862C2_nt[];
Class_Descriptor cd_S6862C2_nt = {  "S6862C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6862C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6862C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6862C2_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  S6862C4  {
  ::S5757C13_nt s6862c4f0;
  unsigned int s6862c4f1:1;
  virtual  ~S6862C4(); // _ZN7S6862C4D1Ev
  virtual void  v6(); // _ZN7S6862C42v6Ev
  virtual void  v7(); // _ZN7S6862C42v7Ev
  virtual void  v8(); // _ZN7S6862C42v8Ev
  virtual void  v9(); // _ZN7S6862C42v9Ev
  virtual void  v10(); // _ZN7S6862C43v10Ev
  virtual void  v11(); // _ZN7S6862C43v11Ev
  virtual void  v12(); // _ZN7S6862C43v12Ev
  S6862C4(); // tgen
};
//SIG(-1 S6862C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S6862C4 ::~S6862C4(){ note_dtor("S6862C4", this);}
void  S6862C4 ::v6(){vfunc_called(this, "_ZN7S6862C42v6Ev");}
void  S6862C4 ::v7(){vfunc_called(this, "_ZN7S6862C42v7Ev");}
void  S6862C4 ::v8(){vfunc_called(this, "_ZN7S6862C42v8Ev");}
void  S6862C4 ::v9(){vfunc_called(this, "_ZN7S6862C42v9Ev");}
void  S6862C4 ::v10(){vfunc_called(this, "_ZN7S6862C43v10Ev");}
void  S6862C4 ::v11(){vfunc_called(this, "_ZN7S6862C43v11Ev");}
void  S6862C4 ::v12(){vfunc_called(this, "_ZN7S6862C43v12Ev");}
S6862C4 ::S6862C4(){ note_ctor("S6862C4", this);} // tgen

static void Test_S6862C4()
{
  extern Class_Descriptor cd_S6862C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S6862C4, buf);
    S6862C4 *dp, &lv = *(dp=new (buf) S6862C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S6862C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6862C4)");
    check_field_offset(lv, s6862c4f0, ABISELECT(8,4), "S6862C4.s6862c4f0");
    set_bf_and_test(lv, s6862c4f1, ABISELECT(32,16), 0, 1, 1, "S6862C4");
    test_class_info(&lv, &cd_S6862C4);
    dp->~S6862C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6862C4(Test_S6862C4, "S6862C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S6862C4C1Ev();
extern void _ZN7S6862C4D1Ev();
Name_Map name_map_S6862C4[] = {
  NSPAIR(_ZN7S6862C4C1Ev),
  NSPAIR(_ZN7S6862C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6862C4[];
extern void _ZN7S6862C4D1Ev();
extern void _ZN7S6862C4D0Ev();
extern void _ZN7S6862C42v6Ev();
extern void _ZN7S6862C42v7Ev();
extern void _ZN7S6862C42v8Ev();
extern void _ZN7S6862C42v9Ev();
extern void _ZN7S6862C43v10Ev();
extern void _ZN7S6862C43v11Ev();
extern void _ZN7S6862C43v12Ev();
static  VTBL_ENTRY vtc_S6862C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6862C4[0]),
  (VTBL_ENTRY)&_ZN7S6862C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6862C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v12Ev,
};
extern VTBL_ENTRY _ZTI7S6862C4[];
extern  VTBL_ENTRY _ZTV7S6862C4[];
Class_Descriptor cd_S6862C4 = {  "S6862C4", // class name
  0,0,//no base classes
  &(vtc_S6862C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S6862C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6862C4),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  S6862C3  : S6862C4 {
  ::S19894C6_nt s6862c3f0;
  virtual  ~S6862C3(); // _ZN7S6862C3D1Ev
  virtual void  v13(); // _ZN7S6862C33v13Ev
  virtual void  v14(); // _ZN7S6862C33v14Ev
  S6862C3(); // tgen
};
//SIG(-1 S6862C3) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} vd v1 v2 FC4{ m Fp}}


 S6862C3 ::~S6862C3(){ note_dtor("S6862C3", this);}
void  S6862C3 ::v13(){vfunc_called(this, "_ZN7S6862C33v13Ev");}
void  S6862C3 ::v14(){vfunc_called(this, "_ZN7S6862C33v14Ev");}
S6862C3 ::S6862C3(){ note_ctor("S6862C3", this);} // tgen

static void Test_S6862C3()
{
  extern Class_Descriptor cd_S6862C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S6862C3, buf);
    S6862C3 *dp, &lv = *(dp=new (buf) S6862C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S6862C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6862C3)");
    check_base_class_offset(lv, (S6862C4*), 0, "S6862C3");
    check_field_offset(lv, s6862c3f0, ABISELECT(40,20), "S6862C3.s6862c3f0");
    test_class_info(&lv, &cd_S6862C3);
    dp->~S6862C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6862C3(Test_S6862C3, "S6862C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S6862C3C1Ev();
extern void _ZN7S6862C3D1Ev();
Name_Map name_map_S6862C3[] = {
  NSPAIR(_ZN7S6862C3C1Ev),
  NSPAIR(_ZN7S6862C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6862C4;
extern VTBL_ENTRY _ZTI7S6862C4[];
extern  VTBL_ENTRY _ZTV7S6862C4[];
static Base_Class bases_S6862C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6862C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6862C3[];
extern void _ZN7S6862C3D1Ev();
extern void _ZN7S6862C3D0Ev();
extern void _ZN7S6862C42v6Ev();
extern void _ZN7S6862C42v7Ev();
extern void _ZN7S6862C42v8Ev();
extern void _ZN7S6862C42v9Ev();
extern void _ZN7S6862C43v10Ev();
extern void _ZN7S6862C43v11Ev();
extern void _ZN7S6862C43v12Ev();
extern void _ZN7S6862C33v13Ev();
extern void _ZN7S6862C33v14Ev();
static  VTBL_ENTRY vtc_S6862C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6862C3[0]),
  (VTBL_ENTRY)&_ZN7S6862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6862C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6862C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S6862C3[];
extern  VTBL_ENTRY _ZTV7S6862C3[];
Class_Descriptor cd_S6862C3 = {  "S6862C3", // class name
  bases_S6862C3, 1,
  &(vtc_S6862C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S6862C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6862C3),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6862C1  : S6862C2_nt , S6862C3 {
  ::S3445C28 s6862c1f0;
  virtual void  v1(); // _ZN7S6862C12v1Ev
  virtual void  v2(); // _ZN7S6862C12v2Ev
  virtual void  v3(); // _ZN7S6862C12v3Ev
  ~S6862C1(); // tgen
  S6862C1(); // tgen
};
//SIG(1 S6862C1) C1{ BC2{ v4 v5} BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 FC5{ m Fp[3]} Fi:1} vd v13 v14 FC6{ m Fp}} v1 v2 v3 FC7{ BC8{ m Fp Fi[2]}}}


void  S6862C1 ::v1(){vfunc_called(this, "_ZN7S6862C12v1Ev");}
void  S6862C1 ::v2(){vfunc_called(this, "_ZN7S6862C12v2Ev");}
void  S6862C1 ::v3(){vfunc_called(this, "_ZN7S6862C12v3Ev");}
S6862C1 ::~S6862C1(){ note_dtor("S6862C1", this);} // tgen
S6862C1 ::S6862C1(){ note_ctor("S6862C1", this);} // tgen

static void Test_S6862C1()
{
  extern Class_Descriptor cd_S6862C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S6862C1, buf);
    S6862C1 *dp, &lv = *(dp=new (buf) S6862C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S6862C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6862C1)");
    check_base_class_offset(lv, (S6862C2_nt*), 0, "S6862C1");
    check_base_class_offset(lv, (S6862C4*)(S6862C3*), ABISELECT(8,4), "S6862C1");
    check_base_class_offset(lv, (S6862C3*), ABISELECT(8,4), "S6862C1");
    check_field_offset(lv, s6862c1f0, ABISELECT(56,28), "S6862C1.s6862c1f0");
    test_class_info(&lv, &cd_S6862C1);
    dp->~S6862C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6862C1(Test_S6862C1, "S6862C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S6862C1C1Ev();
extern void _ZN7S6862C1D1Ev();
Name_Map name_map_S6862C1[] = {
  NSPAIR(_ZN7S6862C1C1Ev),
  NSPAIR(_ZN7S6862C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6862C2_nt;
extern VTBL_ENTRY _ZTI10S6862C2_nt[];
extern  VTBL_ENTRY _ZTV10S6862C2_nt[];
extern Class_Descriptor cd_S6862C4;
extern VTBL_ENTRY _ZTI7S6862C4[];
extern  VTBL_ENTRY _ZTV7S6862C4[];
extern Class_Descriptor cd_S6862C3;
extern VTBL_ENTRY _ZTI7S6862C3[];
extern  VTBL_ENTRY _ZTV7S6862C3[];
static Base_Class bases_S6862C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6862C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6862C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6862C3,    ABISELECT(8,4), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6862C1[];
extern void _ZN10S6862C2_nt2v4Ev();
extern void _ZN10S6862C2_nt2v5Ev();
extern void _ZN7S6862C12v1Ev();
extern void _ZN7S6862C12v2Ev();
extern void _ZN7S6862C12v3Ev();
extern void _ZN7S6862C1D1Ev();
extern void _ZN7S6862C1D0Ev();
extern void ABISELECT(_ZThn8_N7S6862C1D1Ev,_ZThn4_N7S6862C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S6862C1D0Ev,_ZThn4_N7S6862C1D0Ev)();
extern void _ZN7S6862C42v6Ev();
extern void _ZN7S6862C42v7Ev();
extern void _ZN7S6862C42v8Ev();
extern void _ZN7S6862C42v9Ev();
extern void _ZN7S6862C43v10Ev();
extern void _ZN7S6862C43v11Ev();
extern void _ZN7S6862C43v12Ev();
extern void _ZN7S6862C33v13Ev();
extern void _ZN7S6862C33v14Ev();
static  VTBL_ENTRY vtc_S6862C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6862C1[0]),
  (VTBL_ENTRY)&_ZN10S6862C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6862C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S6862C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6862C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6862C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6862C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6862C1D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6862C1D1Ev,_ZThn4_N7S6862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6862C1D0Ev,_ZThn4_N7S6862C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6862C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6862C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6862C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6862C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6862C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S6862C1[];
extern  VTBL_ENTRY _ZTV7S6862C1[];
Class_Descriptor cd_S6862C1 = {  "S6862C1", // class name
  bases_S6862C1, 3,
  &(vtc_S6862C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S6862C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6862C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7743C3  : virtual S19139C5_nt {
  __tsi64 s7743c3f0;
  ~S7743C3(); // tgen
  S7743C3(); // tgen
};
//SIG(-1 S7743C3) C1{ VBC2{ m Fp[6]} FL}


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

static void Test_S7743C3()
{
  extern Class_Descriptor cd_S7743C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7743C3, buf);
    S7743C3 *dp, &lv = *(dp=new (buf) S7743C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7743C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7743C3)");
    check_base_class_offset(lv, (S19139C5_nt*), ABISELECT(16,12), "S7743C3");
    check_field_offset(lv, s7743c3f0, ABISELECT(8,4), "S7743C3.s7743c3f0");
    test_class_info(&lv, &cd_S7743C3);
    dp->~S7743C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7743C3(Test_S7743C3, "S7743C3", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7743C3C1Ev();
extern void _ZN7S7743C3D1Ev();
Name_Map name_map_S7743C3[] = {
  NSPAIR(_ZN7S7743C3C1Ev),
  NSPAIR(_ZN7S7743C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
static Base_Class bases_S7743C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7743C3[];
static  VTBL_ENTRY vtc_S7743C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C3[0]),
};
extern VTBL_ENTRY _ZTV7S7743C3[];
static  VTT_ENTRY vtt_S7743C3[] = {
  {&(_ZTV7S7743C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7743C3[];
extern  VTBL_ENTRY _ZTV7S7743C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C3[];
Class_Descriptor cd_S7743C3 = {  "S7743C3", // class name
  bases_S7743C3, 1,
  &(vtc_S7743C3[0]), // expected_vtbl_contents
  &(vtt_S7743C3[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7743C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7743C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7743C3),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  S7743C5  : virtual S21216C26_nt , S19894C34 {
  int s7743c5f0:8;
  ~S7743C5(); // tgen
  S7743C5(); // tgen
};
//SIG(-1 S7743C5) C1{ VBC2{ vd m} BC3{ m} Fi:8}


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

static void Test_S7743C5()
{
  extern Class_Descriptor cd_S7743C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7743C5, buf);
    S7743C5 *dp, &lv = *(dp=new (buf) S7743C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7743C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7743C5)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S7743C5");
    check_base_class_offset(lv, (S19894C34*), 0, "S7743C5");
    set_bf_and_test(lv, s7743c5f0, ABISELECT(8,4), 0, 8, 1, "S7743C5");
    set_bf_and_test(lv, s7743c5f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S7743C5");
    test_class_info(&lv, &cd_S7743C5);
    dp->~S7743C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7743C5(Test_S7743C5, "S7743C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7743C5C1Ev();
extern void _ZN7S7743C5D1Ev();
Name_Map name_map_S7743C5[] = {
  NSPAIR(_ZN7S7743C5C1Ev),
  NSPAIR(_ZN7S7743C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S7743C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7743C5[];
extern void _ZN7S7743C5D1Ev();
extern void _ZN7S7743C5D0Ev();
static  VTBL_ENTRY vtc_S7743C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C5[0]),
  (VTBL_ENTRY)&_ZN7S7743C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7743C5D0Ev,
};
extern VTBL_ENTRY _ZTV7S7743C5[];
static  VTT_ENTRY vtt_S7743C5[] = {
  {&(_ZTV7S7743C5[4]),  4,6},
  {&(_ZTV7S7743C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7743C5[];
extern  VTBL_ENTRY _ZTV7S7743C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C5[];
Class_Descriptor cd_S7743C5 = {  "S7743C5", // class name
  bases_S7743C5, 2,
  &(vtc_S7743C5[0]), // expected_vtbl_contents
  &(vtt_S7743C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7743C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7743C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7743C5),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  S7743C2  : virtual S7743C3 , S7743C5 , virtual S19139C7_nt {
  int s7743c2f0;
  virtual  ~S7743C2(); // _ZN7S7743C2D2Ev
  S7743C2(); // tgen
};
//SIG(-1 S7743C2) C1{ VBC2{ VBC3{ m Fp[6]} FL} BC4{ VBC5{ vd m} BC6{ m} Fi:8} VBC7{ m FL[10]} vd Fi}


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

static void Test_S7743C2()
{
  extern Class_Descriptor cd_S7743C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,33)];
    init_test(&cd_S7743C2, buf);
    S7743C2 *dp, &lv = *(dp=new (buf) S7743C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,128), "sizeof(S7743C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7743C2)");
    check_base_class_offset(lv, (S19139C5_nt*)(S7743C3*), ABISELECT(32,24), "S7743C2");
    check_base_class_offset(lv, (S7743C3*), ABISELECT(16,12), "S7743C2");
    check_base_class_offset(lv, (S21216C26_nt*)(S7743C5*), 0, "S7743C2");
    check_base_class_offset(lv, (S19894C34*)(S7743C5*), 0, "S7743C2");
    check_base_class_offset(lv, (S7743C5*), 0, "S7743C2");
    check_base_class_offset(lv, (S19139C7_nt*), ABISELECT(80,48), "S7743C2");
    check_field_offset(lv, s7743c2f0, ABISELECT(12,8), "S7743C2.s7743c2f0");
    test_class_info(&lv, &cd_S7743C2);
    dp->~S7743C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7743C2(Test_S7743C2, "S7743C2", ABISELECT(160,128));

#else // __cplusplus

extern void _ZN7S7743C2C1Ev();
extern void _ZN7S7743C2D2Ev();
Name_Map name_map_S7743C2[] = {
  NSPAIR(_ZN7S7743C2C1Ev),
  NSPAIR(_ZN7S7743C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S7743C3;
extern VTBL_ENTRY _ZTI7S7743C3[];
extern  VTBL_ENTRY _ZTV7S7743C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7743C5;
extern VTBL_ENTRY _ZTI7S7743C5[];
extern  VTBL_ENTRY _ZTV7S7743C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C5[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
static Base_Class bases_S7743C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C5_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7743C3,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7743C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C7_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7743C2[];
extern void _ZN7S7743C2D1Ev();
extern void _ZN7S7743C2D0Ev();
static  VTBL_ENTRY vtc_S7743C2[] = {
  ABISELECT(80,48),
  ABISELECT(32,24),
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C2[0]),
  (VTBL_ENTRY)&_ZN7S7743C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7743C2D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7743C2[0]),
};
extern VTBL_ENTRY _ZTV7S7743C2[];
extern void _ZN7S7743C5D1Ev();
extern void _ZN7S7743C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7743C5__7S7743C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C5[0]),
  (VTBL_ENTRY)&_ZN7S7743C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7743C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7743C3__7S7743C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C3[0]),
};
static  VTT_ENTRY vtt_S7743C2[] = {
  {&(_ZTV7S7743C2[7]),  7,12},
  {&(_tg__ZTV7S7743C5__7S7743C2[4]),  4,6},
  {&(_tg__ZTV7S7743C5__7S7743C2[4]),  4,6},
  {&(_ZTV7S7743C2[12]),  12,12},
  {&(_ZTV7S7743C2[7]),  7,12},
  {&(_tg__ZTV7S7743C3__7S7743C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7743C2[];
extern  VTBL_ENTRY _ZTV7S7743C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C2[];
Class_Descriptor cd_S7743C2 = {  "S7743C2", // class name
  bases_S7743C2, 6,
  &(vtc_S7743C2[0]), // expected_vtbl_contents
  &(vtt_S7743C2[0]), // expected_vtt_contents
  ABISELECT(160,128), // object size
  NSPAIRA(_ZTI7S7743C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7743C2),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7743C2),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  S7743C9  : S19139C3_nt , S19139C5_nt , virtual S7743C3 , virtual S19139C7_nt {
  int s7743c9f0;
  ~S7743C9(); // tgen
  S7743C9(); // tgen
};
//SIG(-1 S7743C9) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC4 VBC5{ VBC4 FL} VBC6{ m FL[10]} Fi}


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

static void Test_S7743C9()
{
  extern Class_Descriptor cd_S7743C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,47)];
    init_test(&cd_S7743C9, buf);
    S7743C9 *dp, &lv = *(dp=new (buf) S7743C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,184), "sizeof(S7743C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7743C9)");
    check_base_class_offset(lv, (S19139C3_nt*), ABISELECT(8,4), "S7743C9");
    /*is_ambiguous_... S7743C9::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*), ABISELECT(72,40), "S7743C9");
    check_base_class_offset(lv, (S19139C5_nt*)(S7743C3*), ABISELECT(144,80), "S7743C9");
    check_base_class_offset(lv, (S7743C3*), ABISELECT(128,68), "S7743C9");
    check_base_class_offset(lv, (S19139C7_nt*), ABISELECT(192,104), "S7743C9");
    check_field_offset(lv, s7743c9f0, ABISELECT(120,64), "S7743C9.s7743c9f0");
    test_class_info(&lv, &cd_S7743C9);
    dp->~S7743C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7743C9(Test_S7743C9, "S7743C9", ABISELECT(272,184));

#else // __cplusplus

extern void _ZN7S7743C9C1Ev();
extern void _ZN7S7743C9D1Ev();
Name_Map name_map_S7743C9[] = {
  NSPAIR(_ZN7S7743C9C1Ev),
  NSPAIR(_ZN7S7743C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S7743C3;
extern VTBL_ENTRY _ZTI7S7743C3[];
extern  VTBL_ENTRY _ZTV7S7743C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C3[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
static Base_Class bases_S7743C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C5_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C5_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7743C3,    ABISELECT(128,68), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19139C7_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7743C9[];
static  VTBL_ENTRY vtc_S7743C9[] = {
  ABISELECT(192,104),
  ABISELECT(144,80),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C9[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7743C9[0]),
};
extern VTBL_ENTRY _ZTV7S7743C9[];
static  VTBL_ENTRY _tg__ZTV7S7743C3__7S7743C9[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C3[0]),
};
static  VTT_ENTRY vtt_S7743C9[] = {
  {&(_ZTV7S7743C9[5]),  5,8},
  {&(_ZTV7S7743C9[8]),  8,8},
  {&(_tg__ZTV7S7743C3__7S7743C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7743C9[];
extern  VTBL_ENTRY _ZTV7S7743C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C9[];
Class_Descriptor cd_S7743C9 = {  "S7743C9", // class name
  bases_S7743C9, 5,
  &(vtc_S7743C9[0]), // expected_vtbl_contents
  &(vtt_S7743C9[0]), // expected_vtt_contents
  ABISELECT(272,184), // object size
  NSPAIRA(_ZTI7S7743C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7743C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7743C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7743C1  : S7743C2 , S7743C9 {
  int s7743c1f0;
  virtual  ~S7743C1(); // _ZN7S7743C1D2Ev
  S7743C1(); // tgen
};
//SIG(1 S7743C1) C1{ BC2{ VBC3{ VBC4{ m Fp[6]} FL} BC5{ VBC6{ vd m} BC7{ m} Fi:8} VBC8{ m FL[10]} vd Fi} BC9{ BC10{ m FC11{ VBC4 FL}} BC4 VBC3 VBC8 Fi} vd Fi}


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

static void Test_S7743C1()
{
  extern Class_Descriptor cd_S7743C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,51)];
    init_test(&cd_S7743C1, buf);
    S7743C1 *dp, &lv = *(dp=new (buf) S7743C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,200), "sizeof(S7743C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7743C1)");
    check_base_class_offset(lv, (S19139C5_nt*)(S7743C3*), ABISELECT(160,96), "S7743C1");
    check_base_class_offset(lv, (S7743C3*)(S7743C2*), ABISELECT(144,84), "S7743C1");
    check_base_class_offset(lv, (S7743C3*)(S7743C9*), ABISELECT(144,84), "S7743C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S7743C5*)(S7743C2*), 0, "S7743C1");
    check_base_class_offset(lv, (S19894C34*)(S7743C5*)(S7743C2*), 0, "S7743C1");
    check_base_class_offset(lv, (S7743C5*)(S7743C2*), 0, "S7743C1");
    check_base_class_offset(lv, (S19139C7_nt*)(S7743C2*), ABISELECT(208,120), "S7743C1");
    check_base_class_offset(lv, (S19139C7_nt*)(S7743C9*), ABISELECT(208,120), "S7743C1");
    check_base_class_offset(lv, (S7743C2*), 0, "S7743C1");
    check_base_class_offset(lv, (S19139C3_nt*)(S7743C9*), ABISELECT(24,16), "S7743C1");
    /*is_ambiguous_... S7743C9::S19139C5_nt */ AMB_check_base_class_offset(lv, (S19139C5_nt*)(S7743C9*), ABISELECT(88,52), "S7743C1");
    check_base_class_offset(lv, (S7743C9*), ABISELECT(16,12), "S7743C1");
    check_field_offset(lv, s7743c1f0, ABISELECT(140,80), "S7743C1.s7743c1f0");
    test_class_info(&lv, &cd_S7743C1);
    dp->~S7743C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7743C1(Test_S7743C1, "S7743C1", ABISELECT(288,200));

#else // __cplusplus

extern void _ZN7S7743C1C1Ev();
extern void _ZN7S7743C1D2Ev();
Name_Map name_map_S7743C1[] = {
  NSPAIR(_ZN7S7743C1C1Ev),
  NSPAIR(_ZN7S7743C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S7743C3;
extern VTBL_ENTRY _ZTI7S7743C3[];
extern  VTBL_ENTRY _ZTV7S7743C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C3[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7743C5;
extern VTBL_ENTRY _ZTI7S7743C5[];
extern  VTBL_ENTRY _ZTV7S7743C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C5[];
extern Class_Descriptor cd_S19139C7_nt;
extern VTBL_ENTRY _ZTI11S19139C7_nt[];
extern Class_Descriptor cd_S7743C2;
extern VTBL_ENTRY _ZTI7S7743C2[];
extern  VTBL_ENTRY _ZTV7S7743C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C2[];
extern Class_Descriptor cd_S19139C3_nt;
extern VTBL_ENTRY _ZTI11S19139C3_nt[];
extern Class_Descriptor cd_S19139C5_nt;
extern VTBL_ENTRY _ZTI11S19139C5_nt[];
extern Class_Descriptor cd_S7743C9;
extern VTBL_ENTRY _ZTI7S7743C9[];
extern  VTBL_ENTRY _ZTV7S7743C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C9[];
static Base_Class bases_S7743C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19139C5_nt,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7743C3,    ABISELECT(144,84), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7743C5,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19139C7_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7743C2,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19139C3_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19139C5_nt,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7743C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7743C1[];
extern void _ZN7S7743C1D1Ev();
extern void _ZN7S7743C1D0Ev();
static  VTBL_ENTRY vtc_S7743C1[] = {
  ABISELECT(208,120),
  ABISELECT(160,96),
  ABISELECT(144,84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C1[0]),
  (VTBL_ENTRY)&_ZN7S7743C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7743C1D0Ev,
  ABISELECT(192,108),
  ABISELECT(144,84),
  ABISELECT(128,72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7743C1[0]),
  ABISELECT(16,12),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7743C1[0]),
};
extern VTBL_ENTRY _ZTV7S7743C1[];
extern void _ZN7S7743C2D1Ev();
extern void _ZN7S7743C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7743C2__7S7743C1[] = {
  ABISELECT(208,120),
  ABISELECT(160,96),
  ABISELECT(144,84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C2[0]),
  (VTBL_ENTRY)&_ZN7S7743C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7743C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7743C5D1Ev,_ZTv0_n12_N7S7743C5D1Ev)();
extern void _ZN7S7743C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7743C5D0Ev,_ZTv0_n12_N7S7743C5D0Ev)();
extern void _ZN7S7743C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7743C57S7743C2__7S7743C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7743C5D1Ev,_ZTv0_n12_N7S7743C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7743C5D0Ev,_ZTv0_n12_N7S7743C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7743C3__7S7743C2__7S7743C1[] = {
  ABISELECT(16,12),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7743C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7743C9__7S7743C1[] = {
  ABISELECT(192,108),
  ABISELECT(144,84),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7743C3__7S7743C9__7S7743C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7743C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7743C3__7S7743C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7743C3[0]),
};
static  VTT_ENTRY vtt_S7743C1[] = {
  {&(_ZTV7S7743C1[7]),  7,17},
  {&(_tg__ZTV7S7743C2__7S7743C1[7]),  7,9},
  {&(_tg__ZTV7S7743C57S7743C2__7S7743C1[4]),  4,6},
  {&(_tg__ZTV7S7743C57S7743C2__7S7743C1[4]),  4,6},
  {&(_tg__ZTV7S7743C3__7S7743C2__7S7743C1[3]),  3,3},
  {&(_tg__ZTV7S7743C2__7S7743C1[7]),  7,9},
  {&(_tg__ZTV7S7743C9__7S7743C1[5]),  5,5},
  {&(_tg__ZTV7S7743C3__7S7743C9__7S7743C1[3]),  3,3},
  {&(_ZTV7S7743C1[17]),  17,17},
  {&(_ZTV7S7743C1[7]),  7,17},
  {&(_ZTV7S7743C1[14]),  14,17},
  {&(_tg__ZTV7S7743C3__7S7743C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7743C1[];
extern  VTBL_ENTRY _ZTV7S7743C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7743C1[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7743C5D0Ev,_ZTv0_n12_N7S7743C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7743C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7743C5D1Ev,_ZTv0_n12_N7S7743C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7743C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7743C1 = {  "S7743C1", // class name
  bases_S7743C1, 10,
  &(vtc_S7743C1[0]), // expected_vtbl_contents
  &(vtt_S7743C1[0]), // expected_vtt_contents
  ABISELECT(288,200), // object size
  NSPAIRA(_ZTI7S7743C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7743C1),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7743C1),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S2800C7C1Ev();
extern void _ZN7S2800C7D1Ev();
Name_Map name_map_S2800C7[] = {
  NSPAIR(_ZN7S2800C7C1Ev),
  NSPAIR(_ZN7S2800C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2800C7[];
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY vtc_S2800C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C7[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
Class_Descriptor cd_S2800C7 = {  "S2800C7", // class name
  0,0,//no base classes
  &(vtc_S2800C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2800C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2800C7),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  S2800C5  : virtual S19894C17_nt , virtual S2800C7 {
  ::S2800C7 s2800c5f0;
  ~S2800C5(); // tgen
  S2800C5(); // tgen
};
//SIG(-1 S2800C5) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S2800C5()
{
  extern Class_Descriptor cd_S2800C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2800C5, buf);
    S2800C5 *dp, &lv = *(dp=new (buf) S2800C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2800C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2800C5)");
    check_base_class_offset(lv, (S19894C17_nt*), 0, "S2800C5");
    check_base_class_offset(lv, (S2800C7*), 0, "S2800C5");
    check_field_offset(lv, s2800c5f0, ABISELECT(8,4), "S2800C5.s2800c5f0");
    test_class_info(&lv, &cd_S2800C5);
    dp->~S2800C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2800C5(Test_S2800C5, "S2800C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2800C5C1Ev();
extern void _ZN7S2800C5D1Ev();
Name_Map name_map_S2800C5[] = {
  NSPAIR(_ZN7S2800C5C1Ev),
  NSPAIR(_ZN7S2800C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
static Base_Class bases_S2800C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2800C7,    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 _ZTI7S2800C5[];
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY vtc_S2800C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S2800C5[];
static  VTT_ENTRY vtt_S2800C5[] = {
  {&(_ZTV7S2800C5[5]),  5,6},
  {&(_ZTV7S2800C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
Class_Descriptor cd_S2800C5 = {  "S2800C5", // class name
  bases_S2800C5, 2,
  &(vtc_S2800C5[0]), // expected_vtbl_contents
  &(vtt_S2800C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2800C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2800C5),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2800C5),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  S2800C9  : S2800C5 , S19894C17_nt , S2800C7 {
  virtual  ~S2800C9(); // _ZN7S2800C9D2Ev
  S2800C9(); // tgen
};
//SIG(-1 S2800C9) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S2800C9()
{
  extern Class_Descriptor cd_S2800C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2800C9, buf);
    S2800C9 *dp, &lv = *(dp=new (buf) S2800C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2800C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2800C9)");
    check_base_class_offset(lv, (S19894C17_nt*)(S2800C5*), ABISELECT(24,12), "S2800C9");
    check_base_class_offset(lv, (S2800C7*)(S2800C5*), 0, "S2800C9");
    check_base_class_offset(lv, (S2800C5*), 0, "S2800C9");
    /*is_ambiguous_... S2800C9::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*), 0, "S2800C9");
    /*is_ambiguous_... S2800C9::S2800C7 */ AMB_check_base_class_offset(lv, (S2800C7*), ABISELECT(16,8), "S2800C9");
    test_class_info(&lv, &cd_S2800C9);
    dp->~S2800C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2800C9(Test_S2800C9, "S2800C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S2800C9C1Ev();
extern void _ZN7S2800C9D2Ev();
Name_Map name_map_S2800C9[] = {
  NSPAIR(_ZN7S2800C9C1Ev),
  NSPAIR(_ZN7S2800C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C5;
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
static Base_Class bases_S2800C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2800C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S2800C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2800C7,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2800C9[];
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C9D1Ev();
extern void _ZN7S2800C9D0Ev();
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY vtc_S2800C9[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S2800C9[];
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C5__7S2800C9[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
static  VTT_ENTRY vtt_S2800C9[] = {
  {&(_ZTV7S2800C9[5]),  5,11},
  {&(_tg__ZTV7S2800C5__7S2800C9[5]),  5,6},
  {&(_tg__ZTV7S2800C5__7S2800C9[5]),  5,6},
  {&(_ZTV7S2800C9[5]),  5,11},
};
extern VTBL_ENTRY _ZTI7S2800C9[];
extern  VTBL_ENTRY _ZTV7S2800C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C9[];
Class_Descriptor cd_S2800C9 = {  "S2800C9", // class name
  bases_S2800C9, 5,
  &(vtc_S2800C9[0]), // expected_vtbl_contents
  &(vtt_S2800C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S2800C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2800C9),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2800C9),4, //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  S2800C8  : S2800C9 {
  ~S2800C8(); // tgen
  S2800C8(); // tgen
};
//SIG(-1 S2800C8) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd}}


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

static void Test_S2800C8()
{
  extern Class_Descriptor cd_S2800C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2800C8, buf);
    S2800C8 *dp, &lv = *(dp=new (buf) S2800C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2800C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2800C8)");
    check_base_class_offset(lv, (S19894C17_nt*)(S2800C5*)(S2800C9*), ABISELECT(24,12), "S2800C8");
    check_base_class_offset(lv, (S2800C7*)(S2800C5*)(S2800C9*), 0, "S2800C8");
    check_base_class_offset(lv, (S2800C5*)(S2800C9*), 0, "S2800C8");
    /*is_ambiguous_... S2800C9::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S2800C9*), 0, "S2800C8");
    /*is_ambiguous_... S2800C9::S2800C7 */ AMB_check_base_class_offset(lv, (S2800C7*)(S2800C9*), ABISELECT(16,8), "S2800C8");
    check_base_class_offset(lv, (S2800C9*), 0, "S2800C8");
    test_class_info(&lv, &cd_S2800C8);
    dp->~S2800C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2800C8(Test_S2800C8, "S2800C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S2800C8C1Ev();
extern void _ZN7S2800C8D1Ev();
Name_Map name_map_S2800C8[] = {
  NSPAIR(_ZN7S2800C8C1Ev),
  NSPAIR(_ZN7S2800C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C5;
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C9;
extern VTBL_ENTRY _ZTI7S2800C9[];
extern  VTBL_ENTRY _ZTV7S2800C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C9[];
static Base_Class bases_S2800C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2800C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2800C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2800C7,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2800C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2800C8[];
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C8D1Ev();
extern void _ZN7S2800C8D0Ev();
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY vtc_S2800C8[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C8[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C8D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2800C8[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S2800C8[];
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C9D1Ev();
extern void _ZN7S2800C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C9__7S2800C8[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D0Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C57S2800C9__7S2800C8[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
static  VTT_ENTRY vtt_S2800C8[] = {
  {&(_ZTV7S2800C8[5]),  5,11},
  {&(_tg__ZTV7S2800C9__7S2800C8[5]),  5,8},
  {&(_tg__ZTV7S2800C57S2800C9__7S2800C8[5]),  5,6},
  {&(_tg__ZTV7S2800C57S2800C9__7S2800C8[5]),  5,6},
  {&(_tg__ZTV7S2800C9__7S2800C8[5]),  5,8},
  {&(_ZTV7S2800C8[5]),  5,11},
};
extern VTBL_ENTRY _ZTI7S2800C8[];
extern  VTBL_ENTRY _ZTV7S2800C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C8[];
Class_Descriptor cd_S2800C8 = {  "S2800C8", // class name
  bases_S2800C8, 6,
  &(vtc_S2800C8[0]), // expected_vtbl_contents
  &(vtt_S2800C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S2800C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2800C8),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2800C8),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  S2800C2  : S19894C6_nt , S19894C34 , virtual S2800C5 , virtual S2800C8 {
  ~S2800C2(); // tgen
  S2800C2(); // tgen
};
//SIG(-1 S2800C2) C1{ BC2{ m Fp} BC3{ m} VBC4{ VBC5{ m} VBC6{ v1} FC6} VBC7{ BC8{ BC4 BC5 BC6 vd}}}


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

static void Test_S2800C2()
{
  extern Class_Descriptor cd_S2800C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S2800C2, buf);
    S2800C2 *dp, &lv = *(dp=new (buf) S2800C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S2800C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2800C2)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S2800C2");
    check_base_class_offset(lv, (S19894C34*), 0, "S2800C2");
    /*is_ambiguous_... S2800C2::S2800C5 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S2800C5*), 0, "S2800C2");
    check_base_class_offset(lv, (S19894C17_nt*)(S2800C5*)(S2800C9*)(S2800C8*), 0, "S2800C2");
    /*is_ambiguous_... S2800C2::S2800C5 */ AMB_check_base_class_offset(lv, (S2800C7*)(S2800C5*), 0, "S2800C2");
    check_base_class_offset(lv, (S2800C7*)(S2800C5*)(S2800C9*)(S2800C8*), 0, "S2800C2");
    /*is_ambiguous_... S2800C2::S2800C5 */ AMB_check_base_class_offset(lv, (S2800C5*), ABISELECT(16,8), "S2800C2");
    check_base_class_offset(lv, (S2800C5*)(S2800C9*)(S2800C8*), ABISELECT(32,16), "S2800C2");
    /*is_ambiguous_... S2800C9::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S2800C9*)(S2800C8*), ABISELECT(32,16), "S2800C2");
    /*is_ambiguous_... S2800C9::S2800C7 */ AMB_check_base_class_offset(lv, (S2800C7*)(S2800C9*)(S2800C8*), ABISELECT(48,24), "S2800C2");
    check_base_class_offset(lv, (S2800C9*)(S2800C8*), ABISELECT(32,16), "S2800C2");
    check_base_class_offset(lv, (S2800C8*), ABISELECT(32,16), "S2800C2");
    test_class_info(&lv, &cd_S2800C2);
    dp->~S2800C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2800C2(Test_S2800C2, "S2800C2", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S2800C2C1Ev();
extern void _ZN7S2800C2D1Ev();
Name_Map name_map_S2800C2[] = {
  NSPAIR(_ZN7S2800C2C1Ev),
  NSPAIR(_ZN7S2800C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C5;
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
extern Class_Descriptor cd_S2800C5;
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C9;
extern VTBL_ENTRY _ZTI7S2800C9[];
extern  VTBL_ENTRY _ZTV7S2800C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C9[];
extern Class_Descriptor cd_S2800C8;
extern VTBL_ENTRY _ZTI7S2800C8[];
extern  VTBL_ENTRY _ZTV7S2800C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C8[];
static Base_Class bases_S2800C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2800C7,    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
    4, //immediately_derived
  0, 1},
  {&cd_S2800C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //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_S2800C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2800C7,    ABISELECT(48,24), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2800C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2800C8,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2800C2[];
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C2D1Ev();
extern void _ZN7S2800C2D0Ev();
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2800C2D1Ev,_ZTv0_n24_N7S2800C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S2800C2D1Ev,_ZThn16_N7S2800C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2800C2D0Ev,_ZTv0_n24_N7S2800C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S2800C2D0Ev,_ZThn16_N7S2800C2D0Ev)() __attribute__((weak));
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY vtc_S2800C2[] = {
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2800C2D1Ev,_ZTv0_n24_N7S2800C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2800C2D0Ev,_ZTv0_n24_N7S2800C2D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S2800C2[];
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C5__7S2800C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C5__7S2800C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C8D1Ev();
extern void _ZN7S2800C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C8__7S2800C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C8[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C8D0Ev,
};
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C9D1Ev();
extern void _ZN7S2800C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C97S2800C8__7S2800C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D0Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C57S2800C97S2800C8__A1__7S2800C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C57S2800C97S2800C8__A1__7S2800C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C97S2800C8__7S2800C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C8__7S2800C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S2800C8[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
static  VTT_ENTRY vtt_S2800C2[] = {
  {&(_ZTV7S2800C2[7]),  7,28},
  {&(_ZTV7S2800C2[15]),  15,28},
  {&(_ZTV7S2800C2[7]),  7,28},
  {&(_ZTV7S2800C2[22]),  22,28},
  {&(_ZTV7S2800C2[27]),  27,28},
  {&(_tg__ZTV7S2800C5__7S2800C2[5]),  5,6},
  {&(_tg__ZTV7S2800C7__7S2800C5__7S2800C2[3]),  3,4},
  {&(_tg__ZTV7S2800C8__7S2800C2[5]),  5,8},
  {&(_tg__ZTV7S2800C97S2800C8__7S2800C2[5]),  5,8},
  {&(_tg__ZTV7S2800C57S2800C97S2800C8__A1__7S2800C2[5]),  5,6},
  {&(_tg__ZTV7S2800C7__7S2800C57S2800C97S2800C8__A1__7S2800C2[3]),  3,4},
  {&(_tg__ZTV7S2800C7__7S2800C97S2800C8__7S2800C2[3]),  3,4},
  {&(_tg__ZTV7S2800C7__7S2800C8__7S2800C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S2800C2[];
extern  VTBL_ENTRY _ZTV7S2800C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C2[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2800C2D0Ev,_ZTv0_n24_N7S2800C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2800C2D0Ev,_ZThn16_N7S2800C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2800C2D1Ev,_ZTv0_n24_N7S2800C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2800C2D1Ev,_ZThn16_N7S2800C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2800C2 = {  "S2800C2", // class name
  bases_S2800C2, 10,
  &(vtc_S2800C2[0]), // expected_vtbl_contents
  &(vtt_S2800C2[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S2800C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2800C2),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2800C2),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2800C1  : S2800C2 , S21216C28 {
  int s2800c1f0;
  ~S2800C1(); // tgen
  S2800C1(); // tgen
};
//SIG(1 S2800C1) C1{ BC2{ BC3{ m Fp} BC4{ m} VBC5{ VBC6{ m} VBC7{ v1} FC7} VBC8{ BC9{ BC5 BC6 BC7 vd}}} BC10{ m FC11{ VBC12{ m Fi} Fp}} Fi}


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

static void Test_S2800C1()
{
  extern Class_Descriptor cd_S2800C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S2800C1, buf);
    S2800C1 *dp, &lv = *(dp=new (buf) S2800C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S2800C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2800C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S2800C2*), ABISELECT(8,4), "S2800C1");
    check_base_class_offset(lv, (S19894C34*)(S2800C2*), 0, "S2800C1");
    /*is_ambiguous_... S2800C1::S2800C5 */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S2800C5*), 0, "S2800C1");
    check_base_class_offset(lv, (S19894C17_nt*)(S2800C5*)(S2800C9*)(S2800C8*), 0, "S2800C1");
    /*is_ambiguous_... S2800C1::S2800C5 */ AMB_check_base_class_offset(lv, (S2800C7*)(S2800C5*), 0, "S2800C1");
    check_base_class_offset(lv, (S2800C7*)(S2800C5*)(S2800C9*)(S2800C8*), 0, "S2800C1");
    /*is_ambiguous_... S2800C2::S2800C5 */ AMB_check_base_class_offset(lv, (S2800C5*)(S2800C2*), ABISELECT(48,24), "S2800C1");
    check_base_class_offset(lv, (S2800C5*)(S2800C9*)(S2800C8*), ABISELECT(64,32), "S2800C1");
    /*is_ambiguous_... S2800C9::S19894C17_nt */ AMB_check_base_class_offset(lv, (S19894C17_nt*)(S2800C9*)(S2800C8*), ABISELECT(64,32), "S2800C1");
    /*is_ambiguous_... S2800C9::S2800C7 */ AMB_check_base_class_offset(lv, (S2800C7*)(S2800C9*)(S2800C8*), ABISELECT(80,40), "S2800C1");
    check_base_class_offset(lv, (S2800C9*)(S2800C8*), ABISELECT(64,32), "S2800C1");
    check_base_class_offset(lv, (S2800C8*)(S2800C2*), ABISELECT(64,32), "S2800C1");
    check_base_class_offset(lv, (S2800C2*), 0, "S2800C1");
    check_base_class_offset(lv, (S21216C28*), ABISELECT(16,8), "S2800C1");
    check_field_offset(lv, s2800c1f0, ABISELECT(40,20), "S2800C1.s2800c1f0");
    test_class_info(&lv, &cd_S2800C1);
    dp->~S2800C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2800C1(Test_S2800C1, "S2800C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S2800C1C1Ev();
extern void _ZN7S2800C1D1Ev();
Name_Map name_map_S2800C1[] = {
  NSPAIR(_ZN7S2800C1C1Ev),
  NSPAIR(_ZN7S2800C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C5;
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
extern Class_Descriptor cd_S2800C5;
extern VTBL_ENTRY _ZTI7S2800C5[];
extern  VTBL_ENTRY _ZTV7S2800C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C5[];
extern Class_Descriptor cd_S19894C17_nt;
extern VTBL_ENTRY _ZTI12S19894C17_nt[];
extern Class_Descriptor cd_S2800C7;
extern VTBL_ENTRY _ZTI7S2800C7[];
extern  VTBL_ENTRY _ZTV7S2800C7[];
extern Class_Descriptor cd_S2800C9;
extern VTBL_ENTRY _ZTI7S2800C9[];
extern  VTBL_ENTRY _ZTV7S2800C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C9[];
extern Class_Descriptor cd_S2800C8;
extern VTBL_ENTRY _ZTI7S2800C8[];
extern  VTBL_ENTRY _ZTV7S2800C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C8[];
extern Class_Descriptor cd_S2800C2;
extern VTBL_ENTRY _ZTI7S2800C2[];
extern  VTBL_ENTRY _ZTV7S2800C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C2[];
extern Class_Descriptor cd_S21216C28;
extern VTBL_ENTRY _ZTI9S21216C28[];
static Base_Class bases_S2800C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2800C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2800C5,    ABISELECT(48,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2800C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19894C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2800C7,    ABISELECT(80,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2800C9,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2800C8,    ABISELECT(64,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2800C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C28,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2800C1[];
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C1D1Ev();
extern void _ZN7S2800C1D0Ev();
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2800C1D1Ev,_ZTv0_n24_N7S2800C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2800C1D1Ev,_ZThn32_N7S2800C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2800C1D0Ev,_ZTv0_n24_N7S2800C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S2800C1D0Ev,_ZThn32_N7S2800C1D0Ev)() __attribute__((weak));
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY vtc_S2800C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C1[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C1D0Ev,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S2800C1[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2800C1[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2800C1D1Ev,_ZTv0_n24_N7S2800C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2800C1D0Ev,_ZTv0_n24_N7S2800C1D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S2800C1[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S2800C1[];
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C2D1Ev();
extern void _ZN7S2800C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C2__7S2800C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C2D0Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C5__7S2800C2__7S2800C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2800C2D1Ev,_ZTv0_n24_N7S2800C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S2800C2D1Ev,_ZThn32_N7S2800C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2800C2D0Ev,_ZTv0_n24_N7S2800C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S2800C2D0Ev,_ZThn32_N7S2800C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2800C8__7S2800C2__7S2800C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2800C2D1Ev,_ZTv0_n24_N7S2800C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2800C2D0Ev,_ZTv0_n24_N7S2800C2D0Ev),
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C77S2800C97S2800C8__A1__7S2800C2__7S2800C1[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S2800C2[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C5__7S2800C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C5__7S2800C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C8D1Ev();
extern void _ZN7S2800C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C8__7S2800C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C8[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C8D0Ev,
};
extern void _ZN7S2800C72v1Ev();
extern void _ZN7S2800C9D1Ev();
extern void _ZN7S2800C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C97S2800C8__7S2800C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2800C9D0Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C57S2800C97S2800C8__A1__7S2800C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C57S2800C97S2800C8__A1__7S2800C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S2800C5[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C97S2800C8__7S2800C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S2800C9[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
extern void _ZN7S2800C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2800C7__7S2800C8__7S2800C1[] = {
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S2800C8[0]),
  (VTBL_ENTRY)&_ZN7S2800C72v1Ev,
};
static  VTT_ENTRY vtt_S2800C1[] = {
  {&(_ZTV7S2800C1[7]),  7,28},
  {&(_tg__ZTV7S2800C2__7S2800C1[7]),  7,10},
  {&(_tg__ZTV7S2800C5__7S2800C2__7S2800C1[5]),  5,6},
  {&(_tg__ZTV7S2800C2__7S2800C1[7]),  7,10},
  {&(_tg__ZTV7S2800C8__7S2800C2__7S2800C1[6]),  6,9},
  {&(_tg__ZTV7S2800C77S2800C97S2800C8__A1__7S2800C2__7S2800C1[2]),  2,3},
  {&(_ZTV7S2800C1[15]),  15,28},
  {&(_ZTV7S2800C1[7]),  7,28},
  {&(_ZTV7S2800C1[22]),  22,28},
  {&(_ZTV7S2800C1[27]),  27,28},
  {&(_tg__ZTV7S2800C5__7S2800C1[5]),  5,6},
  {&(_tg__ZTV7S2800C7__7S2800C5__7S2800C1[3]),  3,4},
  {&(_tg__ZTV7S2800C8__7S2800C1[5]),  5,8},
  {&(_tg__ZTV7S2800C97S2800C8__7S2800C1[5]),  5,8},
  {&(_tg__ZTV7S2800C57S2800C97S2800C8__A1__7S2800C1[5]),  5,6},
  {&(_tg__ZTV7S2800C7__7S2800C57S2800C97S2800C8__A1__7S2800C1[3]),  3,4},
  {&(_tg__ZTV7S2800C7__7S2800C97S2800C8__7S2800C1[3]),  3,4},
  {&(_tg__ZTV7S2800C7__7S2800C8__7S2800C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S2800C1[];
extern  VTBL_ENTRY _ZTV7S2800C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2800C1[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2800C2D0Ev,_ZTv0_n24_N7S2800C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2800C2D0Ev,_ZThn32_N7S2800C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2800C2D1Ev,_ZTv0_n24_N7S2800C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2800C2D1Ev,_ZThn32_N7S2800C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2800C1D0Ev,_ZTv0_n24_N7S2800C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2800C1D0Ev,_ZThn32_N7S2800C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2800C1D1Ev,_ZTv0_n24_N7S2800C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2800C1D1Ev,_ZThn32_N7S2800C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2800C1 = {  "S2800C1", // class name
  bases_S2800C1, 12,
  &(vtc_S2800C1[0]), // expected_vtbl_contents
  &(vtt_S2800C1[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S2800C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2800C1),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2800C1),18, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19218C2  : S19894C34 {
  int s19218c2f0;
};
//SIG(-1 S19218C2) C1{ BC2{ m} Fi}



static void Test_S19218C2()
{
  extern Class_Descriptor cd_S19218C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S19218C2, buf);
    S19218C2 &lv = *(new (buf) S19218C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S19218C2)");
    check2(__alignof__(lv), 4, "__alignof__(S19218C2)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19218C2");
    check_field_offset(lv, s19218c2f0, 0, "S19218C2.s19218c2f0");
    test_class_info(&lv, &cd_S19218C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19218C2(Test_S19218C2, "S19218C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19218C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19218C2[];
Class_Descriptor cd_S19218C2 = {  "S19218C2", // class name
  bases_S19218C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI8S19218C2),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  S19218C6  : S21216C26_nt , virtual S19894C34 {
  int s19218c6f0;
  virtual  ~S19218C6(); // _ZN8S19218C6D2Ev
  S19218C6(); // tgen
};
//SIG(-1 S19218C6) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S19218C6()
{
  extern Class_Descriptor cd_S19218C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19218C6, buf);
    S19218C6 *dp, &lv = *(dp=new (buf) S19218C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19218C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19218C6)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S19218C6");
    check_base_class_offset(lv, (S19894C34*), 0, "S19218C6");
    check_field_offset(lv, s19218c6f0, ABISELECT(8,4), "S19218C6.s19218c6f0");
    test_class_info(&lv, &cd_S19218C6);
    dp->~S19218C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19218C6(Test_S19218C6, "S19218C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19218C6C1Ev();
extern void _ZN8S19218C6D2Ev();
Name_Map name_map_S19218C6[] = {
  NSPAIR(_ZN8S19218C6C1Ev),
  NSPAIR(_ZN8S19218C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19218C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19218C6[];
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY vtc_S19218C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
extern VTBL_ENTRY _ZTV8S19218C6[];
static  VTT_ENTRY vtt_S19218C6[] = {
  {&(_ZTV8S19218C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
Class_Descriptor cd_S19218C6 = {  "S19218C6", // class name
  bases_S19218C6, 2,
  &(vtc_S19218C6[0]), // expected_vtbl_contents
  &(vtt_S19218C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19218C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19218C6),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19218C6),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19218C5  : virtual S19894C34 , S19218C6 , S21216C26_nt {
  long s19218c5f0;
  ~S19218C5(); // tgen
  S19218C5(); // tgen
};
//SIG(-1 S19218C5) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S19218C5()
{
  extern Class_Descriptor cd_S19218C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19218C5, buf);
    S19218C5 *dp, &lv = *(dp=new (buf) S19218C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19218C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19218C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19218C5");
    check_base_class_offset(lv, (S19894C34*)(S19218C6*), 0, "S19218C5");
    check_base_class_offset(lv, (S21216C26_nt*)(S19218C6*), 0, "S19218C5");
    check_base_class_offset(lv, (S19218C6*), 0, "S19218C5");
    /*is_ambiguous_... S19218C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S19218C5");
    check_field_offset(lv, s19218c5f0, ABISELECT(24,12), "S19218C5.s19218c5f0");
    test_class_info(&lv, &cd_S19218C5);
    dp->~S19218C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19218C5(Test_S19218C5, "S19218C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19218C5C1Ev();
extern void _ZN8S19218C5D1Ev();
Name_Map name_map_S19218C5[] = {
  NSPAIR(_ZN8S19218C5C1Ev),
  NSPAIR(_ZN8S19218C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C6;
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S19218C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19218C6,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI8S19218C5[];
extern void _ZN8S19218C5D1Ev();
extern void _ZN8S19218C5D0Ev();
extern void ABISELECT(_ZThn16_N8S19218C5D1Ev,_ZThn8_N8S19218C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S19218C5D0Ev,_ZThn8_N8S19218C5D0Ev)();
static  VTBL_ENTRY vtc_S19218C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C5[0]),
  (VTBL_ENTRY)&_ZN8S19218C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C5D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19218C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19218C5D1Ev,_ZThn8_N8S19218C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19218C5D0Ev,_ZThn8_N8S19218C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19218C5[];
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C6__8S19218C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
static  VTT_ENTRY vtt_S19218C5[] = {
  {&(_ZTV8S19218C5[3]),  3,9},
  {&(_tg__ZTV8S19218C6__8S19218C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19218C5[];
extern  VTBL_ENTRY _ZTV8S19218C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C5[];
Class_Descriptor cd_S19218C5 = {  "S19218C5", // class name
  bases_S19218C5, 4,
  &(vtc_S19218C5[0]), // expected_vtbl_contents
  &(vtt_S19218C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19218C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19218C5),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19218C5),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  S19218C4  : S19218C5 , virtual S21216C26_nt , S19894C34 , virtual S19218C6 {
  virtual  ~S19218C4(); // _ZN8S19218C4D2Ev
  S19218C4(); // tgen
};
//SIG(-1 S19218C4) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} VBC3 vd Fi} BC5 Fl} VBC5 BC3 VBC4 vd}


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

static void Test_S19218C4()
{
  extern Class_Descriptor cd_S19218C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19218C4, buf);
    S19218C4 *dp, &lv = *(dp=new (buf) S19218C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19218C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19218C4)");
    check_base_class_offset(lv, (S19894C34*)(S19218C5*), ABISELECT(32,16), "S19218C4");
    check_base_class_offset(lv, (S19894C34*)(S19218C6*)(S19218C5*), ABISELECT(32,16), "S19218C4");
    /*is_ambiguous_... S19218C4::S19218C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19218C6*), ABISELECT(32,16), "S19218C4");
    check_base_class_offset(lv, (S21216C26_nt*)(S19218C6*)(S19218C5*), 0, "S19218C4");
    check_base_class_offset(lv, (S19218C6*)(S19218C5*), 0, "S19218C4");
    /*is_ambiguous_... S19218C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19218C5*), ABISELECT(16,8), "S19218C4");
    check_base_class_offset(lv, (S19218C5*), 0, "S19218C4");
    /*is_ambiguous_... S19218C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(32,16), "S19218C4");
    /*is_ambiguous_... S19218C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19218C4");
    /*is_ambiguous_... S19218C4::S19218C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19218C6*), ABISELECT(40,20), "S19218C4");
    /*is_ambiguous_... S19218C4::S19218C6 */ AMB_check_base_class_offset(lv, (S19218C6*), ABISELECT(40,20), "S19218C4");
    test_class_info(&lv, &cd_S19218C4);
    dp->~S19218C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19218C4(Test_S19218C4, "S19218C4", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19218C4C1Ev();
extern void _ZN8S19218C4D2Ev();
Name_Map name_map_S19218C4[] = {
  NSPAIR(_ZN8S19218C4C1Ev),
  NSPAIR(_ZN8S19218C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C6;
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C5;
extern VTBL_ENTRY _ZTI8S19218C5[];
extern  VTBL_ENTRY _ZTV8S19218C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C6;
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
static Base_Class bases_S19218C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19218C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19218C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19218C6,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19218C4[];
extern void _ZN8S19218C4D1Ev();
extern void _ZN8S19218C4D0Ev();
extern void ABISELECT(_ZThn16_N8S19218C4D1Ev,_ZThn8_N8S19218C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19218C4D0Ev,_ZThn8_N8S19218C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19218C4D1Ev,_ZTv0_n12_N8S19218C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19218C4D1Ev,_ZThn16_N8S19218C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19218C4D0Ev,_ZTv0_n12_N8S19218C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19218C4D0Ev,_ZThn16_N8S19218C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19218C4D1Ev,_ZTv0_n16_N8S19218C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19218C4D1Ev,_ZThn20_N8S19218C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19218C4D0Ev,_ZTv0_n16_N8S19218C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19218C4D0Ev,_ZThn20_N8S19218C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19218C4[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&_ZN8S19218C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C4D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19218C4D1Ev,_ZThn8_N8S19218C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19218C4D0Ev,_ZThn8_N8S19218C4D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19218C4D1Ev,_ZTv0_n12_N8S19218C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19218C4D0Ev,_ZTv0_n12_N8S19218C4D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C4D1Ev,_ZTv0_n16_N8S19218C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C4D0Ev,_ZTv0_n16_N8S19218C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19218C4[];
extern void _ZN8S19218C5D1Ev();
extern void _ZN8S19218C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C5__8S19218C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C5[0]),
  (VTBL_ENTRY)&_ZN8S19218C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C5D0Ev,
};
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C68S19218C5__8S19218C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C6__A1__8S19218C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
static  VTT_ENTRY vtt_S19218C4[] = {
  {&(_ZTV8S19218C4[5]),  5,22},
  {&(_tg__ZTV8S19218C5__8S19218C4[3]),  3,5},
  {&(_tg__ZTV8S19218C68S19218C5__8S19218C4[3]),  3,5},
  {&(_ZTV8S19218C4[14]),  14,22},
  {&(_ZTV8S19218C4[20]),  20,22},
  {&(_tg__ZTV8S19218C6__A1__8S19218C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19218C4[];
extern  VTBL_ENTRY _ZTV8S19218C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C4[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C4D0Ev,_ZTv0_n16_N8S19218C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19218C4D0Ev,_ZThn20_N8S19218C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C4D1Ev,_ZTv0_n16_N8S19218C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19218C4D1Ev,_ZThn20_N8S19218C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19218C4D0Ev,_ZTv0_n12_N8S19218C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19218C4D0Ev,_ZThn16_N8S19218C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19218C4D1Ev,_ZTv0_n12_N8S19218C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19218C4D1Ev,_ZThn16_N8S19218C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19218C4 = {  "S19218C4", // class name
  bases_S19218C4, 9,
  &(vtc_S19218C4[0]), // expected_vtbl_contents
  &(vtt_S19218C4[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19218C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19218C4),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19218C4),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19218C8  : virtual S19218C6 {
  virtual  ~S19218C8(); // _ZN8S19218C8D2Ev
  S19218C8(); // tgen
};
//SIG(-1 S19218C8) C1{ VBC2{ BC3{ vd m} VBC4{ m} vd Fi} vd}


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

static void Test_S19218C8()
{
  extern Class_Descriptor cd_S19218C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19218C8, buf);
    S19218C8 *dp, &lv = *(dp=new (buf) S19218C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19218C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19218C8)");
    check_base_class_offset(lv, (S21216C26_nt*)(S19218C6*), ABISELECT(8,4), "S19218C8");
    check_base_class_offset(lv, (S19894C34*)(S19218C6*), 0, "S19218C8");
    check_base_class_offset(lv, (S19218C6*), ABISELECT(8,4), "S19218C8");
    test_class_info(&lv, &cd_S19218C8);
    dp->~S19218C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19218C8(Test_S19218C8, "S19218C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19218C8C1Ev();
extern void _ZN8S19218C8D2Ev();
Name_Map name_map_S19218C8[] = {
  NSPAIR(_ZN8S19218C8C1Ev),
  NSPAIR(_ZN8S19218C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19218C6;
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
static Base_Class bases_S19218C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19218C6,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19218C8[];
extern void _ZN8S19218C8D1Ev();
extern void _ZN8S19218C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19218C8D1Ev,_ZTv0_n16_N8S19218C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19218C8D1Ev,_ZThn4_N8S19218C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19218C8D0Ev,_ZTv0_n16_N8S19218C8D0Ev)();
extern void ABISELECT(_ZThn8_N8S19218C8D0Ev,_ZThn4_N8S19218C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19218C8[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C8[0]),
  (VTBL_ENTRY)&_ZN8S19218C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19218C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C8D1Ev,_ZTv0_n16_N8S19218C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C8D0Ev,_ZTv0_n16_N8S19218C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19218C8[];
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C6__8S19218C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
static  VTT_ENTRY vtt_S19218C8[] = {
  {&(_ZTV8S19218C8[4]),  4,12},
  {&(_ZTV8S19218C8[10]),  10,12},
  {&(_tg__ZTV8S19218C6__8S19218C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19218C8[];
extern  VTBL_ENTRY _ZTV8S19218C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C8[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C8D0Ev,_ZTv0_n16_N8S19218C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19218C8D0Ev,_ZThn4_N8S19218C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C8D1Ev,_ZTv0_n16_N8S19218C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19218C8D1Ev,_ZThn4_N8S19218C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19218C8 = {  "S19218C8", // class name
  bases_S19218C8, 3,
  &(vtc_S19218C8[0]), // expected_vtbl_contents
  &(vtt_S19218C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19218C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19218C8),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19218C8),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19218C1  : virtual S19218C2 , virtual S19218C4 , S19894C34 , virtual S19218C8 {
  void *s19218c1f0;
  virtual  ~S19218C1(); // _ZN8S19218C1D2Ev
  S19218C1(); // tgen
};
//SIG(1 S19218C1) C1{ VBC2{ BC3{ m} Fi} VBC4{ BC5{ VBC3 BC6{ BC7{ vd m} VBC3 vd Fi} BC7 Fl} VBC7 BC3 VBC6 vd} BC3 VBC8{ VBC6 vd} vd Fp}


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

static void Test_S19218C1()
{
  extern Class_Descriptor cd_S19218C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19218C1, buf);
    S19218C1 *dp, &lv = *(dp=new (buf) S19218C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19218C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19218C1)");
    check_base_class_offset(lv, (S19894C34*)(S19218C2*), ABISELECT(16,8), "S19218C1");
    check_base_class_offset(lv, (S19218C2*), ABISELECT(16,8), "S19218C1");
    check_base_class_offset(lv, (S19894C34*)(S19218C5*)(S19218C4*), ABISELECT(56,28), "S19218C1");
    check_base_class_offset(lv, (S19894C34*)(S19218C6*)(S19218C5*)(S19218C4*), ABISELECT(56,28), "S19218C1");
    /*is_ambiguous_... S19218C1::S19218C6 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19218C6*), ABISELECT(56,28), "S19218C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S19218C6*)(S19218C5*)(S19218C4*), ABISELECT(24,12), "S19218C1");
    check_base_class_offset(lv, (S19218C6*)(S19218C5*)(S19218C4*), ABISELECT(24,12), "S19218C1");
    /*is_ambiguous_... S19218C5::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19218C5*)(S19218C4*), ABISELECT(40,20), "S19218C1");
    check_base_class_offset(lv, (S19218C5*)(S19218C4*), ABISELECT(24,12), "S19218C1");
    /*is_ambiguous_... S19218C4::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19218C4*), 0, "S19218C1");
    /*is_ambiguous_... S19218C4::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19218C4*), ABISELECT(24,12), "S19218C1");
    /*is_ambiguous_... S19218C1::S19218C6 */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S19218C6*), ABISELECT(56,28), "S19218C1");
    /*is_ambiguous_... S19218C4::S19218C6 */ AMB_check_base_class_offset(lv, (S19218C6*)(S19218C4*), ABISELECT(56,28), "S19218C1");
    check_base_class_offset(lv, (S19218C6*)(S19218C8*), ABISELECT(56,28), "S19218C1");
    check_base_class_offset(lv, (S19218C4*), ABISELECT(24,12), "S19218C1");
    /*is_ambiguous_... S19218C1::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19218C1");
    check_base_class_offset(lv, (S19218C8*), ABISELECT(72,36), "S19218C1");
    check_field_offset(lv, s19218c1f0, ABISELECT(8,4), "S19218C1.s19218c1f0");
    test_class_info(&lv, &cd_S19218C1);
    dp->~S19218C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19218C1(Test_S19218C1, "S19218C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19218C1C1Ev();
extern void _ZN8S19218C1D2Ev();
Name_Map name_map_S19218C1[] = {
  NSPAIR(_ZN8S19218C1C1Ev),
  NSPAIR(_ZN8S19218C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19218C2;
extern VTBL_ENTRY _ZTI8S19218C2[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C6;
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C5;
extern VTBL_ENTRY _ZTI8S19218C5[];
extern  VTBL_ENTRY _ZTV8S19218C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19218C6;
extern VTBL_ENTRY _ZTI8S19218C6[];
extern  VTBL_ENTRY _ZTV8S19218C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C6[];
extern Class_Descriptor cd_S19218C4;
extern VTBL_ENTRY _ZTI8S19218C4[];
extern  VTBL_ENTRY _ZTV8S19218C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19218C8;
extern VTBL_ENTRY _ZTI8S19218C8[];
extern  VTBL_ENTRY _ZTV8S19218C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C8[];
static Base_Class bases_S19218C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19218C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21216C26_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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19218C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(40,20), //bcp->offset
    19, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19218C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19218C6,    ABISELECT(56,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19218C4,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19218C8,    ABISELECT(72,36), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19218C1[];
extern void ABISELECT(_ZTv0_n24_N8S19218C1D1Ev,_ZTv0_n12_N8S19218C1D1Ev)();
extern void _ZN8S19218C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19218C1D0Ev,_ZTv0_n12_N8S19218C1D0Ev)();
extern void _ZN8S19218C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19218C1D1Ev,_ZTv0_n24_N8S19218C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19218C1D1Ev,_ZThn12_N8S19218C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19218C1D0Ev,_ZTv0_n24_N8S19218C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19218C1D0Ev,_ZThn12_N8S19218C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S19218C1D1Ev,_ZTvn8_n24_N8S19218C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19218C1D0Ev,_ZTvn8_n24_N8S19218C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19218C1D1Ev,_ZTv0_n16_N8S19218C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19218C1D1Ev,_ZThn28_N8S19218C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19218C1D0Ev,_ZTv0_n16_N8S19218C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19218C1D0Ev,_ZThn28_N8S19218C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19218C1D1Ev,_ZTv0_n20_N8S19218C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19218C1D1Ev,_ZThn36_N8S19218C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19218C1D0Ev,_ZTv0_n20_N8S19218C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19218C1D0Ev,_ZThn36_N8S19218C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19218C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  ABISELECT(56,28),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19218C1D1Ev,_ZTv0_n12_N8S19218C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19218C1D0Ev,_ZTv0_n12_N8S19218C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19218C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19218C1D1Ev,_ZTv0_n24_N8S19218C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19218C1D0Ev,_ZTv0_n24_N8S19218C1D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19218C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19218C1D1Ev,_ZTvn8_n24_N8S19218C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19218C1D0Ev,_ZTvn8_n24_N8S19218C1D0Ev),
  ABISELECT(-56,-28),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19218C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C1D1Ev,_ZTv0_n16_N8S19218C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C1D0Ev,_ZTv0_n16_N8S19218C1D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19218C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19218C1D1Ev,_ZTv0_n20_N8S19218C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19218C1D0Ev,_ZTv0_n20_N8S19218C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19218C1[];
extern void _ZN8S19218C4D1Ev();
extern void _ZN8S19218C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C4__8S19218C1[] = {
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&_ZN8S19218C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C4D0Ev,
};
extern void _ZN8S19218C5D1Ev();
extern void _ZN8S19218C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C58S19218C4__8S19218C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C5[0]),
  (VTBL_ENTRY)&_ZN8S19218C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C5D0Ev,
};
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C68S19218C58S19218C4__8S19218C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19218C4D1Ev,_ZTv0_n12_N8S19218C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19218C4D0Ev,_ZTv0_n12_N8S19218C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S21216C26_nt__A2__8S19218C4__8S19218C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19218C4D1Ev,_ZTv0_n12_N8S19218C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19218C4D0Ev,_ZTv0_n12_N8S19218C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19218C4D1Ev,_ZTv0_n16_N8S19218C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19218C4D1Ev,_ZThn16_N8S19218C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19218C4D0Ev,_ZTv0_n16_N8S19218C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19218C4D0Ev,_ZThn16_N8S19218C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19218C6__A1__8S19218C4__8S19218C1[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19218C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C4D1Ev,_ZTv0_n16_N8S19218C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C4D0Ev,_ZTv0_n16_N8S19218C4D0Ev),
};
extern void _ZN8S19218C6D1Ev();
extern void _ZN8S19218C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C6__A1__8S19218C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C6[0]),
  (VTBL_ENTRY)&_ZN8S19218C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C6D0Ev,
};
extern void _ZN8S19218C8D1Ev();
extern void _ZN8S19218C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19218C8__8S19218C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19218C8[0]),
  (VTBL_ENTRY)&_ZN8S19218C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19218C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19218C8D1Ev,_ZTv0_n16_N8S19218C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19218C8D0Ev,_ZTv0_n16_N8S19218C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19218C6__8S19218C8__8S19218C1[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19218C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C8D1Ev,_ZTv0_n16_N8S19218C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19218C8D0Ev,_ZTv0_n16_N8S19218C8D0Ev),
};
static  VTT_ENTRY vtt_S19218C1[] = {
  {&(_ZTV8S19218C1[9]),  9,36},
  {&(_ZTV8S19218C1[17]),  17,36},
  {&(_ZTV8S19218C1[21]),  21,36},
  {&(_ZTV8S19218C1[9]),  9,36},
  {&(_ZTV8S19218C1[27]),  27,36},
  {&(_ZTV8S19218C1[34]),  34,36},
  {&(_tg__ZTV8S19218C4__8S19218C1[5]),  5,7},
  {&(_tg__ZTV8S19218C58S19218C4__8S19218C1[3]),  3,5},
  {&(_tg__ZTV8S19218C68S19218C58S19218C4__8S19218C1[3]),  3,5},
  {&(_tg__ZTV12S21216C26_nt__A2__8S19218C4__8S19218C1[3]),  3,5},
  {&(_tg__ZTV8S19218C6__A1__8S19218C4__8S19218C1[4]),  4,6},
  {&(_tg__ZTV8S19218C6__A1__8S19218C1[3]),  3,5},
  {&(_tg__ZTV8S19218C8__8S19218C1[4]),  4,6},
  {&(_tg__ZTV8S19218C6__8S19218C8__8S19218C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19218C1[];
extern  VTBL_ENTRY _ZTV8S19218C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19218C1[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C4D0Ev,_ZTv0_n16_N8S19218C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19218C4D0Ev,_ZThn16_N8S19218C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C4D1Ev,_ZTv0_n16_N8S19218C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19218C4D1Ev,_ZThn16_N8S19218C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19218C1D0Ev,_ZTv0_n20_N8S19218C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19218C1D0Ev,_ZThn36_N8S19218C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19218C1D1Ev,_ZTv0_n20_N8S19218C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19218C1D1Ev,_ZThn36_N8S19218C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C1D0Ev,_ZTv0_n16_N8S19218C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19218C1D0Ev,_ZThn28_N8S19218C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19218C1D1Ev,_ZTv0_n16_N8S19218C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19218C1D1Ev,_ZThn28_N8S19218C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19218C1D0Ev,_ZTv0_n24_N8S19218C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19218C1D0Ev,_ZThn12_N8S19218C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19218C1D1Ev,_ZTv0_n24_N8S19218C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19218C1D1Ev,_ZThn12_N8S19218C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19218C1D0Ev,_ZTv0_n12_N8S19218C1D0Ev), // 
  (VTBL_ENTRY)_ZN8S19218C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19218C1D1Ev,_ZTv0_n12_N8S19218C1D1Ev), // 
  (VTBL_ENTRY)_ZN8S19218C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19218C1 = {  "S19218C1", // class name
  bases_S19218C1, 14,
  &(vtc_S19218C1[0]), // expected_vtbl_contents
  &(vtt_S19218C1[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19218C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19218C1),36, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19218C1),14, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S19096C6C1Ev();
extern void _ZN8S19096C6D1Ev();
Name_Map name_map_S19096C6[] = {
  NSPAIR(_ZN8S19096C6C1Ev),
  NSPAIR(_ZN8S19096C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19096C6[];
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C6[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
Class_Descriptor cd_S19096C6 = {  "S19096C6", // class name
  0,0,//no base classes
  &(vtc_S19096C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19096C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19096C6),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  S19096C4  : virtual S19894C34 , virtual S19096C6 {
  ::S19096C6 s19096c4f0;
  ~S19096C4(); // tgen
  S19096C4(); // tgen
};
//SIG(-1 S19096C4) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S19096C4()
{
  extern Class_Descriptor cd_S19096C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19096C4, buf);
    S19096C4 *dp, &lv = *(dp=new (buf) S19096C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19096C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19096C4)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19096C4");
    check_base_class_offset(lv, (S19096C6*), 0, "S19096C4");
    check_field_offset(lv, s19096c4f0, ABISELECT(8,4), "S19096C4.s19096c4f0");
    test_class_info(&lv, &cd_S19096C4);
    dp->~S19096C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19096C4(Test_S19096C4, "S19096C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19096C4C1Ev();
extern void _ZN8S19096C4D1Ev();
Name_Map name_map_S19096C4[] = {
  NSPAIR(_ZN8S19096C4C1Ev),
  NSPAIR(_ZN8S19096C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
static Base_Class bases_S19096C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19096C6,    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 _ZTI8S19096C4[];
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C4[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S19096C4[];
static  VTT_ENTRY vtt_S19096C4[] = {
  {&(_ZTV8S19096C4[5]),  5,6},
  {&(_ZTV8S19096C4[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
Class_Descriptor cd_S19096C4 = {  "S19096C4", // class name
  bases_S19096C4, 2,
  &(vtc_S19096C4[0]), // expected_vtbl_contents
  &(vtt_S19096C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19096C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19096C4),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19096C4),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  S19096C3  : S19096C4 , S19894C34 , S19096C6 {
  virtual  ~S19096C3(); // _ZN8S19096C3D2Ev
  S19096C3(); // tgen
};
//SIG(-1 S19096C3) C1{ BC2{ VBC3{ m} VBC4{ v1} FC4} BC3 BC4 vd}


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

static void Test_S19096C3()
{
  extern Class_Descriptor cd_S19096C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19096C3, buf);
    S19096C3 *dp, &lv = *(dp=new (buf) S19096C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19096C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19096C3)");
    check_base_class_offset(lv, (S19894C34*)(S19096C4*), ABISELECT(24,12), "S19096C3");
    check_base_class_offset(lv, (S19096C6*)(S19096C4*), 0, "S19096C3");
    check_base_class_offset(lv, (S19096C4*), 0, "S19096C3");
    /*is_ambiguous_... S19096C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*), 0, "S19096C3");
    /*is_ambiguous_... S19096C3::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*), ABISELECT(16,8), "S19096C3");
    test_class_info(&lv, &cd_S19096C3);
    dp->~S19096C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19096C3(Test_S19096C3, "S19096C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19096C3C1Ev();
extern void _ZN8S19096C3D2Ev();
Name_Map name_map_S19096C3[] = {
  NSPAIR(_ZN8S19096C3C1Ev),
  NSPAIR(_ZN8S19096C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
static Base_Class bases_S19096C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19096C6,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19096C6,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19096C3[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C3D1Ev();
extern void _ZN8S19096C3D0Ev();
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C3[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S19096C3[];
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__8S19096C3[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
static  VTT_ENTRY vtt_S19096C3[] = {
  {&(_ZTV8S19096C3[5]),  5,11},
  {&(_tg__ZTV8S19096C4__8S19096C3[5]),  5,6},
  {&(_tg__ZTV8S19096C4__8S19096C3[5]),  5,6},
  {&(_ZTV8S19096C3[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S19096C3[];
extern  VTBL_ENTRY _ZTV8S19096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C3[];
Class_Descriptor cd_S19096C3 = {  "S19096C3", // class name
  bases_S19096C3, 5,
  &(vtc_S19096C3[0]), // expected_vtbl_contents
  &(vtt_S19096C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19096C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19096C3),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19096C3),4, //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  S19096C2  : S19096C3 {
  virtual  ~S19096C2(); // _ZN8S19096C2D2Ev
  S19096C2(); // tgen
};
//SIG(-1 S19096C2) C1{ BC2{ BC3{ VBC4{ m} VBC5{ v1} FC5} BC4 BC5 vd} vd}


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

static void Test_S19096C2()
{
  extern Class_Descriptor cd_S19096C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19096C2, buf);
    S19096C2 *dp, &lv = *(dp=new (buf) S19096C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19096C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19096C2)");
    check_base_class_offset(lv, (S19894C34*)(S19096C4*)(S19096C3*), ABISELECT(24,12), "S19096C2");
    check_base_class_offset(lv, (S19096C6*)(S19096C4*)(S19096C3*), 0, "S19096C2");
    check_base_class_offset(lv, (S19096C4*)(S19096C3*), 0, "S19096C2");
    /*is_ambiguous_... S19096C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C3*), 0, "S19096C2");
    /*is_ambiguous_... S19096C3::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C3*), ABISELECT(16,8), "S19096C2");
    check_base_class_offset(lv, (S19096C3*), 0, "S19096C2");
    test_class_info(&lv, &cd_S19096C2);
    dp->~S19096C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19096C2(Test_S19096C2, "S19096C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19096C2C1Ev();
extern void _ZN8S19096C2D2Ev();
Name_Map name_map_S19096C2[] = {
  NSPAIR(_ZN8S19096C2C1Ev),
  NSPAIR(_ZN8S19096C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C3;
extern VTBL_ENTRY _ZTI8S19096C3[];
extern  VTBL_ENTRY _ZTV8S19096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C3[];
static Base_Class bases_S19096C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19096C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19096C6,    ABISELECT(16,8), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19096C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19096C2[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C2D1Ev();
extern void _ZN8S19096C2D0Ev();
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C2[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C2D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C2[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S19096C2[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C3D1Ev();
extern void _ZN8S19096C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C3__8S19096C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D0Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C48S19096C3__8S19096C2[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
static  VTT_ENTRY vtt_S19096C2[] = {
  {&(_ZTV8S19096C2[5]),  5,11},
  {&(_tg__ZTV8S19096C3__8S19096C2[5]),  5,8},
  {&(_tg__ZTV8S19096C48S19096C3__8S19096C2[5]),  5,6},
  {&(_tg__ZTV8S19096C48S19096C3__8S19096C2[5]),  5,6},
  {&(_tg__ZTV8S19096C3__8S19096C2[5]),  5,8},
  {&(_ZTV8S19096C2[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S19096C2[];
extern  VTBL_ENTRY _ZTV8S19096C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C2[];
Class_Descriptor cd_S19096C2 = {  "S19096C2", // class name
  bases_S19096C2, 6,
  &(vtc_S19096C2[0]), // expected_vtbl_contents
  &(vtt_S19096C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19096C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19096C2),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19096C2),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  S19096C9  : S19096C6 , S19894C6_nt , virtual S19096C4 {
  virtual void  v2(); // _ZN8S19096C92v2Ev
  ~S19096C9(); // tgen
  S19096C9(); // tgen
};
//SIG(-1 S19096C9) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S19096C9()
{
  extern Class_Descriptor cd_S19096C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19096C9, buf);
    S19096C9 *dp, &lv = *(dp=new (buf) S19096C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19096C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19096C9)");
    /*is_ambiguous_... S19096C9::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*), 0, "S19096C9");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19096C9");
    check_base_class_offset(lv, (S19894C34*)(S19096C4*), 0, "S19096C9");
    check_base_class_offset(lv, (S19096C6*)(S19096C4*), ABISELECT(16,8), "S19096C9");
    check_base_class_offset(lv, (S19096C4*), ABISELECT(16,8), "S19096C9");
    test_class_info(&lv, &cd_S19096C9);
    dp->~S19096C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19096C9(Test_S19096C9, "S19096C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19096C9C1Ev();
extern void _ZN8S19096C9D1Ev();
Name_Map name_map_S19096C9[] = {
  NSPAIR(_ZN8S19096C9C1Ev),
  NSPAIR(_ZN8S19096C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
static Base_Class bases_S19096C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19096C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19096C6,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19096C4,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S19096C9[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C92v2Ev();
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C9[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C92v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S19096C9[];
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__8S19096C9[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
static  VTT_ENTRY vtt_S19096C9[] = {
  {&(_ZTV8S19096C9[5]),  5,13},
  {&(_ZTV8S19096C9[12]),  12,13},
  {&(_ZTV8S19096C9[12]),  12,13},
  {&(_tg__ZTV8S19096C4__8S19096C9[5]),  5,6},
  {&(_tg__ZTV8S19096C4__8S19096C9[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19096C9[];
extern  VTBL_ENTRY _ZTV8S19096C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C9[];
Class_Descriptor cd_S19096C9 = {  "S19096C9", // class name
  bases_S19096C9, 5,
  &(vtc_S19096C9[0]), // expected_vtbl_contents
  &(vtt_S19096C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19096C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19096C9),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19096C9),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19096C7  : S19894C6_nt , S19096C6 , virtual S19096C9 , S19096C4 , S19096C3 {
  virtual  ~S19096C7(); // _ZN8S19096C7D2Ev
  S19096C7(); // tgen
};
//SIG(-1 S19096C7) C1{ BC2{ m Fp} BC3{ v1} VBC4{ BC3 BC2 VBC5{ VBC6{ m} VBC3 FC3} v2} BC5 BC7{ BC5 BC6 BC3 vd} vd}


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

static void Test_S19096C7()
{
  extern Class_Descriptor cd_S19096C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S19096C7, buf);
    S19096C7 *dp, &lv = *(dp=new (buf) S19096C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S19096C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19096C7)");
    /*is_ambiguous_... S19096C7::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19096C7");
    /*is_ambiguous_... S19096C7::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*), 0, "S19096C7");
    /*is_ambiguous_... S19096C9::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C9*), ABISELECT(56,28), "S19096C7");
    check_base_class_offset(lv, (S19894C6_nt*)(S19096C9*), ABISELECT(64,32), "S19096C7");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C4*), 0, "S19096C7");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C4*), 0, "S19096C7");
    check_base_class_offset(lv, (S19894C34*)(S19096C4*)(S19096C3*), 0, "S19096C7");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C4*), ABISELECT(72,36), "S19096C7");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C4*), ABISELECT(72,36), "S19096C7");
    check_base_class_offset(lv, (S19096C6*)(S19096C4*)(S19096C3*), ABISELECT(72,36), "S19096C7");
    check_base_class_offset(lv, (S19096C4*)(S19096C9*), ABISELECT(72,36), "S19096C7");
    check_base_class_offset(lv, (S19096C9*), ABISELECT(56,28), "S19096C7");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19096C4*), ABISELECT(16,8), "S19096C7");
    check_base_class_offset(lv, (S19096C4*)(S19096C3*), ABISELECT(32,16), "S19096C7");
    /*is_ambiguous_... S19096C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C3*), ABISELECT(32,16), "S19096C7");
    /*is_ambiguous_... S19096C3::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C3*), ABISELECT(48,24), "S19096C7");
    check_base_class_offset(lv, (S19096C3*), ABISELECT(32,16), "S19096C7");
    test_class_info(&lv, &cd_S19096C7);
    dp->~S19096C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19096C7(Test_S19096C7, "S19096C7", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN8S19096C7C1Ev();
extern void _ZN8S19096C7D2Ev();
Name_Map name_map_S19096C7[] = {
  NSPAIR(_ZN8S19096C7C1Ev),
  NSPAIR(_ZN8S19096C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19096C9;
extern VTBL_ENTRY _ZTI8S19096C9[];
extern  VTBL_ENTRY _ZTV8S19096C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C9[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C3;
extern VTBL_ENTRY _ZTI8S19096C3[];
extern  VTBL_ENTRY _ZTV8S19096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C3[];
static Base_Class bases_S19096C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19096C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19096C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19096C6,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19096C4,    ABISELECT(72,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19096C9,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19096C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19096C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19096C6,    ABISELECT(48,24), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19096C3,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI8S19096C7[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C7D1Ev();
extern void _ZN8S19096C7D0Ev();
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C62v1Ev();
extern void ABISELECT(_ZThn32_N8S19096C7D1Ev,_ZThn16_N8S19096C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19096C7D0Ev,_ZThn16_N8S19096C7D0Ev)();
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C92v2Ev();
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C7[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C7D0Ev,
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19096C7D1Ev,_ZThn16_N8S19096C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19096C7D0Ev,_ZThn16_N8S19096C7D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C92v2Ev,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S19096C7[];
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__A__8S19096C7[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C4__A__8S19096C7[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C3D1Ev();
extern void _ZN8S19096C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C3__8S19096C7[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D0Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C48S19096C3__A2__8S19096C7[] = {
  ABISELECT(40,20),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C48S19096C3__A2__8S19096C7[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C3__8S19096C7[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C92v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C9__8S19096C7[] = {
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C92v2Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__8S19096C9__8S19096C7[] = {
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__8S19096C7[] = {
  0,
  ABISELECT(-72,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
static  VTT_ENTRY vtt_S19096C7[] = {
  {&(_ZTV8S19096C7[6]),  6,41},
  {&(_tg__ZTV8S19096C4__A__8S19096C7[5]),  5,6},
  {&(_tg__ZTV8S19096C6__8S19096C4__A__8S19096C7[3]),  3,4},
  {&(_tg__ZTV8S19096C3__8S19096C7[5]),  5,8},
  {&(_tg__ZTV8S19096C48S19096C3__A2__8S19096C7[5]),  5,6},
  {&(_tg__ZTV8S19096C6__8S19096C48S19096C3__A2__8S19096C7[3]),  3,4},
  {&(_tg__ZTV8S19096C6__8S19096C3__8S19096C7[3]),  3,4},
  {&(_ZTV8S19096C7[33]),  33,41},
  {&(_ZTV8S19096C7[40]),  40,41},
  {&(_ZTV8S19096C7[40]),  40,41},
  {&(_ZTV8S19096C7[14]),  14,41},
  {&(_ZTV8S19096C7[20]),  20,41},
  {&(_tg__ZTV8S19096C9__8S19096C7[5]),  5,7},
  {&(_tg__ZTV8S19096C4__8S19096C9__8S19096C7[5]),  5,6},
  {&(_tg__ZTV8S19096C4__8S19096C9__8S19096C7[5]),  5,6},
  {&(_tg__ZTV8S19096C4__8S19096C7[5]),  5,6},
  {&(_tg__ZTV8S19096C4__8S19096C7[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19096C7[];
extern  VTBL_ENTRY _ZTV8S19096C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C7[];
Class_Descriptor cd_S19096C7 = {  "S19096C7", // class name
  bases_S19096C7, 13,
  &(vtc_S19096C7[0]), // expected_vtbl_contents
  &(vtt_S19096C7[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI8S19096C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19096C7),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19096C7),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  S19096C1  : virtual S19096C2 , S19096C7 {
  virtual  ~S19096C1(); // _ZN8S19096C1D2Ev
  S19096C1(); // tgen
};
//SIG(1 S19096C1) C1{ VBC2{ BC3{ BC4{ VBC5{ m} VBC6{ v1} FC6} BC5 BC6 vd} vd} BC7{ BC8{ m Fp} BC6 VBC9{ BC6 BC8 VBC4 v2} BC4 BC3 vd} vd}


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

static void Test_S19096C1()
{
  extern Class_Descriptor cd_S19096C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19096C1, buf);
    S19096C1 *dp, &lv = *(dp=new (buf) S19096C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19096C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19096C1)");
    check_base_class_offset(lv, (S19894C34*)(S19096C4*)(S19096C3*)(S19096C2*), 0, "S19096C1");
    /*is_ambiguous_... S19096C1::S19096C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C4*), 0, "S19096C1");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C4*)(S19096C7*), 0, "S19096C1");
    check_base_class_offset(lv, (S19894C34*)(S19096C4*)(S19096C3*)(S19096C7*), 0, "S19096C1");
    check_base_class_offset(lv, (S19096C6*)(S19096C4*)(S19096C3*)(S19096C2*), ABISELECT(56,28), "S19096C1");
    /*is_ambiguous_... S19096C1::S19096C4 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C4*), ABISELECT(56,28), "S19096C1");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C4*)(S19096C7*), ABISELECT(56,28), "S19096C1");
    check_base_class_offset(lv, (S19096C6*)(S19096C4*)(S19096C3*)(S19096C7*), ABISELECT(56,28), "S19096C1");
    check_base_class_offset(lv, (S19096C4*)(S19096C3*)(S19096C2*), ABISELECT(56,28), "S19096C1");
    /*is_ambiguous_... S19096C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C3*)(S19096C2*), ABISELECT(56,28), "S19096C1");
    /*is_ambiguous_... S19096C3::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C3*)(S19096C2*), ABISELECT(72,36), "S19096C1");
    check_base_class_offset(lv, (S19096C3*)(S19096C2*), ABISELECT(56,28), "S19096C1");
    check_base_class_offset(lv, (S19096C2*), ABISELECT(56,28), "S19096C1");
    /*is_ambiguous_... S19096C7::S19894C6_nt */ AMB_check_base_class_offset(lv, (S19894C6_nt*)(S19096C7*), ABISELECT(8,4), "S19096C1");
    /*is_ambiguous_... S19096C7::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C7*), 0, "S19096C1");
    /*is_ambiguous_... S19096C9::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C9*), ABISELECT(80,40), "S19096C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19096C9*), ABISELECT(88,44), "S19096C1");
    check_base_class_offset(lv, (S19096C4*)(S19096C9*), ABISELECT(96,48), "S19096C1");
    check_base_class_offset(lv, (S19096C9*)(S19096C7*), ABISELECT(80,40), "S19096C1");
    /*is_ambiguous_... S19096C7::S19096C4 */ AMB_check_base_class_offset(lv, (S19096C4*)(S19096C7*), ABISELECT(16,8), "S19096C1");
    check_base_class_offset(lv, (S19096C4*)(S19096C3*)(S19096C7*), ABISELECT(32,16), "S19096C1");
    /*is_ambiguous_... S19096C3::S19894C34 */ AMB_check_base_class_offset(lv, (S19894C34*)(S19096C3*)(S19096C7*), ABISELECT(32,16), "S19096C1");
    /*is_ambiguous_... S19096C3::S19096C6 */ AMB_check_base_class_offset(lv, (S19096C6*)(S19096C3*)(S19096C7*), ABISELECT(48,24), "S19096C1");
    check_base_class_offset(lv, (S19096C3*)(S19096C7*), ABISELECT(32,16), "S19096C1");
    check_base_class_offset(lv, (S19096C7*), 0, "S19096C1");
    test_class_info(&lv, &cd_S19096C1);
    dp->~S19096C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19096C1(Test_S19096C1, "S19096C1", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S19096C1C1Ev();
extern void _ZN8S19096C1D2Ev();
Name_Map name_map_S19096C1[] = {
  NSPAIR(_ZN8S19096C1C1Ev),
  NSPAIR(_ZN8S19096C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C3;
extern VTBL_ENTRY _ZTI8S19096C3[];
extern  VTBL_ENTRY _ZTV8S19096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C3[];
extern Class_Descriptor cd_S19096C2;
extern VTBL_ENTRY _ZTI8S19096C2[];
extern  VTBL_ENTRY _ZTV8S19096C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C2[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19096C9;
extern VTBL_ENTRY _ZTI8S19096C9[];
extern  VTBL_ENTRY _ZTV8S19096C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C9[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19096C4;
extern VTBL_ENTRY _ZTI8S19096C4[];
extern  VTBL_ENTRY _ZTV8S19096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C4[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19096C6;
extern VTBL_ENTRY _ZTI8S19096C6[];
extern  VTBL_ENTRY _ZTV8S19096C6[];
extern Class_Descriptor cd_S19096C3;
extern VTBL_ENTRY _ZTI8S19096C3[];
extern  VTBL_ENTRY _ZTV8S19096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C3[];
extern Class_Descriptor cd_S19096C7;
extern VTBL_ENTRY _ZTI8S19096C7[];
extern  VTBL_ENTRY _ZTV8S19096C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C7[];
static Base_Class bases_S19096C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19096C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19096C4,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19096C6,    ABISELECT(72,36), //bcp->offset
    36, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19096C3,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19096C2,    ABISELECT(56,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19096C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19096C6,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19096C4,    ABISELECT(96,48), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19096C9,    ABISELECT(80,40), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19096C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19096C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19894C34,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19096C6,    ABISELECT(48,24), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19096C3,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19096C7,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19096C1[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C1D1Ev();
extern void _ZN8S19096C1D0Ev();
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C62v1Ev();
extern void ABISELECT(_ZThn32_N8S19096C1D1Ev,_ZThn16_N8S19096C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19096C1D0Ev,_ZThn16_N8S19096C1D0Ev)();
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19096C1D1Ev,_ZTv0_n24_N8S19096C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19096C1D1Ev,_ZThn28_N8S19096C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19096C1D0Ev,_ZTv0_n24_N8S19096C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19096C1D0Ev,_ZThn28_N8S19096C1D0Ev)() __attribute__((weak));
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C92v2Ev();
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY vtc_S19096C1[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  ABISELECT(96,48),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C1D0Ev,
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19096C1D1Ev,_ZThn16_N8S19096C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19096C1D0Ev,_ZThn16_N8S19096C1D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  ABISELECT(-56,-28),
  0,
  ABISELECT(-56,-28),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19096C1D1Ev,_ZTv0_n24_N8S19096C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19096C1D0Ev,_ZTv0_n24_N8S19096C1D0Ev),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C92v2Ev,
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19096C1[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S19096C1[];
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C7D1Ev();
extern void _ZN8S19096C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C7__8S19096C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(96,48),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C7D0Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C48S19096C7__A2__8S19096C1[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C48S19096C7__A2__8S19096C1[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C3D1Ev();
extern void _ZN8S19096C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C38S19096C7__A1__8S19096C1[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D0Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C48S19096C38S19096C7__A3__8S19096C1[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C48S19096C38S19096C7__A3__8S19096C1[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C38S19096C7__A1__8S19096C1[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C92v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C9__8S19096C7__8S19096C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C92v2Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__8S19096C7__8S19096C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__A2__8S19096C7__8S19096C1[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__A__8S19096C7__8S19096C1[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void ABISELECT(_ZThn32_N8S19096C7D1Ev,_ZThn16_N8S19096C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19096C7D0Ev,_ZThn16_N8S19096C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19096C3__8S19096C7__8S19096C1[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19096C7[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19096C7D1Ev,_ZThn16_N8S19096C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19096C7D0Ev,_ZThn16_N8S19096C7D0Ev),
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C2D1Ev();
extern void _ZN8S19096C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C2__8S19096C1[] = {
  0,
  ABISELECT(-56,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C2[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C2D0Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C3D1Ev();
extern void _ZN8S19096C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C38S19096C2__8S19096C1[] = {
  0,
  ABISELECT(-56,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C3[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19096C3D0Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C48S19096C38S19096C2__8S19096C1[] = {
  0,
  ABISELECT(-56,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
extern void _ZN8S19096C92v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C9__8S19096C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
  (VTBL_ENTRY)&_ZN8S19096C92v2Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__8S19096C9__8S19096C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__A1__8S19096C9__8S19096C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19096C9[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C4__A1__8S19096C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
extern void _ZN8S19096C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19096C6__8S19096C4__A1__8S19096C1[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19096C4[0]),
  (VTBL_ENTRY)&_ZN8S19096C62v1Ev,
};
static  VTT_ENTRY vtt_S19096C1[] = {
  {&(_ZTV8S19096C1[7]),  7,54},
  {&(_tg__ZTV8S19096C7__8S19096C1[6]),  6,9},
  {&(_tg__ZTV8S19096C48S19096C7__A2__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C6__8S19096C48S19096C7__A2__8S19096C1[3]),  3,4},
  {&(_tg__ZTV8S19096C38S19096C7__A1__8S19096C1[5]),  5,8},
  {&(_tg__ZTV8S19096C48S19096C38S19096C7__A3__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C6__8S19096C48S19096C38S19096C7__A3__8S19096C1[3]),  3,4},
  {&(_tg__ZTV8S19096C6__8S19096C38S19096C7__A1__8S19096C1[3]),  3,4},
  {&(_tg__ZTV8S19096C9__8S19096C7__8S19096C1[7]),  7,9},
  {&(_tg__ZTV8S19096C4__8S19096C7__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C6__A2__8S19096C7__8S19096C1[3]),  3,4},
  {&(_tg__ZTV8S19096C4__A__8S19096C7__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C3__8S19096C7__8S19096C1[5]),  5,8},
  {&(_ZTV8S19096C1[33]),  33,54},
  {&(_ZTV8S19096C1[33]),  33,54},
  {&(_ZTV8S19096C1[38]),  38,54},
  {&(_ZTV8S19096C1[46]),  46,54},
  {&(_ZTV8S19096C1[53]),  53,54},
  {&(_ZTV8S19096C1[15]),  15,54},
  {&(_ZTV8S19096C1[21]),  21,54},
  {&(_tg__ZTV8S19096C2__8S19096C1[5]),  5,8},
  {&(_tg__ZTV8S19096C38S19096C2__8S19096C1[5]),  5,8},
  {&(_tg__ZTV8S19096C48S19096C38S19096C2__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C48S19096C38S19096C2__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C38S19096C2__8S19096C1[5]),  5,8},
  {&(_tg__ZTV8S19096C2__8S19096C1[5]),  5,8},
  {&(_tg__ZTV8S19096C9__8S19096C1[5]),  5,7},
  {&(_tg__ZTV8S19096C4__8S19096C9__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C6__A1__8S19096C9__8S19096C1[3]),  3,4},
  {&(_tg__ZTV8S19096C4__A1__8S19096C1[5]),  5,6},
  {&(_tg__ZTV8S19096C6__8S19096C4__A1__8S19096C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19096C1[];
extern  VTBL_ENTRY _ZTV8S19096C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19096C1[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19096C1D0Ev,_ZTv0_n24_N8S19096C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19096C1D0Ev,_ZThn28_N8S19096C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19096C1D1Ev,_ZTv0_n24_N8S19096C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19096C1D1Ev,_ZThn28_N8S19096C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19096C1 = {  "S19096C1", // class name
  bases_S19096C1, 19,
  &(vtc_S19096C1[0]), // expected_vtbl_contents
  &(vtt_S19096C1[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S19096C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19096C1),54, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19096C1),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7020C2  {
  int s7020c2f0[2];
  virtual  ~S7020C2(); // _ZN7S7020C2D1Ev
  virtual void  v6(); // _ZN7S7020C22v6Ev
  virtual void  v7(); // _ZN7S7020C22v7Ev
  virtual void  v8(); // _ZN7S7020C22v8Ev
  virtual void  v9(); // _ZN7S7020C22v9Ev
  virtual void  v10(); // _ZN7S7020C23v10Ev
  virtual void  v11(); // _ZN7S7020C23v11Ev
  virtual void  v12(); // _ZN7S7020C23v12Ev
  virtual void  v13(); // _ZN7S7020C23v13Ev
  virtual void  v14(); // _ZN7S7020C23v14Ev
  virtual void  v15(); // _ZN7S7020C23v15Ev
  virtual void  v16(); // _ZN7S7020C23v16Ev
  virtual void  v17(); // _ZN7S7020C23v17Ev
  virtual void  v18(); // _ZN7S7020C23v18Ev
  virtual void  v19(); // _ZN7S7020C23v19Ev
  S7020C2(); // tgen
};
//SIG(-1 S7020C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7020C2 ::~S7020C2(){ note_dtor("S7020C2", this);}
void  S7020C2 ::v6(){vfunc_called(this, "_ZN7S7020C22v6Ev");}
void  S7020C2 ::v7(){vfunc_called(this, "_ZN7S7020C22v7Ev");}
void  S7020C2 ::v8(){vfunc_called(this, "_ZN7S7020C22v8Ev");}
void  S7020C2 ::v9(){vfunc_called(this, "_ZN7S7020C22v9Ev");}
void  S7020C2 ::v10(){vfunc_called(this, "_ZN7S7020C23v10Ev");}
void  S7020C2 ::v11(){vfunc_called(this, "_ZN7S7020C23v11Ev");}
void  S7020C2 ::v12(){vfunc_called(this, "_ZN7S7020C23v12Ev");}
void  S7020C2 ::v13(){vfunc_called(this, "_ZN7S7020C23v13Ev");}
void  S7020C2 ::v14(){vfunc_called(this, "_ZN7S7020C23v14Ev");}
void  S7020C2 ::v15(){vfunc_called(this, "_ZN7S7020C23v15Ev");}
void  S7020C2 ::v16(){vfunc_called(this, "_ZN7S7020C23v16Ev");}
void  S7020C2 ::v17(){vfunc_called(this, "_ZN7S7020C23v17Ev");}
void  S7020C2 ::v18(){vfunc_called(this, "_ZN7S7020C23v18Ev");}
void  S7020C2 ::v19(){vfunc_called(this, "_ZN7S7020C23v19Ev");}
S7020C2 ::S7020C2(){ note_ctor("S7020C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7020C2C1Ev();
extern void _ZN7S7020C2D1Ev();
Name_Map name_map_S7020C2[] = {
  NSPAIR(_ZN7S7020C2C1Ev),
  NSPAIR(_ZN7S7020C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7020C2[];
extern void _ZN7S7020C2D1Ev();
extern void _ZN7S7020C2D0Ev();
extern void _ZN7S7020C22v6Ev();
extern void _ZN7S7020C22v7Ev();
extern void _ZN7S7020C22v8Ev();
extern void _ZN7S7020C22v9Ev();
extern void _ZN7S7020C23v10Ev();
extern void _ZN7S7020C23v11Ev();
extern void _ZN7S7020C23v12Ev();
extern void _ZN7S7020C23v13Ev();
extern void _ZN7S7020C23v14Ev();
extern void _ZN7S7020C23v15Ev();
extern void _ZN7S7020C23v16Ev();
extern void _ZN7S7020C23v17Ev();
extern void _ZN7S7020C23v18Ev();
extern void _ZN7S7020C23v19Ev();
static  VTBL_ENTRY vtc_S7020C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7020C2[0]),
  (VTBL_ENTRY)&_ZN7S7020C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7020C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S7020C2[];
extern  VTBL_ENTRY _ZTV7S7020C2[];
Class_Descriptor cd_S7020C2 = {  "S7020C2", // class name
  0,0,//no base classes
  &(vtc_S7020C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7020C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7020C2),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  S7020C3_nt  {
  int s7020c3f0[8];
};
//SIG(-1 S7020C3_nt) C1{ Fi[8]}



//skip512 S7020C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7020C1  : S7020C2 {
  ::S7020C3_nt s7020c1f0;
  virtual  ~S7020C1(); // _ZN7S7020C1D1Ev
  virtual void  v1(); // _ZN7S7020C12v1Ev
  virtual void  v2(); // _ZN7S7020C12v2Ev
  virtual void  v3(); // _ZN7S7020C12v3Ev
  virtual void  v4(); // _ZN7S7020C12v4Ev
  virtual void  v5(); // _ZN7S7020C12v5Ev
  S7020C1(); // tgen
};
//SIG(1 S7020C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi[2]} vd v1 v2 v3 v4 v5 FC3{ Fi[8]}}


 S7020C1 ::~S7020C1(){ note_dtor("S7020C1", this);}
void  S7020C1 ::v1(){vfunc_called(this, "_ZN7S7020C12v1Ev");}
void  S7020C1 ::v2(){vfunc_called(this, "_ZN7S7020C12v2Ev");}
void  S7020C1 ::v3(){vfunc_called(this, "_ZN7S7020C12v3Ev");}
void  S7020C1 ::v4(){vfunc_called(this, "_ZN7S7020C12v4Ev");}
void  S7020C1 ::v5(){vfunc_called(this, "_ZN7S7020C12v5Ev");}
S7020C1 ::S7020C1(){ note_ctor("S7020C1", this);} // tgen

static void Test_S7020C1()
{
  extern Class_Descriptor cd_S7020C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7020C1, buf);
    S7020C1 *dp, &lv = *(dp=new (buf) S7020C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7020C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7020C1)");
    check_base_class_offset(lv, (S7020C2*), 0, "S7020C1");
    check_field_offset(lv, s7020c1f0, ABISELECT(16,12), "S7020C1.s7020c1f0");
    test_class_info(&lv, &cd_S7020C1);
    dp->~S7020C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7020C1(Test_S7020C1, "S7020C1", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7020C1C1Ev();
extern void _ZN7S7020C1D1Ev();
Name_Map name_map_S7020C1[] = {
  NSPAIR(_ZN7S7020C1C1Ev),
  NSPAIR(_ZN7S7020C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7020C2;
extern VTBL_ENTRY _ZTI7S7020C2[];
extern  VTBL_ENTRY _ZTV7S7020C2[];
static Base_Class bases_S7020C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7020C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7020C1[];
extern void _ZN7S7020C1D1Ev();
extern void _ZN7S7020C1D0Ev();
extern void _ZN7S7020C22v6Ev();
extern void _ZN7S7020C22v7Ev();
extern void _ZN7S7020C22v8Ev();
extern void _ZN7S7020C22v9Ev();
extern void _ZN7S7020C23v10Ev();
extern void _ZN7S7020C23v11Ev();
extern void _ZN7S7020C23v12Ev();
extern void _ZN7S7020C23v13Ev();
extern void _ZN7S7020C23v14Ev();
extern void _ZN7S7020C23v15Ev();
extern void _ZN7S7020C23v16Ev();
extern void _ZN7S7020C23v17Ev();
extern void _ZN7S7020C23v18Ev();
extern void _ZN7S7020C23v19Ev();
extern void _ZN7S7020C12v1Ev();
extern void _ZN7S7020C12v2Ev();
extern void _ZN7S7020C12v3Ev();
extern void _ZN7S7020C12v4Ev();
extern void _ZN7S7020C12v5Ev();
static  VTBL_ENTRY vtc_S7020C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7020C1[0]),
  (VTBL_ENTRY)&_ZN7S7020C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7020C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7020C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7020C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7020C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7020C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7020C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7020C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7020C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7020C1[];
extern  VTBL_ENTRY _ZTV7S7020C1[];
Class_Descriptor cd_S7020C1 = {  "S7020C1", // class name
  bases_S7020C1, 1,
  &(vtc_S7020C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7020C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7020C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2797C2  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s2797c2f0;
  int s2797c2f1;
  void *s2797c2f2;
  char s2797c2f3;
  int s2797c2f4;
  virtual  ~S2797C2(); // _ZN7S2797C2D1Ev
  virtual void  v3(); // _ZN7S2797C22v3Ev
  virtual void  v4(); // _ZN7S2797C22v4Ev
  virtual void  v5(); // _ZN7S2797C22v5Ev
  virtual void  v6(); // _ZN7S2797C22v6Ev
  S2797C2(); // tgen
};
//SIG(-1 S2797C2) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S2797C2 ::~S2797C2(){ note_dtor("S2797C2", this);}
void  S2797C2 ::v3(){vfunc_called(this, "_ZN7S2797C22v3Ev");}
void  S2797C2 ::v4(){vfunc_called(this, "_ZN7S2797C22v4Ev");}
void  S2797C2 ::v5(){vfunc_called(this, "_ZN7S2797C22v5Ev");}
void  S2797C2 ::v6(){vfunc_called(this, "_ZN7S2797C22v6Ev");}
S2797C2 ::S2797C2(){ note_ctor("S2797C2", this);} // tgen

static void Test_S2797C2()
{
  extern Class_Descriptor cd_S2797C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S2797C2, buf);
    S2797C2 *dp, &lv = *(dp=new (buf) S2797C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S2797C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2797C2)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S2797C2");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S2797C2");
    check_field_offset(lv, s2797c2f0, ABISELECT(24,12), "S2797C2.s2797c2f0");
    check_field_offset(lv, s2797c2f1, ABISELECT(48,28), "S2797C2.s2797c2f1");
    check_field_offset(lv, s2797c2f2, ABISELECT(56,32), "S2797C2.s2797c2f2");
    check_field_offset(lv, s2797c2f3, ABISELECT(64,36), "S2797C2.s2797c2f3");
    check_field_offset(lv, s2797c2f4, ABISELECT(68,40), "S2797C2.s2797c2f4");
    test_class_info(&lv, &cd_S2797C2);
    dp->~S2797C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2797C2(Test_S2797C2, "S2797C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S2797C2C1Ev();
extern void _ZN7S2797C2D1Ev();
Name_Map name_map_S2797C2[] = {
  NSPAIR(_ZN7S2797C2C1Ev),
  NSPAIR(_ZN7S2797C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S2797C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2797C2[];
extern void _ZN7S2797C2D1Ev();
extern void _ZN7S2797C2D0Ev();
extern void _ZN7S2797C22v3Ev();
extern void _ZN7S2797C22v4Ev();
extern void _ZN7S2797C22v5Ev();
extern void _ZN7S2797C22v6Ev();
static  VTBL_ENTRY vtc_S2797C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2797C2[0]),
  (VTBL_ENTRY)&_ZN7S2797C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2797C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S2797C2[];
extern  VTBL_ENTRY _ZTV7S2797C2[];
Class_Descriptor cd_S2797C2 = {  "S2797C2", // class name
  bases_S2797C2, 2,
  &(vtc_S2797C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S2797C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2797C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2797C1  : S2797C2 {
  void *s2797c1f0[4];
  virtual  ~S2797C1(); // _ZN7S2797C1D1Ev
  virtual void  v1(); // _ZN7S2797C12v1Ev
  virtual void  v2(); // _ZN7S2797C12v2Ev
  S2797C1(); // tgen
};
//SIG(1 S2797C1) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v3 v4 v5 v6 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd v1 v2 Fp[4]}


 S2797C1 ::~S2797C1(){ note_dtor("S2797C1", this);}
void  S2797C1 ::v1(){vfunc_called(this, "_ZN7S2797C12v1Ev");}
void  S2797C1 ::v2(){vfunc_called(this, "_ZN7S2797C12v2Ev");}
S2797C1 ::S2797C1(){ note_ctor("S2797C1", this);} // tgen

static void Test_S2797C1()
{
  extern Class_Descriptor cd_S2797C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,16)];
    init_test(&cd_S2797C1, buf);
    S2797C1 *dp, &lv = *(dp=new (buf) S2797C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S2797C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2797C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S2797C2*), ABISELECT(8,4), "S2797C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S2797C2*), ABISELECT(16,8), "S2797C1");
    check_base_class_offset(lv, (S2797C2*), 0, "S2797C1");
    check_field_offset(lv, s2797c1f0, ABISELECT(72,44), "S2797C1.s2797c1f0");
    test_class_info(&lv, &cd_S2797C1);
    dp->~S2797C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2797C1(Test_S2797C1, "S2797C1", ABISELECT(104,60));

#else // __cplusplus

extern void _ZN7S2797C1C1Ev();
extern void _ZN7S2797C1D1Ev();
Name_Map name_map_S2797C1[] = {
  NSPAIR(_ZN7S2797C1C1Ev),
  NSPAIR(_ZN7S2797C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S2797C2;
extern VTBL_ENTRY _ZTI7S2797C2[];
extern  VTBL_ENTRY _ZTV7S2797C2[];
static Base_Class bases_S2797C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2797C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2797C1[];
extern void _ZN7S2797C1D1Ev();
extern void _ZN7S2797C1D0Ev();
extern void _ZN7S2797C22v3Ev();
extern void _ZN7S2797C22v4Ev();
extern void _ZN7S2797C22v5Ev();
extern void _ZN7S2797C22v6Ev();
extern void _ZN7S2797C12v1Ev();
extern void _ZN7S2797C12v2Ev();
static  VTBL_ENTRY vtc_S2797C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2797C1[0]),
  (VTBL_ENTRY)&_ZN7S2797C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2797C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2797C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2797C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2797C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2797C1[];
extern  VTBL_ENTRY _ZTV7S2797C1[];
Class_Descriptor cd_S2797C1 = {  "S2797C1", // class name
  bases_S2797C1, 3,
  &(vtc_S2797C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,60), // object size
  NSPAIRA(_ZTI7S2797C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2797C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19344C3  {
  void *s19344c3f0;
  virtual void  v4(); // _ZN8S19344C32v4Ev
  virtual void  v5(); // _ZN8S19344C32v5Ev
  ~S19344C3(); // tgen
  S19344C3(); // tgen
};
//SIG(-1 S19344C3) C1{ v1 v2 Fp}


void  S19344C3 ::v4(){vfunc_called(this, "_ZN8S19344C32v4Ev");}
void  S19344C3 ::v5(){vfunc_called(this, "_ZN8S19344C32v5Ev");}
S19344C3 ::~S19344C3(){ note_dtor("S19344C3", this);} // tgen
S19344C3 ::S19344C3(){ note_ctor("S19344C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19344C3C1Ev();
extern void _ZN8S19344C3D1Ev();
Name_Map name_map_S19344C3[] = {
  NSPAIR(_ZN8S19344C3C1Ev),
  NSPAIR(_ZN8S19344C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19344C3[];
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY vtc_S19344C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C3[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
extern VTBL_ENTRY _ZTI8S19344C3[];
extern  VTBL_ENTRY _ZTV8S19344C3[];
Class_Descriptor cd_S19344C3 = {  "S19344C3", // class name
  0,0,//no base classes
  &(vtc_S19344C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19344C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19344C3),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  S19344C4  : virtual S19344C3 {
  virtual void  v6(); // _ZN8S19344C42v6Ev
  virtual void  v7(); // _ZN8S19344C42v7Ev
  virtual void  v8(); // _ZN8S19344C42v8Ev
  virtual void  v9(); // _ZN8S19344C42v9Ev
  virtual void  v10(); // _ZN8S19344C43v10Ev
  virtual void  v11(); // _ZN8S19344C43v11Ev
  ~S19344C4(); // tgen
  S19344C4(); // tgen
};
//SIG(-1 S19344C4) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S19344C4 ::v6(){vfunc_called(this, "_ZN8S19344C42v6Ev");}
void  S19344C4 ::v7(){vfunc_called(this, "_ZN8S19344C42v7Ev");}
void  S19344C4 ::v8(){vfunc_called(this, "_ZN8S19344C42v8Ev");}
void  S19344C4 ::v9(){vfunc_called(this, "_ZN8S19344C42v9Ev");}
void  S19344C4 ::v10(){vfunc_called(this, "_ZN8S19344C43v10Ev");}
void  S19344C4 ::v11(){vfunc_called(this, "_ZN8S19344C43v11Ev");}
S19344C4 ::~S19344C4(){ note_dtor("S19344C4", this);} // tgen
S19344C4 ::S19344C4(){ note_ctor("S19344C4", this);} // tgen

static void Test_S19344C4()
{
  extern Class_Descriptor cd_S19344C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19344C4, buf);
    S19344C4 *dp, &lv = *(dp=new (buf) S19344C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19344C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19344C4)");
    check_base_class_offset(lv, (S19344C3*), ABISELECT(8,4), "S19344C4");
    test_class_info(&lv, &cd_S19344C4);
    dp->~S19344C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19344C4(Test_S19344C4, "S19344C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19344C4C1Ev();
extern void _ZN8S19344C4D1Ev();
Name_Map name_map_S19344C4[] = {
  NSPAIR(_ZN8S19344C4C1Ev),
  NSPAIR(_ZN8S19344C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19344C3;
extern VTBL_ENTRY _ZTI8S19344C3[];
extern  VTBL_ENTRY _ZTV8S19344C3[];
static Base_Class bases_S19344C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19344C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19344C4[];
extern void _ZN8S19344C42v6Ev();
extern void _ZN8S19344C42v7Ev();
extern void _ZN8S19344C42v8Ev();
extern void _ZN8S19344C42v9Ev();
extern void _ZN8S19344C43v10Ev();
extern void _ZN8S19344C43v11Ev();
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY vtc_S19344C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C4[0]),
  (VTBL_ENTRY)&_ZN8S19344C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v11Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19344C4[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S19344C4[];
static  VTT_ENTRY vtt_S19344C4[] = {
  {&(_ZTV8S19344C4[3]),  3,15},
  {&(_ZTV8S19344C4[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S19344C4[];
extern  VTBL_ENTRY _ZTV8S19344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19344C4[];
Class_Descriptor cd_S19344C4 = {  "S19344C4", // class name
  bases_S19344C4, 1,
  &(vtc_S19344C4[0]), // expected_vtbl_contents
  &(vtt_S19344C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19344C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19344C4),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19344C4),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  S19344C2  : S19344C3 , virtual S19344C4 {
  long double s19344c2f0;
  char s19344c2f1:8;
  void *s19344c2f2;
  virtual void  v12(); // _ZN8S19344C23v12Ev
  virtual void  v13(); // _ZN8S19344C23v13Ev
  virtual void  v14(); // _ZN8S19344C23v14Ev
  virtual void  v15(); // _ZN8S19344C23v15Ev
  virtual void  v16(); // _ZN8S19344C23v16Ev
  ~S19344C2(); // tgen
  S19344C2(); // tgen
};
//SIG(-1 S19344C2) C1{ BC2{ v6 v7 Fp} VBC3{ VBC2 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 FD Fc:8 Fp}


void  S19344C2 ::v12(){vfunc_called(this, "_ZN8S19344C23v12Ev");}
void  S19344C2 ::v13(){vfunc_called(this, "_ZN8S19344C23v13Ev");}
void  S19344C2 ::v14(){vfunc_called(this, "_ZN8S19344C23v14Ev");}
void  S19344C2 ::v15(){vfunc_called(this, "_ZN8S19344C23v15Ev");}
void  S19344C2 ::v16(){vfunc_called(this, "_ZN8S19344C23v16Ev");}
S19344C2 ::~S19344C2(){ note_dtor("S19344C2", this);} // tgen
S19344C2 ::S19344C2(){ note_ctor("S19344C2", this);} // tgen

static void Test_S19344C2()
{
  extern Class_Descriptor cd_S19344C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S19344C2, buf);
    S19344C2 *dp, &lv = *(dp=new (buf) S19344C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19344C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19344C2)");
    /*is_ambiguous_... S19344C2::S19344C3 */ AMB_check_base_class_offset(lv, (S19344C3*), 0, "S19344C2");
    check_base_class_offset(lv, (S19344C3*)(S19344C4*), ABISELECT(56,32), "S19344C2");
    check_base_class_offset(lv, (S19344C4*), ABISELECT(48,28), "S19344C2");
    check_field_offset(lv, s19344c2f0, ABISELECT(16,8), "S19344C2.s19344c2f0");
    set_bf_and_test(lv, s19344c2f1, ABISELECT(32,20), 0, 8, 1, "S19344C2");
    set_bf_and_test(lv, s19344c2f1, ABISELECT(32,20), 0, 8, hide_sll(1LL<<7), "S19344C2");
    check_field_offset(lv, s19344c2f2, ABISELECT(40,24), "S19344C2.s19344c2f2");
    test_class_info(&lv, &cd_S19344C2);
    dp->~S19344C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19344C2(Test_S19344C2, "S19344C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19344C2C1Ev();
extern void _ZN8S19344C2D1Ev();
Name_Map name_map_S19344C2[] = {
  NSPAIR(_ZN8S19344C2C1Ev),
  NSPAIR(_ZN8S19344C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19344C3;
extern VTBL_ENTRY _ZTI8S19344C3[];
extern  VTBL_ENTRY _ZTV8S19344C3[];
extern Class_Descriptor cd_S19344C3;
extern VTBL_ENTRY _ZTI8S19344C3[];
extern  VTBL_ENTRY _ZTV8S19344C3[];
extern Class_Descriptor cd_S19344C4;
extern VTBL_ENTRY _ZTI8S19344C4[];
extern  VTBL_ENTRY _ZTV8S19344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19344C4[];
static Base_Class bases_S19344C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19344C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19344C3,    ABISELECT(56,32), //bcp->offset
    26, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19344C4,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19344C2[];
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
extern void _ZN8S19344C23v12Ev();
extern void _ZN8S19344C23v13Ev();
extern void _ZN8S19344C23v14Ev();
extern void _ZN8S19344C23v15Ev();
extern void _ZN8S19344C23v16Ev();
extern void _ZN8S19344C42v6Ev();
extern void _ZN8S19344C42v7Ev();
extern void _ZN8S19344C42v8Ev();
extern void _ZN8S19344C42v9Ev();
extern void _ZN8S19344C43v10Ev();
extern void _ZN8S19344C43v11Ev();
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY vtc_S19344C2[] = {
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C2[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19344C2[0]),
  (VTBL_ENTRY)&_ZN8S19344C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v11Ev,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19344C2[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S19344C2[];
extern void _ZN8S19344C42v6Ev();
extern void _ZN8S19344C42v7Ev();
extern void _ZN8S19344C42v8Ev();
extern void _ZN8S19344C42v9Ev();
extern void _ZN8S19344C43v10Ev();
extern void _ZN8S19344C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C4__8S19344C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C4[0]),
  (VTBL_ENTRY)&_ZN8S19344C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v11Ev,
};
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C3__8S19344C4__8S19344C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19344C4[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
static  VTT_ENTRY vtt_S19344C2[] = {
  {&(_ZTV8S19344C2[4]),  4,32},
  {&(_ZTV8S19344C2[20]),  20,32},
  {&(_ZTV8S19344C2[30]),  30,32},
  {&(_tg__ZTV8S19344C4__8S19344C2[3]),  3,9},
  {&(_tg__ZTV8S19344C3__8S19344C4__8S19344C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19344C2[];
extern  VTBL_ENTRY _ZTV8S19344C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19344C2[];
Class_Descriptor cd_S19344C2 = {  "S19344C2", // class name
  bases_S19344C2, 3,
  &(vtc_S19344C2[0]), // expected_vtbl_contents
  &(vtt_S19344C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19344C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19344C2),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19344C2),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  S19344C1  : virtual S19344C2 {
  virtual  ~S19344C1(); // _ZN8S19344C1D2Ev
  virtual void  v1(); // _ZN8S19344C12v1Ev
  virtual void  v2(); // _ZN8S19344C12v2Ev
  virtual void  v3(); // _ZN8S19344C12v3Ev
  S19344C1(); // tgen
};
//SIG(1 S19344C1) C1{ VBC2{ BC3{ v4 v5 Fp} VBC4{ VBC3 v6 v7 v8 v9 v10 v11} v12 v13 v14 v15 v16 FD Fc:8 Fp} vd v1 v2 v3}


 S19344C1 ::~S19344C1(){ note_dtor("S19344C1", this);}
void  S19344C1 ::v1(){vfunc_called(this, "_ZN8S19344C12v1Ev");}
void  S19344C1 ::v2(){vfunc_called(this, "_ZN8S19344C12v2Ev");}
void  S19344C1 ::v3(){vfunc_called(this, "_ZN8S19344C12v3Ev");}
S19344C1 ::S19344C1(){ note_ctor("S19344C1", this);} // tgen

static void Test_S19344C1()
{
  extern Class_Descriptor cd_S19344C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S19344C1, buf);
    S19344C1 *dp, &lv = *(dp=new (buf) S19344C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19344C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19344C1)");
    /*is_ambiguous_... S19344C2::S19344C3 */ AMB_check_base_class_offset(lv, (S19344C3*)(S19344C2*), ABISELECT(16,4), "S19344C1");
    check_base_class_offset(lv, (S19344C3*)(S19344C4*), ABISELECT(64,32), "S19344C1");
    check_base_class_offset(lv, (S19344C4*)(S19344C2*), 0, "S19344C1");
    check_base_class_offset(lv, (S19344C2*), ABISELECT(16,4), "S19344C1");
    test_class_info(&lv, &cd_S19344C1);
    dp->~S19344C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19344C1(Test_S19344C1, "S19344C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19344C1C1Ev();
extern void _ZN8S19344C1D2Ev();
Name_Map name_map_S19344C1[] = {
  NSPAIR(_ZN8S19344C1C1Ev),
  NSPAIR(_ZN8S19344C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19344C3;
extern VTBL_ENTRY _ZTI8S19344C3[];
extern  VTBL_ENTRY _ZTV8S19344C3[];
extern Class_Descriptor cd_S19344C3;
extern VTBL_ENTRY _ZTI8S19344C3[];
extern  VTBL_ENTRY _ZTV8S19344C3[];
extern Class_Descriptor cd_S19344C4;
extern VTBL_ENTRY _ZTI8S19344C4[];
extern  VTBL_ENTRY _ZTV8S19344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19344C4[];
extern Class_Descriptor cd_S19344C2;
extern VTBL_ENTRY _ZTI8S19344C2[];
extern  VTBL_ENTRY _ZTV8S19344C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19344C2[];
static Base_Class bases_S19344C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19344C3,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19344C3,    ABISELECT(64,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19344C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19344C2,    ABISELECT(16,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //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 _ZTI8S19344C1[];
extern void _ZN8S19344C42v6Ev();
extern void _ZN8S19344C42v7Ev();
extern void _ZN8S19344C42v8Ev();
extern void _ZN8S19344C42v9Ev();
extern void _ZN8S19344C43v10Ev();
extern void _ZN8S19344C43v11Ev();
extern void _ZN8S19344C1D1Ev();
extern void _ZN8S19344C1D0Ev();
extern void _ZN8S19344C12v1Ev();
extern void _ZN8S19344C12v2Ev();
extern void _ZN8S19344C12v3Ev();
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
extern void _ZN8S19344C23v12Ev();
extern void _ZN8S19344C23v13Ev();
extern void _ZN8S19344C23v14Ev();
extern void _ZN8S19344C23v15Ev();
extern void _ZN8S19344C23v16Ev();
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY vtc_S19344C1[] = {
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C1[0]),
  (VTBL_ENTRY)&_ZN8S19344C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19344C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19344C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19344C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19344C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19344C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19344C1[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v16Ev,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19344C1[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S19344C1[];
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
extern void _ZN8S19344C23v12Ev();
extern void _ZN8S19344C23v13Ev();
extern void _ZN8S19344C23v14Ev();
extern void _ZN8S19344C23v15Ev();
extern void _ZN8S19344C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C2__8S19344C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C2[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19344C23v16Ev,
};
extern void _ZN8S19344C42v6Ev();
extern void _ZN8S19344C42v7Ev();
extern void _ZN8S19344C42v8Ev();
extern void _ZN8S19344C42v9Ev();
extern void _ZN8S19344C43v10Ev();
extern void _ZN8S19344C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C4__8S19344C2__8S19344C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S19344C2[0]),
  (VTBL_ENTRY)&_ZN8S19344C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v11Ev,
};
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C3__A1__8S19344C2__8S19344C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19344C2[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
extern void _ZN8S19344C42v6Ev();
extern void _ZN8S19344C42v7Ev();
extern void _ZN8S19344C42v8Ev();
extern void _ZN8S19344C42v9Ev();
extern void _ZN8S19344C43v10Ev();
extern void _ZN8S19344C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C4__8S19344C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19344C4[0]),
  (VTBL_ENTRY)&_ZN8S19344C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19344C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19344C43v11Ev,
};
extern void _ZN8S19344C32v4Ev();
extern void _ZN8S19344C32v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19344C3__8S19344C4__8S19344C1[] = {
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19344C4[0]),
  (VTBL_ENTRY)&_ZN8S19344C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19344C32v5Ev,
};
static  VTT_ENTRY vtt_S19344C1[] = {
  {&(_ZTV8S19344C1[11]),  11,46},
  {&(_ZTV8S19344C1[33]),  33,46},
  {&(_ZTV8S19344C1[11]),  11,46},
  {&(_ZTV8S19344C1[44]),  44,46},
  {&(_tg__ZTV8S19344C2__8S19344C1[4]),  4,11},
  {&(_tg__ZTV8S19344C4__8S19344C2__8S19344C1[9]),  9,15},
  {&(_tg__ZTV8S19344C3__A1__8S19344C2__8S19344C1[4]),  4,6},
  {&(_tg__ZTV8S19344C4__8S19344C1[3]),  3,9},
  {&(_tg__ZTV8S19344C3__8S19344C4__8S19344C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19344C1[];
extern  VTBL_ENTRY _ZTV8S19344C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19344C1[];
Class_Descriptor cd_S19344C1 = {  "S19344C1", // class name
  bases_S19344C1, 4,
  &(vtc_S19344C1[0]), // expected_vtbl_contents
  &(vtt_S19344C1[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19344C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19344C1),46, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19344C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21055C4  {
  void *s21055c4f0;
  virtual void  v2(); // _ZN8S21055C42v2Ev
  virtual void  v3(); // _ZN8S21055C42v3Ev
  ~S21055C4(); // tgen
  S21055C4(); // tgen
};
//SIG(-1 S21055C4) C1{ v1 v2 Fp}


void  S21055C4 ::v2(){vfunc_called(this, "_ZN8S21055C42v2Ev");}
void  S21055C4 ::v3(){vfunc_called(this, "_ZN8S21055C42v3Ev");}
S21055C4 ::~S21055C4(){ note_dtor("S21055C4", this);} // tgen
S21055C4 ::S21055C4(){ note_ctor("S21055C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21055C4C1Ev();
extern void _ZN8S21055C4D1Ev();
Name_Map name_map_S21055C4[] = {
  NSPAIR(_ZN8S21055C4C1Ev),
  NSPAIR(_ZN8S21055C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21055C4[];
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY vtc_S21055C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C4[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S21055C4[];
extern  VTBL_ENTRY _ZTV8S21055C4[];
Class_Descriptor cd_S21055C4 = {  "S21055C4", // class name
  0,0,//no base classes
  &(vtc_S21055C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21055C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21055C4),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  S21055C3  : virtual S21055C4 {
  virtual void  v4(); // _ZN8S21055C32v4Ev
  virtual void  v5(); // _ZN8S21055C32v5Ev
  virtual void  v6(); // _ZN8S21055C32v6Ev
  virtual void  v7(); // _ZN8S21055C32v7Ev
  virtual void  v8(); // _ZN8S21055C32v8Ev
  virtual void  v9(); // _ZN8S21055C32v9Ev
  ~S21055C3(); // tgen
  S21055C3(); // tgen
};
//SIG(-1 S21055C3) C1{ VBC2{ v7 v8 Fp} v1 v2 v3 v4 v5 v6}


void  S21055C3 ::v4(){vfunc_called(this, "_ZN8S21055C32v4Ev");}
void  S21055C3 ::v5(){vfunc_called(this, "_ZN8S21055C32v5Ev");}
void  S21055C3 ::v6(){vfunc_called(this, "_ZN8S21055C32v6Ev");}
void  S21055C3 ::v7(){vfunc_called(this, "_ZN8S21055C32v7Ev");}
void  S21055C3 ::v8(){vfunc_called(this, "_ZN8S21055C32v8Ev");}
void  S21055C3 ::v9(){vfunc_called(this, "_ZN8S21055C32v9Ev");}
S21055C3 ::~S21055C3(){ note_dtor("S21055C3", this);} // tgen
S21055C3 ::S21055C3(){ note_ctor("S21055C3", this);} // tgen

static void Test_S21055C3()
{
  extern Class_Descriptor cd_S21055C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21055C3, buf);
    S21055C3 *dp, &lv = *(dp=new (buf) S21055C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21055C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21055C3)");
    check_base_class_offset(lv, (S21055C4*), ABISELECT(8,4), "S21055C3");
    test_class_info(&lv, &cd_S21055C3);
    dp->~S21055C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21055C3(Test_S21055C3, "S21055C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21055C3C1Ev();
extern void _ZN8S21055C3D1Ev();
Name_Map name_map_S21055C3[] = {
  NSPAIR(_ZN8S21055C3C1Ev),
  NSPAIR(_ZN8S21055C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21055C4;
extern VTBL_ENTRY _ZTI8S21055C4[];
extern  VTBL_ENTRY _ZTV8S21055C4[];
static Base_Class bases_S21055C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21055C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21055C3[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY vtc_S21055C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S21055C3[];
static  VTT_ENTRY vtt_S21055C3[] = {
  {&(_ZTV8S21055C3[3]),  3,15},
  {&(_ZTV8S21055C3[13]),  13,15},
};
extern VTBL_ENTRY _ZTI8S21055C3[];
extern  VTBL_ENTRY _ZTV8S21055C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C3[];
Class_Descriptor cd_S21055C3 = {  "S21055C3", // class name
  bases_S21055C3, 1,
  &(vtc_S21055C3[0]), // expected_vtbl_contents
  &(vtt_S21055C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21055C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21055C3),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21055C3),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  S21055C5  : virtual S21055C3 {
  void *s21055c5f0;
  ::S21055C4 s21055c5f1;
  ::S21055C4 s21055c5f2;
  virtual void  v10(); // _ZN8S21055C53v10Ev
  virtual void  v11(); // _ZN8S21055C53v11Ev
  ~S21055C5(); // tgen
  S21055C5(); // tgen
};
//SIG(-1 S21055C5) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} v1 v2 Fp FC3 FC3}


void  S21055C5 ::v10(){vfunc_called(this, "_ZN8S21055C53v10Ev");}
void  S21055C5 ::v11(){vfunc_called(this, "_ZN8S21055C53v11Ev");}
S21055C5 ::~S21055C5(){ note_dtor("S21055C5", this);} // tgen
S21055C5 ::S21055C5(){ note_ctor("S21055C5", this);} // tgen

static void Test_S21055C5()
{
  extern Class_Descriptor cd_S21055C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S21055C5, buf);
    S21055C5 *dp, &lv = *(dp=new (buf) S21055C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21055C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21055C5)");
    check_base_class_offset(lv, (S21055C4*)(S21055C3*), ABISELECT(48,24), "S21055C5");
    check_base_class_offset(lv, (S21055C3*), 0, "S21055C5");
    check_field_offset(lv, s21055c5f0, ABISELECT(8,4), "S21055C5.s21055c5f0");
    check_field_offset(lv, s21055c5f1, ABISELECT(16,8), "S21055C5.s21055c5f1");
    check_field_offset(lv, s21055c5f2, ABISELECT(32,16), "S21055C5.s21055c5f2");
    test_class_info(&lv, &cd_S21055C5);
    dp->~S21055C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21055C5(Test_S21055C5, "S21055C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S21055C5C1Ev();
extern void _ZN8S21055C5D1Ev();
Name_Map name_map_S21055C5[] = {
  NSPAIR(_ZN8S21055C5C1Ev),
  NSPAIR(_ZN8S21055C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21055C4;
extern VTBL_ENTRY _ZTI8S21055C4[];
extern  VTBL_ENTRY _ZTV8S21055C4[];
extern Class_Descriptor cd_S21055C3;
extern VTBL_ENTRY _ZTI8S21055C3[];
extern  VTBL_ENTRY _ZTV8S21055C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C3[];
static Base_Class bases_S21055C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21055C4,    ABISELECT(48,24), //bcp->offset
    18, //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_S21055C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21055C5[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C53v10Ev();
extern void _ZN8S21055C53v11Ev();
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY vtc_S21055C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v11Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S21055C5[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C3__8S21055C5[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
};
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C4__8S21055C3__8S21055C5[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
static  VTT_ENTRY vtt_S21055C5[] = {
  {&(_ZTV8S21055C5[10]),  10,24},
  {&(_ZTV8S21055C5[10]),  10,24},
  {&(_ZTV8S21055C5[22]),  22,24},
  {&(_tg__ZTV8S21055C3__8S21055C5[3]),  3,9},
  {&(_tg__ZTV8S21055C4__8S21055C3__8S21055C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21055C5[];
extern  VTBL_ENTRY _ZTV8S21055C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C5[];
Class_Descriptor cd_S21055C5 = {  "S21055C5", // class name
  bases_S21055C5, 2,
  &(vtc_S21055C5[0]), // expected_vtbl_contents
  &(vtt_S21055C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S21055C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21055C5),24, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21055C5),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  S21055C2  : virtual S21055C3 , S21055C5 {
  virtual void  v12(); // _ZN8S21055C23v12Ev
  virtual void  v13(); // _ZN8S21055C23v13Ev
  ~S21055C2(); // tgen
  S21055C2(); // tgen
};
//SIG(-1 S21055C2) C1{ VBC2{ VBC3{ v3 v4 Fp} v5 v6 v7 v8 v9 v10} BC4{ VBC2 v11 v12 Fp FC3 FC3} v1 v2}


void  S21055C2 ::v12(){vfunc_called(this, "_ZN8S21055C23v12Ev");}
void  S21055C2 ::v13(){vfunc_called(this, "_ZN8S21055C23v13Ev");}
S21055C2 ::~S21055C2(){ note_dtor("S21055C2", this);} // tgen
S21055C2 ::S21055C2(){ note_ctor("S21055C2", this);} // tgen

static void Test_S21055C2()
{
  extern Class_Descriptor cd_S21055C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S21055C2, buf);
    S21055C2 *dp, &lv = *(dp=new (buf) S21055C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21055C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21055C2)");
    check_base_class_offset(lv, (S21055C4*)(S21055C3*), ABISELECT(48,24), "S21055C2");
    check_base_class_offset(lv, (S21055C3*), 0, "S21055C2");
    check_base_class_offset(lv, (S21055C3*)(S21055C5*), 0, "S21055C2");
    check_base_class_offset(lv, (S21055C5*), 0, "S21055C2");
    test_class_info(&lv, &cd_S21055C2);
    dp->~S21055C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21055C2(Test_S21055C2, "S21055C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S21055C2C1Ev();
extern void _ZN8S21055C2D1Ev();
Name_Map name_map_S21055C2[] = {
  NSPAIR(_ZN8S21055C2C1Ev),
  NSPAIR(_ZN8S21055C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21055C4;
extern VTBL_ENTRY _ZTI8S21055C4[];
extern  VTBL_ENTRY _ZTV8S21055C4[];
extern Class_Descriptor cd_S21055C3;
extern VTBL_ENTRY _ZTI8S21055C3[];
extern  VTBL_ENTRY _ZTV8S21055C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C3[];
extern Class_Descriptor cd_S21055C5;
extern VTBL_ENTRY _ZTI8S21055C5[];
extern  VTBL_ENTRY _ZTV8S21055C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C5[];
static Base_Class bases_S21055C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21055C4,    ABISELECT(48,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21055C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21055C5,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21055C2[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C53v10Ev();
extern void _ZN8S21055C53v11Ev();
extern void _ZN8S21055C23v12Ev();
extern void _ZN8S21055C23v13Ev();
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY vtc_S21055C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C2[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21055C23v12Ev,
  (VTBL_ENTRY)&_ZN8S21055C23v13Ev,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C2[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S21055C2[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C53v10Ev();
extern void _ZN8S21055C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C5__8S21055C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v11Ev,
};
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C4__8S21055C5__8S21055C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C3__8S21055C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
};
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C4__8S21055C3__8S21055C2[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
static  VTT_ENTRY vtt_S21055C2[] = {
  {&(_ZTV8S21055C2[10]),  10,26},
  {&(_tg__ZTV8S21055C5__8S21055C2[10]),  10,18},
  {&(_tg__ZTV8S21055C5__8S21055C2[10]),  10,18},
  {&(_tg__ZTV8S21055C4__8S21055C5__8S21055C2[4]),  4,6},
  {&(_ZTV8S21055C2[10]),  10,26},
  {&(_ZTV8S21055C2[24]),  24,26},
  {&(_tg__ZTV8S21055C3__8S21055C2[3]),  3,9},
  {&(_tg__ZTV8S21055C4__8S21055C3__8S21055C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21055C2[];
extern  VTBL_ENTRY _ZTV8S21055C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C2[];
Class_Descriptor cd_S21055C2 = {  "S21055C2", // class name
  bases_S21055C2, 3,
  &(vtc_S21055C2[0]), // expected_vtbl_contents
  &(vtt_S21055C2[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S21055C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21055C2),26, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21055C2),8, //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  S21055C1  : virtual S21055C2 {
  int s21055c1f0;
  __tsi64 s21055c1f1[6];
  virtual void  v1(); // _ZN8S21055C12v1Ev
  ~S21055C1(); // tgen
  S21055C1(); // tgen
};
//SIG(1 S21055C1) C1{ VBC2{ VBC3{ VBC4{ v2 v3 Fp} v4 v5 v6 v7 v8 v9} BC5{ VBC3 v10 v11 Fp FC4 FC4} v12 v13} v1 Fi FL[6]}


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

static void Test_S21055C1()
{
  extern Class_Descriptor cd_S21055C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S21055C1, buf);
    S21055C1 *dp, &lv = *(dp=new (buf) S21055C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S21055C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21055C1)");
    check_base_class_offset(lv, (S21055C4*)(S21055C3*), ABISELECT(112,80), "S21055C1");
    check_base_class_offset(lv, (S21055C3*)(S21055C2*), 0, "S21055C1");
    check_base_class_offset(lv, (S21055C3*)(S21055C5*)(S21055C2*), 0, "S21055C1");
    check_base_class_offset(lv, (S21055C5*)(S21055C2*), ABISELECT(64,56), "S21055C1");
    check_base_class_offset(lv, (S21055C2*), ABISELECT(64,56), "S21055C1");
    check_field_offset(lv, s21055c1f0, ABISELECT(8,4), "S21055C1.s21055c1f0");
    check_field_offset(lv, s21055c1f1, ABISELECT(16,8), "S21055C1.s21055c1f1");
    test_class_info(&lv, &cd_S21055C1);
    dp->~S21055C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21055C1(Test_S21055C1, "S21055C1", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN8S21055C1C1Ev();
extern void _ZN8S21055C1D1Ev();
Name_Map name_map_S21055C1[] = {
  NSPAIR(_ZN8S21055C1C1Ev),
  NSPAIR(_ZN8S21055C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21055C4;
extern VTBL_ENTRY _ZTI8S21055C4[];
extern  VTBL_ENTRY _ZTV8S21055C4[];
extern Class_Descriptor cd_S21055C3;
extern VTBL_ENTRY _ZTI8S21055C3[];
extern  VTBL_ENTRY _ZTV8S21055C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C3[];
extern Class_Descriptor cd_S21055C5;
extern VTBL_ENTRY _ZTI8S21055C5[];
extern  VTBL_ENTRY _ZTV8S21055C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C5[];
extern Class_Descriptor cd_S21055C2;
extern VTBL_ENTRY _ZTI8S21055C2[];
extern  VTBL_ENTRY _ZTV8S21055C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C2[];
static Base_Class bases_S21055C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21055C4,    ABISELECT(112,80), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21055C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21055C5,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21055C2,    ABISELECT(64,56), //bcp->offset
    18, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21055C1[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C12v1Ev();
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C53v10Ev();
extern void _ZN8S21055C53v11Ev();
extern void _ZN8S21055C23v12Ev();
extern void _ZN8S21055C23v13Ev();
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY vtc_S21055C1[] = {
  0,
  ABISELECT(64,56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C1[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C12v1Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(48,24),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21055C1[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21055C23v12Ev,
  (VTBL_ENTRY)&_ZN8S21055C23v13Ev,
  0,
  0,
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21055C1[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S21055C1[];
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C53v10Ev();
extern void _ZN8S21055C53v11Ev();
extern void _ZN8S21055C23v12Ev();
extern void _ZN8S21055C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C2__8S21055C1[] = {
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C2[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21055C23v12Ev,
  (VTBL_ENTRY)&_ZN8S21055C23v13Ev,
};
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
extern void _ZN8S21055C53v10Ev();
extern void _ZN8S21055C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C58S21055C2__8S21055C1[] = {
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21055C53v11Ev,
};
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C3__8S21055C58S21055C2__8S21055C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,80),
  ABISELECT(64,56),
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
};
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C4__8S21055C58S21055C2__8S21055C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C5[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C3__8S21055C2__8S21055C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,80),
  ABISELECT(64,56),
  (VTBL_ENTRY)&(_ZTI8S21055C2[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
};
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C4__8S21055C2__8S21055C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21055C2[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
extern void _ZN8S21055C32v4Ev();
extern void _ZN8S21055C32v5Ev();
extern void _ZN8S21055C32v6Ev();
extern void _ZN8S21055C32v7Ev();
extern void _ZN8S21055C32v8Ev();
extern void _ZN8S21055C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C3__8S21055C1[] = {
  ABISELECT(112,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C32v4Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v5Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v6Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21055C32v9Ev,
};
extern void _ZN8S21055C42v2Ev();
extern void _ZN8S21055C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21055C4__8S21055C3__8S21055C1[] = {
  0,
  0,
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21055C3[0]),
  (VTBL_ENTRY)&_ZN8S21055C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21055C42v3Ev,
};
static  VTT_ENTRY vtt_S21055C1[] = {
  {&(_ZTV8S21055C1[11]),  11,48},
  {&(_ZTV8S21055C1[32]),  32,48},
  {&(_ZTV8S21055C1[11]),  11,48},
  {&(_ZTV8S21055C1[46]),  46,48},
  {&(_tg__ZTV8S21055C2__8S21055C1[10]),  10,20},
  {&(_tg__ZTV8S21055C58S21055C2__8S21055C1[10]),  10,18},
  {&(_tg__ZTV8S21055C3__8S21055C58S21055C2__8S21055C1[9]),  9,15},
  {&(_tg__ZTV8S21055C4__8S21055C58S21055C2__8S21055C1[4]),  4,6},
  {&(_tg__ZTV8S21055C3__8S21055C2__8S21055C1[9]),  9,15},
  {&(_tg__ZTV8S21055C4__8S21055C2__8S21055C1[4]),  4,6},
  {&(_tg__ZTV8S21055C3__8S21055C1[3]),  3,9},
  {&(_tg__ZTV8S21055C4__8S21055C3__8S21055C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21055C1[];
extern  VTBL_ENTRY _ZTV8S21055C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21055C1[];
Class_Descriptor cd_S21055C1 = {  "S21055C1", // class name
  bases_S21055C1, 4,
  &(vtc_S21055C1[0]), // expected_vtbl_contents
  &(vtt_S21055C1[0]), // expected_vtt_contents
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI8S21055C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21055C1),48, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21055C1),12, //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  S2798C2  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s2798c2f0;
  int s2798c2f1;
  void *s2798c2f2;
  char s2798c2f3;
  int s2798c2f4;
  virtual  ~S2798C2(); // _ZN7S2798C2D1Ev
  virtual void  v3(); // _ZN7S2798C22v3Ev
  virtual void  v4(); // _ZN7S2798C22v4Ev
  virtual void  v5(); // _ZN7S2798C22v5Ev
  virtual void  v6(); // _ZN7S2798C22v6Ev
  S2798C2(); // tgen
};
//SIG(-1 S2798C2) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S2798C2 ::~S2798C2(){ note_dtor("S2798C2", this);}
void  S2798C2 ::v3(){vfunc_called(this, "_ZN7S2798C22v3Ev");}
void  S2798C2 ::v4(){vfunc_called(this, "_ZN7S2798C22v4Ev");}
void  S2798C2 ::v5(){vfunc_called(this, "_ZN7S2798C22v5Ev");}
void  S2798C2 ::v6(){vfunc_called(this, "_ZN7S2798C22v6Ev");}
S2798C2 ::S2798C2(){ note_ctor("S2798C2", this);} // tgen

static void Test_S2798C2()
{
  extern Class_Descriptor cd_S2798C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S2798C2, buf);
    S2798C2 *dp, &lv = *(dp=new (buf) S2798C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S2798C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2798C2)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S2798C2");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S2798C2");
    check_field_offset(lv, s2798c2f0, ABISELECT(24,12), "S2798C2.s2798c2f0");
    check_field_offset(lv, s2798c2f1, ABISELECT(48,28), "S2798C2.s2798c2f1");
    check_field_offset(lv, s2798c2f2, ABISELECT(56,32), "S2798C2.s2798c2f2");
    check_field_offset(lv, s2798c2f3, ABISELECT(64,36), "S2798C2.s2798c2f3");
    check_field_offset(lv, s2798c2f4, ABISELECT(68,40), "S2798C2.s2798c2f4");
    test_class_info(&lv, &cd_S2798C2);
    dp->~S2798C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2798C2(Test_S2798C2, "S2798C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S2798C2C1Ev();
extern void _ZN7S2798C2D1Ev();
Name_Map name_map_S2798C2[] = {
  NSPAIR(_ZN7S2798C2C1Ev),
  NSPAIR(_ZN7S2798C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S2798C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2798C2[];
extern void _ZN7S2798C2D1Ev();
extern void _ZN7S2798C2D0Ev();
extern void _ZN7S2798C22v3Ev();
extern void _ZN7S2798C22v4Ev();
extern void _ZN7S2798C22v5Ev();
extern void _ZN7S2798C22v6Ev();
static  VTBL_ENTRY vtc_S2798C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2798C2[0]),
  (VTBL_ENTRY)&_ZN7S2798C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2798C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S2798C2[];
extern  VTBL_ENTRY _ZTV7S2798C2[];
Class_Descriptor cd_S2798C2 = {  "S2798C2", // class name
  bases_S2798C2, 2,
  &(vtc_S2798C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S2798C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2798C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2798C1  : S2798C2 {
  void *s2798c1f0;
  virtual  ~S2798C1(); // _ZN7S2798C1D1Ev
  virtual void  v1(); // _ZN7S2798C12v1Ev
  virtual void  v2(); // _ZN7S2798C12v2Ev
  S2798C1(); // tgen
};
//SIG(1 S2798C1) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v3 v4 v5 v6 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd v1 v2 Fp}


 S2798C1 ::~S2798C1(){ note_dtor("S2798C1", this);}
void  S2798C1 ::v1(){vfunc_called(this, "_ZN7S2798C12v1Ev");}
void  S2798C1 ::v2(){vfunc_called(this, "_ZN7S2798C12v2Ev");}
S2798C1 ::S2798C1(){ note_ctor("S2798C1", this);} // tgen

static void Test_S2798C1()
{
  extern Class_Descriptor cd_S2798C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S2798C1, buf);
    S2798C1 *dp, &lv = *(dp=new (buf) S2798C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S2798C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2798C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S2798C2*), ABISELECT(8,4), "S2798C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S2798C2*), ABISELECT(16,8), "S2798C1");
    check_base_class_offset(lv, (S2798C2*), 0, "S2798C1");
    check_field_offset(lv, s2798c1f0, ABISELECT(72,44), "S2798C1.s2798c1f0");
    test_class_info(&lv, &cd_S2798C1);
    dp->~S2798C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2798C1(Test_S2798C1, "S2798C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S2798C1C1Ev();
extern void _ZN7S2798C1D1Ev();
Name_Map name_map_S2798C1[] = {
  NSPAIR(_ZN7S2798C1C1Ev),
  NSPAIR(_ZN7S2798C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S2798C2;
extern VTBL_ENTRY _ZTI7S2798C2[];
extern  VTBL_ENTRY _ZTV7S2798C2[];
static Base_Class bases_S2798C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2798C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2798C1[];
extern void _ZN7S2798C1D1Ev();
extern void _ZN7S2798C1D0Ev();
extern void _ZN7S2798C22v3Ev();
extern void _ZN7S2798C22v4Ev();
extern void _ZN7S2798C22v5Ev();
extern void _ZN7S2798C22v6Ev();
extern void _ZN7S2798C12v1Ev();
extern void _ZN7S2798C12v2Ev();
static  VTBL_ENTRY vtc_S2798C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2798C1[0]),
  (VTBL_ENTRY)&_ZN7S2798C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2798C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2798C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2798C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2798C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2798C1[];
extern  VTBL_ENTRY _ZTV7S2798C1[];
Class_Descriptor cd_S2798C1 = {  "S2798C1", // class name
  bases_S2798C1, 3,
  &(vtc_S2798C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S2798C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2798C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2795C2  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s2795c2f0;
  int s2795c2f1;
  void *s2795c2f2;
  char s2795c2f3;
  int s2795c2f4;
  virtual  ~S2795C2(); // _ZN7S2795C2D1Ev
  virtual void  v2(); // _ZN7S2795C22v2Ev
  virtual void  v3(); // _ZN7S2795C22v3Ev
  virtual void  v4(); // _ZN7S2795C22v4Ev
  virtual void  v5(); // _ZN7S2795C22v5Ev
  S2795C2(); // tgen
};
//SIG(-1 S2795C2) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S2795C2 ::~S2795C2(){ note_dtor("S2795C2", this);}
void  S2795C2 ::v2(){vfunc_called(this, "_ZN7S2795C22v2Ev");}
void  S2795C2 ::v3(){vfunc_called(this, "_ZN7S2795C22v3Ev");}
void  S2795C2 ::v4(){vfunc_called(this, "_ZN7S2795C22v4Ev");}
void  S2795C2 ::v5(){vfunc_called(this, "_ZN7S2795C22v5Ev");}
S2795C2 ::S2795C2(){ note_ctor("S2795C2", this);} // tgen

static void Test_S2795C2()
{
  extern Class_Descriptor cd_S2795C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S2795C2, buf);
    S2795C2 *dp, &lv = *(dp=new (buf) S2795C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S2795C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2795C2)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S2795C2");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S2795C2");
    check_field_offset(lv, s2795c2f0, ABISELECT(24,12), "S2795C2.s2795c2f0");
    check_field_offset(lv, s2795c2f1, ABISELECT(48,28), "S2795C2.s2795c2f1");
    check_field_offset(lv, s2795c2f2, ABISELECT(56,32), "S2795C2.s2795c2f2");
    check_field_offset(lv, s2795c2f3, ABISELECT(64,36), "S2795C2.s2795c2f3");
    check_field_offset(lv, s2795c2f4, ABISELECT(68,40), "S2795C2.s2795c2f4");
    test_class_info(&lv, &cd_S2795C2);
    dp->~S2795C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2795C2(Test_S2795C2, "S2795C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S2795C2C1Ev();
extern void _ZN7S2795C2D1Ev();
Name_Map name_map_S2795C2[] = {
  NSPAIR(_ZN7S2795C2C1Ev),
  NSPAIR(_ZN7S2795C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S2795C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2795C2[];
extern void _ZN7S2795C2D1Ev();
extern void _ZN7S2795C2D0Ev();
extern void _ZN7S2795C22v2Ev();
extern void _ZN7S2795C22v3Ev();
extern void _ZN7S2795C22v4Ev();
extern void _ZN7S2795C22v5Ev();
static  VTBL_ENTRY vtc_S2795C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2795C2[0]),
  (VTBL_ENTRY)&_ZN7S2795C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2795C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v2Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S2795C2[];
extern  VTBL_ENTRY _ZTV7S2795C2[];
Class_Descriptor cd_S2795C2 = {  "S2795C2", // class name
  bases_S2795C2, 2,
  &(vtc_S2795C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S2795C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2795C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2795C1  : S2795C2 {
  void *s2795c1f0[2];
  virtual  ~S2795C1(); // _ZN7S2795C1D1Ev
  virtual void  v1(); // _ZN7S2795C12v1Ev
  S2795C1(); // tgen
};
//SIG(1 S2795C1) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v2 v3 v4 v5 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd v1 Fp[2]}


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

static void Test_S2795C1()
{
  extern Class_Descriptor cd_S2795C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S2795C1, buf);
    S2795C1 *dp, &lv = *(dp=new (buf) S2795C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S2795C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2795C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S2795C2*), ABISELECT(8,4), "S2795C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S2795C2*), ABISELECT(16,8), "S2795C1");
    check_base_class_offset(lv, (S2795C2*), 0, "S2795C1");
    check_field_offset(lv, s2795c1f0, ABISELECT(72,44), "S2795C1.s2795c1f0");
    test_class_info(&lv, &cd_S2795C1);
    dp->~S2795C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2795C1(Test_S2795C1, "S2795C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S2795C1C1Ev();
extern void _ZN7S2795C1D1Ev();
Name_Map name_map_S2795C1[] = {
  NSPAIR(_ZN7S2795C1C1Ev),
  NSPAIR(_ZN7S2795C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S2795C2;
extern VTBL_ENTRY _ZTI7S2795C2[];
extern  VTBL_ENTRY _ZTV7S2795C2[];
static Base_Class bases_S2795C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2795C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2795C1[];
extern void _ZN7S2795C1D1Ev();
extern void _ZN7S2795C1D0Ev();
extern void _ZN7S2795C22v2Ev();
extern void _ZN7S2795C22v3Ev();
extern void _ZN7S2795C22v4Ev();
extern void _ZN7S2795C22v5Ev();
extern void _ZN7S2795C12v1Ev();
static  VTBL_ENTRY vtc_S2795C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2795C1[0]),
  (VTBL_ENTRY)&_ZN7S2795C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2795C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v2Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v4Ev,
  (VTBL_ENTRY)&_ZN7S2795C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2795C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2795C1[];
extern  VTBL_ENTRY _ZTV7S2795C1[];
Class_Descriptor cd_S2795C1 = {  "S2795C1", // class name
  bases_S2795C1, 3,
  &(vtc_S2795C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S2795C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2795C1),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  S9559C2_nt  {
  virtual  ~S9559C2_nt(); // _ZN10S9559C2_ntD1Ev
  virtual void  v3(); // _ZN10S9559C2_nt2v3Ev
  virtual void  v4(); // _ZN10S9559C2_nt2v4Ev
  S9559C2_nt(); // tgen
};
//SIG(-1 S9559C2_nt) C1{ vd v1 v2}


 S9559C2_nt ::~S9559C2_nt(){ note_dtor("S9559C2_nt", this);}
void  S9559C2_nt ::v3(){vfunc_called(this, "_ZN10S9559C2_nt2v3Ev");}
void  S9559C2_nt ::v4(){vfunc_called(this, "_ZN10S9559C2_nt2v4Ev");}
S9559C2_nt ::S9559C2_nt(){ note_ctor("S9559C2_nt", this);} // tgen

//skip512 S9559C2_nt

#else // __cplusplus

extern void _ZN10S9559C2_ntC1Ev();
extern void _ZN10S9559C2_ntD1Ev();
Name_Map name_map_S9559C2_nt[] = {
  NSPAIR(_ZN10S9559C2_ntC1Ev),
  NSPAIR(_ZN10S9559C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9559C2_nt[];
extern void _ZN10S9559C2_ntD1Ev();
extern void _ZN10S9559C2_ntD0Ev();
extern void _ZN10S9559C2_nt2v3Ev();
extern void _ZN10S9559C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S9559C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9559C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9559C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9559C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9559C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S9559C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S9559C2_nt[];
VTBL_ENTRY *P__ZTI10S9559C2_nt = _ZTI10S9559C2_nt; 
extern  VTBL_ENTRY _ZTV10S9559C2_nt[];
Class_Descriptor cd_S9559C2_nt = {  "S9559C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9559C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9559C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9559C2_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  S9559C1  : S9559C2_nt {
  void *s9559c1f0;
  ::S900C18 s9559c1f1;
  virtual void  v1(); // _ZN7S9559C12v1Ev
  virtual void  v2(); // _ZN7S9559C12v2Ev
  ~S9559C1(); // tgen
  S9559C1(); // tgen
};
//SIG(1 S9559C1) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ BC4{ FC5{ m Fp Fc[3] Fi} FC5[2] FC6{ m FC5[4] Fi} FC5 FC5} FC5 FC5}}


void  S9559C1 ::v1(){vfunc_called(this, "_ZN7S9559C12v1Ev");}
void  S9559C1 ::v2(){vfunc_called(this, "_ZN7S9559C12v2Ev");}
S9559C1 ::~S9559C1(){ note_dtor("S9559C1", this);} // tgen
S9559C1 ::S9559C1(){ note_ctor("S9559C1", this);} // tgen

static void Test_S9559C1()
{
  extern Class_Descriptor cd_S9559C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S9559C1, buf);
    S9559C1 *dp, &lv = *(dp=new (buf) S9559C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S9559C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9559C1)");
    check_base_class_offset(lv, (S9559C2_nt*), 0, "S9559C1");
    check_field_offset(lv, s9559c1f0, ABISELECT(8,4), "S9559C1.s9559c1f0");
    check_field_offset(lv, s9559c1f1, ABISELECT(16,8), "S9559C1.s9559c1f1");
    test_class_info(&lv, &cd_S9559C1);
    dp->~S9559C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9559C1(Test_S9559C1, "S9559C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S9559C1C1Ev();
extern void _ZN7S9559C1D1Ev();
Name_Map name_map_S9559C1[] = {
  NSPAIR(_ZN7S9559C1C1Ev),
  NSPAIR(_ZN7S9559C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9559C2_nt;
extern VTBL_ENTRY _ZTI10S9559C2_nt[];
extern  VTBL_ENTRY _ZTV10S9559C2_nt[];
static Base_Class bases_S9559C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9559C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9559C1[];
extern void _ZN7S9559C1D1Ev();
extern void _ZN7S9559C1D0Ev();
extern void _ZN10S9559C2_nt2v3Ev();
extern void _ZN10S9559C2_nt2v4Ev();
extern void _ZN7S9559C12v1Ev();
extern void _ZN7S9559C12v2Ev();
static  VTBL_ENTRY vtc_S9559C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9559C1[0]),
  (VTBL_ENTRY)&_ZN7S9559C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9559C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9559C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S9559C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S9559C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9559C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9559C1[];
extern  VTBL_ENTRY _ZTV7S9559C1[];
Class_Descriptor cd_S9559C1 = {  "S9559C1", // class name
  bases_S9559C1, 1,
  &(vtc_S9559C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S9559C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9559C1),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  S9086C2  {
  virtual  ~S9086C2(); // _ZN7S9086C2D1Ev
  virtual void  v2(); // _ZN7S9086C22v2Ev
  S9086C2(); // tgen
};
//SIG(-1 S9086C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9086C2C1Ev();
extern void _ZN7S9086C2D1Ev();
Name_Map name_map_S9086C2[] = {
  NSPAIR(_ZN7S9086C2C1Ev),
  NSPAIR(_ZN7S9086C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9086C2[];
extern void _ZN7S9086C2D1Ev();
extern void _ZN7S9086C2D0Ev();
extern void _ZN7S9086C22v2Ev();
static  VTBL_ENTRY vtc_S9086C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9086C2[0]),
  (VTBL_ENTRY)&_ZN7S9086C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9086C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9086C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9086C2[];
extern  VTBL_ENTRY _ZTV7S9086C2[];
Class_Descriptor cd_S9086C2 = {  "S9086C2", // class name
  0,0,//no base classes
  &(vtc_S9086C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9086C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9086C2),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  S9086C1  : S9086C2 {
  void *s9086c1f0;
  ::S900C18 s9086c1f1;
  virtual  ~S9086C1(); // _ZN7S9086C1D1Ev
  virtual void  v1(); // _ZN7S9086C12v1Ev
  S9086C1(); // tgen
};
//SIG(1 S9086C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ BC4{ FC5{ m Fp Fc[3] Fi} FC5[2] FC6{ m FC5[4] Fi} FC5 FC5} FC5 FC5}}


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

static void Test_S9086C1()
{
  extern Class_Descriptor cd_S9086C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S9086C1, buf);
    S9086C1 *dp, &lv = *(dp=new (buf) S9086C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S9086C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9086C1)");
    check_base_class_offset(lv, (S9086C2*), 0, "S9086C1");
    check_field_offset(lv, s9086c1f0, ABISELECT(8,4), "S9086C1.s9086c1f0");
    check_field_offset(lv, s9086c1f1, ABISELECT(16,8), "S9086C1.s9086c1f1");
    test_class_info(&lv, &cd_S9086C1);
    dp->~S9086C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9086C1(Test_S9086C1, "S9086C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S9086C1C1Ev();
extern void _ZN7S9086C1D1Ev();
Name_Map name_map_S9086C1[] = {
  NSPAIR(_ZN7S9086C1C1Ev),
  NSPAIR(_ZN7S9086C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9086C2;
extern VTBL_ENTRY _ZTI7S9086C2[];
extern  VTBL_ENTRY _ZTV7S9086C2[];
static Base_Class bases_S9086C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9086C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9086C1[];
extern void _ZN7S9086C1D1Ev();
extern void _ZN7S9086C1D0Ev();
extern void _ZN7S9086C22v2Ev();
extern void _ZN7S9086C12v1Ev();
static  VTBL_ENTRY vtc_S9086C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9086C1[0]),
  (VTBL_ENTRY)&_ZN7S9086C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9086C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9086C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9086C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9086C1[];
extern  VTBL_ENTRY _ZTV7S9086C1[];
Class_Descriptor cd_S9086C1 = {  "S9086C1", // class name
  bases_S9086C1, 1,
  &(vtc_S9086C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S9086C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9086C1),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  S7022C2  {
  int s7022c2f0[2];
  virtual  ~S7022C2(); // _ZN7S7022C2D1Ev
  virtual void  v6(); // _ZN7S7022C22v6Ev
  virtual void  v7(); // _ZN7S7022C22v7Ev
  virtual void  v8(); // _ZN7S7022C22v8Ev
  virtual void  v9(); // _ZN7S7022C22v9Ev
  virtual void  v10(); // _ZN7S7022C23v10Ev
  virtual void  v11(); // _ZN7S7022C23v11Ev
  virtual void  v12(); // _ZN7S7022C23v12Ev
  virtual void  v13(); // _ZN7S7022C23v13Ev
  virtual void  v14(); // _ZN7S7022C23v14Ev
  virtual void  v15(); // _ZN7S7022C23v15Ev
  virtual void  v16(); // _ZN7S7022C23v16Ev
  virtual void  v17(); // _ZN7S7022C23v17Ev
  virtual void  v18(); // _ZN7S7022C23v18Ev
  virtual void  v19(); // _ZN7S7022C23v19Ev
  S7022C2(); // tgen
};
//SIG(-1 S7022C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[2]}


 S7022C2 ::~S7022C2(){ note_dtor("S7022C2", this);}
void  S7022C2 ::v6(){vfunc_called(this, "_ZN7S7022C22v6Ev");}
void  S7022C2 ::v7(){vfunc_called(this, "_ZN7S7022C22v7Ev");}
void  S7022C2 ::v8(){vfunc_called(this, "_ZN7S7022C22v8Ev");}
void  S7022C2 ::v9(){vfunc_called(this, "_ZN7S7022C22v9Ev");}
void  S7022C2 ::v10(){vfunc_called(this, "_ZN7S7022C23v10Ev");}
void  S7022C2 ::v11(){vfunc_called(this, "_ZN7S7022C23v11Ev");}
void  S7022C2 ::v12(){vfunc_called(this, "_ZN7S7022C23v12Ev");}
void  S7022C2 ::v13(){vfunc_called(this, "_ZN7S7022C23v13Ev");}
void  S7022C2 ::v14(){vfunc_called(this, "_ZN7S7022C23v14Ev");}
void  S7022C2 ::v15(){vfunc_called(this, "_ZN7S7022C23v15Ev");}
void  S7022C2 ::v16(){vfunc_called(this, "_ZN7S7022C23v16Ev");}
void  S7022C2 ::v17(){vfunc_called(this, "_ZN7S7022C23v17Ev");}
void  S7022C2 ::v18(){vfunc_called(this, "_ZN7S7022C23v18Ev");}
void  S7022C2 ::v19(){vfunc_called(this, "_ZN7S7022C23v19Ev");}
S7022C2 ::S7022C2(){ note_ctor("S7022C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7022C2C1Ev();
extern void _ZN7S7022C2D1Ev();
Name_Map name_map_S7022C2[] = {
  NSPAIR(_ZN7S7022C2C1Ev),
  NSPAIR(_ZN7S7022C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7022C2[];
extern void _ZN7S7022C2D1Ev();
extern void _ZN7S7022C2D0Ev();
extern void _ZN7S7022C22v6Ev();
extern void _ZN7S7022C22v7Ev();
extern void _ZN7S7022C22v8Ev();
extern void _ZN7S7022C22v9Ev();
extern void _ZN7S7022C23v10Ev();
extern void _ZN7S7022C23v11Ev();
extern void _ZN7S7022C23v12Ev();
extern void _ZN7S7022C23v13Ev();
extern void _ZN7S7022C23v14Ev();
extern void _ZN7S7022C23v15Ev();
extern void _ZN7S7022C23v16Ev();
extern void _ZN7S7022C23v17Ev();
extern void _ZN7S7022C23v18Ev();
extern void _ZN7S7022C23v19Ev();
static  VTBL_ENTRY vtc_S7022C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7022C2[0]),
  (VTBL_ENTRY)&_ZN7S7022C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7022C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S7022C2[];
extern  VTBL_ENTRY _ZTV7S7022C2[];
Class_Descriptor cd_S7022C2 = {  "S7022C2", // class name
  0,0,//no base classes
  &(vtc_S7022C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7022C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7022C2),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  S7022C1  : S7022C2 {
  virtual  ~S7022C1(); // _ZN7S7022C1D1Ev
  virtual void  v1(); // _ZN7S7022C12v1Ev
  virtual void  v2(); // _ZN7S7022C12v2Ev
  virtual void  v3(); // _ZN7S7022C12v3Ev
  virtual void  v4(); // _ZN7S7022C12v4Ev
  virtual void  v5(); // _ZN7S7022C12v5Ev
  S7022C1(); // tgen
};
//SIG(1 S7022C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi[2]} vd v1 v2 v3 v4 v5}


 S7022C1 ::~S7022C1(){ note_dtor("S7022C1", this);}
void  S7022C1 ::v1(){vfunc_called(this, "_ZN7S7022C12v1Ev");}
void  S7022C1 ::v2(){vfunc_called(this, "_ZN7S7022C12v2Ev");}
void  S7022C1 ::v3(){vfunc_called(this, "_ZN7S7022C12v3Ev");}
void  S7022C1 ::v4(){vfunc_called(this, "_ZN7S7022C12v4Ev");}
void  S7022C1 ::v5(){vfunc_called(this, "_ZN7S7022C12v5Ev");}
S7022C1 ::S7022C1(){ note_ctor("S7022C1", this);} // tgen

static void Test_S7022C1()
{
  extern Class_Descriptor cd_S7022C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7022C1, buf);
    S7022C1 *dp, &lv = *(dp=new (buf) S7022C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7022C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7022C1)");
    check_base_class_offset(lv, (S7022C2*), 0, "S7022C1");
    test_class_info(&lv, &cd_S7022C1);
    dp->~S7022C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7022C1(Test_S7022C1, "S7022C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7022C1C1Ev();
extern void _ZN7S7022C1D1Ev();
Name_Map name_map_S7022C1[] = {
  NSPAIR(_ZN7S7022C1C1Ev),
  NSPAIR(_ZN7S7022C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7022C2;
extern VTBL_ENTRY _ZTI7S7022C2[];
extern  VTBL_ENTRY _ZTV7S7022C2[];
static Base_Class bases_S7022C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7022C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7022C1[];
extern void _ZN7S7022C1D1Ev();
extern void _ZN7S7022C1D0Ev();
extern void _ZN7S7022C22v6Ev();
extern void _ZN7S7022C22v7Ev();
extern void _ZN7S7022C22v8Ev();
extern void _ZN7S7022C22v9Ev();
extern void _ZN7S7022C23v10Ev();
extern void _ZN7S7022C23v11Ev();
extern void _ZN7S7022C23v12Ev();
extern void _ZN7S7022C23v13Ev();
extern void _ZN7S7022C23v14Ev();
extern void _ZN7S7022C23v15Ev();
extern void _ZN7S7022C23v16Ev();
extern void _ZN7S7022C23v17Ev();
extern void _ZN7S7022C23v18Ev();
extern void _ZN7S7022C23v19Ev();
extern void _ZN7S7022C12v1Ev();
extern void _ZN7S7022C12v2Ev();
extern void _ZN7S7022C12v3Ev();
extern void _ZN7S7022C12v4Ev();
extern void _ZN7S7022C12v5Ev();
static  VTBL_ENTRY vtc_S7022C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7022C1[0]),
  (VTBL_ENTRY)&_ZN7S7022C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7022C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7022C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7022C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7022C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7022C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7022C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7022C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7022C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7022C1[];
extern  VTBL_ENTRY _ZTV7S7022C1[];
Class_Descriptor cd_S7022C1 = {  "S7022C1", // class name
  bases_S7022C1, 1,
  &(vtc_S7022C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7022C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7022C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2794C2  : S19894C6_nt , S5757C19_nt {
  ::S2796C5_nt s2794c2f0;
  int s2794c2f1;
  void *s2794c2f2;
  char s2794c2f3;
  int s2794c2f4;
  virtual  ~S2794C2(); // _ZN7S2794C2D1Ev
  virtual void  v1(); // _ZN7S2794C22v1Ev
  virtual void  v2(); // _ZN7S2794C22v2Ev
  virtual void  v3(); // _ZN7S2794C22v3Ev
  virtual void  v4(); // _ZN7S2794C22v4Ev
  S2794C2(); // tgen
};
//SIG(-1 S2794C2) C1{ BC2{ m Fp} BC3{ m Fp} vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp Fc Fi}


 S2794C2 ::~S2794C2(){ note_dtor("S2794C2", this);}
void  S2794C2 ::v1(){vfunc_called(this, "_ZN7S2794C22v1Ev");}
void  S2794C2 ::v2(){vfunc_called(this, "_ZN7S2794C22v2Ev");}
void  S2794C2 ::v3(){vfunc_called(this, "_ZN7S2794C22v3Ev");}
void  S2794C2 ::v4(){vfunc_called(this, "_ZN7S2794C22v4Ev");}
S2794C2 ::S2794C2(){ note_ctor("S2794C2", this);} // tgen

static void Test_S2794C2()
{
  extern Class_Descriptor cd_S2794C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S2794C2, buf);
    S2794C2 *dp, &lv = *(dp=new (buf) S2794C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S2794C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2794C2)");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S2794C2");
    check_base_class_offset(lv, (S5757C19_nt*), ABISELECT(16,8), "S2794C2");
    check_field_offset(lv, s2794c2f0, ABISELECT(24,12), "S2794C2.s2794c2f0");
    check_field_offset(lv, s2794c2f1, ABISELECT(48,28), "S2794C2.s2794c2f1");
    check_field_offset(lv, s2794c2f2, ABISELECT(56,32), "S2794C2.s2794c2f2");
    check_field_offset(lv, s2794c2f3, ABISELECT(64,36), "S2794C2.s2794c2f3");
    check_field_offset(lv, s2794c2f4, ABISELECT(68,40), "S2794C2.s2794c2f4");
    test_class_info(&lv, &cd_S2794C2);
    dp->~S2794C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2794C2(Test_S2794C2, "S2794C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S2794C2C1Ev();
extern void _ZN7S2794C2D1Ev();
Name_Map name_map_S2794C2[] = {
  NSPAIR(_ZN7S2794C2C1Ev),
  NSPAIR(_ZN7S2794C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
static Base_Class bases_S2794C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2794C2[];
extern void _ZN7S2794C2D1Ev();
extern void _ZN7S2794C2D0Ev();
extern void _ZN7S2794C22v1Ev();
extern void _ZN7S2794C22v2Ev();
extern void _ZN7S2794C22v3Ev();
extern void _ZN7S2794C22v4Ev();
static  VTBL_ENTRY vtc_S2794C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2794C2[0]),
  (VTBL_ENTRY)&_ZN7S2794C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2794C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v1Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v2Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S2794C2[];
extern  VTBL_ENTRY _ZTV7S2794C2[];
Class_Descriptor cd_S2794C2 = {  "S2794C2", // class name
  bases_S2794C2, 2,
  &(vtc_S2794C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S2794C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2794C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2794C1  : S2794C2 {
  virtual  ~S2794C1(); // _ZN7S2794C1D1Ev
  S2794C1(); // tgen
};
//SIG(1 S2794C1) C1{ BC2{ BC3{ m Fp} BC4{ m Fp} vd v1 v2 v3 v4 FC5{ m FC6{ m Fp Fi FC7{ m}} Fi} Fi Fp Fc Fi} vd}


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

static void Test_S2794C1()
{
  extern Class_Descriptor cd_S2794C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S2794C1, buf);
    S2794C1 *dp, &lv = *(dp=new (buf) S2794C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S2794C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2794C1)");
    check_base_class_offset(lv, (S19894C6_nt*)(S2794C2*), ABISELECT(8,4), "S2794C1");
    check_base_class_offset(lv, (S5757C19_nt*)(S2794C2*), ABISELECT(16,8), "S2794C1");
    check_base_class_offset(lv, (S2794C2*), 0, "S2794C1");
    test_class_info(&lv, &cd_S2794C1);
    dp->~S2794C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2794C1(Test_S2794C1, "S2794C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S2794C1C1Ev();
extern void _ZN7S2794C1D1Ev();
Name_Map name_map_S2794C1[] = {
  NSPAIR(_ZN7S2794C1C1Ev),
  NSPAIR(_ZN7S2794C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S5757C19_nt;
extern VTBL_ENTRY _ZTI11S5757C19_nt[];
extern Class_Descriptor cd_S2794C2;
extern VTBL_ENTRY _ZTI7S2794C2[];
extern  VTBL_ENTRY _ZTV7S2794C2[];
static Base_Class bases_S2794C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5757C19_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2794C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2794C1[];
extern void _ZN7S2794C1D1Ev();
extern void _ZN7S2794C1D0Ev();
extern void _ZN7S2794C22v1Ev();
extern void _ZN7S2794C22v2Ev();
extern void _ZN7S2794C22v3Ev();
extern void _ZN7S2794C22v4Ev();
static  VTBL_ENTRY vtc_S2794C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2794C1[0]),
  (VTBL_ENTRY)&_ZN7S2794C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2794C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v1Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v2Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v3Ev,
  (VTBL_ENTRY)&_ZN7S2794C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S2794C1[];
extern  VTBL_ENTRY _ZTV7S2794C1[];
Class_Descriptor cd_S2794C1 = {  "S2794C1", // class name
  bases_S2794C1, 3,
  &(vtc_S2794C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S2794C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2794C1),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  S9562C2  {
  virtual  ~S9562C2(); // _ZN7S9562C2D1Ev
  virtual void  v3(); // _ZN7S9562C22v3Ev
  virtual void  v4(); // _ZN7S9562C22v4Ev
  S9562C2(); // tgen
};
//SIG(-1 S9562C2) C1{ vd v1 v2}


 S9562C2 ::~S9562C2(){ note_dtor("S9562C2", this);}
void  S9562C2 ::v3(){vfunc_called(this, "_ZN7S9562C22v3Ev");}
void  S9562C2 ::v4(){vfunc_called(this, "_ZN7S9562C22v4Ev");}
S9562C2 ::S9562C2(){ note_ctor("S9562C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9562C2C1Ev();
extern void _ZN7S9562C2D1Ev();
Name_Map name_map_S9562C2[] = {
  NSPAIR(_ZN7S9562C2C1Ev),
  NSPAIR(_ZN7S9562C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9562C2[];
extern void _ZN7S9562C2D1Ev();
extern void _ZN7S9562C2D0Ev();
extern void _ZN7S9562C22v3Ev();
extern void _ZN7S9562C22v4Ev();
static  VTBL_ENTRY vtc_S9562C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9562C2[0]),
  (VTBL_ENTRY)&_ZN7S9562C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9562C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9562C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9562C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9562C2[];
extern  VTBL_ENTRY _ZTV7S9562C2[];
Class_Descriptor cd_S9562C2 = {  "S9562C2", // class name
  0,0,//no base classes
  &(vtc_S9562C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9562C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9562C2),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  S9562C1  : S9562C2 {
  void *s9562c1f0;
  ::S900C12 s9562c1f1;
  virtual void  v1(); // _ZN7S9562C12v1Ev
  virtual void  v2(); // _ZN7S9562C12v2Ev
  ~S9562C1(); // tgen
  S9562C1(); // tgen
};
//SIG(1 S9562C1) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ FC4{ m Fp Fc[3] Fi} FC4[2] FC5{ m FC4[4] Fi} FC4 FC4}}


void  S9562C1 ::v1(){vfunc_called(this, "_ZN7S9562C12v1Ev");}
void  S9562C1 ::v2(){vfunc_called(this, "_ZN7S9562C12v2Ev");}
S9562C1 ::~S9562C1(){ note_dtor("S9562C1", this);} // tgen
S9562C1 ::S9562C1(){ note_ctor("S9562C1", this);} // tgen

static void Test_S9562C1()
{
  extern Class_Descriptor cd_S9562C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,31)];
    init_test(&cd_S9562C1, buf);
    S9562C1 *dp, &lv = *(dp=new (buf) S9562C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,120), "sizeof(S9562C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9562C1)");
    check_base_class_offset(lv, (S9562C2*), 0, "S9562C1");
    check_field_offset(lv, s9562c1f0, ABISELECT(8,4), "S9562C1.s9562c1f0");
    check_field_offset(lv, s9562c1f1, ABISELECT(16,8), "S9562C1.s9562c1f1");
    test_class_info(&lv, &cd_S9562C1);
    dp->~S9562C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9562C1(Test_S9562C1, "S9562C1", ABISELECT(168,120));

#else // __cplusplus

extern void _ZN7S9562C1C1Ev();
extern void _ZN7S9562C1D1Ev();
Name_Map name_map_S9562C1[] = {
  NSPAIR(_ZN7S9562C1C1Ev),
  NSPAIR(_ZN7S9562C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9562C2;
extern VTBL_ENTRY _ZTI7S9562C2[];
extern  VTBL_ENTRY _ZTV7S9562C2[];
static Base_Class bases_S9562C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9562C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9562C1[];
extern void _ZN7S9562C1D1Ev();
extern void _ZN7S9562C1D0Ev();
extern void _ZN7S9562C22v3Ev();
extern void _ZN7S9562C22v4Ev();
extern void _ZN7S9562C12v1Ev();
extern void _ZN7S9562C12v2Ev();
static  VTBL_ENTRY vtc_S9562C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9562C1[0]),
  (VTBL_ENTRY)&_ZN7S9562C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9562C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9562C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9562C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9562C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9562C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9562C1[];
extern  VTBL_ENTRY _ZTV7S9562C1[];
Class_Descriptor cd_S9562C1 = {  "S9562C1", // class name
  bases_S9562C1, 1,
  &(vtc_S9562C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,120), // object size
  NSPAIRA(_ZTI7S9562C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9562C1),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  S9089C2  {
  virtual  ~S9089C2(); // _ZN7S9089C2D1Ev
  virtual void  v2(); // _ZN7S9089C22v2Ev
  S9089C2(); // tgen
};
//SIG(-1 S9089C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9089C2C1Ev();
extern void _ZN7S9089C2D1Ev();
Name_Map name_map_S9089C2[] = {
  NSPAIR(_ZN7S9089C2C1Ev),
  NSPAIR(_ZN7S9089C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9089C2[];
extern void _ZN7S9089C2D1Ev();
extern void _ZN7S9089C2D0Ev();
extern void _ZN7S9089C22v2Ev();
static  VTBL_ENTRY vtc_S9089C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9089C2[0]),
  (VTBL_ENTRY)&_ZN7S9089C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9089C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9089C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9089C2[];
extern  VTBL_ENTRY _ZTV7S9089C2[];
Class_Descriptor cd_S9089C2 = {  "S9089C2", // class name
  0,0,//no base classes
  &(vtc_S9089C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9089C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9089C2),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  S9089C1  : S9089C2 {
  void *s9089c1f0;
  ::S900C12 s9089c1f1;
  virtual  ~S9089C1(); // _ZN7S9089C1D1Ev
  virtual void  v1(); // _ZN7S9089C12v1Ev
  S9089C1(); // tgen
};
//SIG(1 S9089C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ FC4{ m Fp Fc[3] Fi} FC4[2] FC5{ m FC4[4] Fi} FC4 FC4}}


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

static void Test_S9089C1()
{
  extern Class_Descriptor cd_S9089C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,31)];
    init_test(&cd_S9089C1, buf);
    S9089C1 *dp, &lv = *(dp=new (buf) S9089C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,120), "sizeof(S9089C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9089C1)");
    check_base_class_offset(lv, (S9089C2*), 0, "S9089C1");
    check_field_offset(lv, s9089c1f0, ABISELECT(8,4), "S9089C1.s9089c1f0");
    check_field_offset(lv, s9089c1f1, ABISELECT(16,8), "S9089C1.s9089c1f1");
    test_class_info(&lv, &cd_S9089C1);
    dp->~S9089C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9089C1(Test_S9089C1, "S9089C1", ABISELECT(168,120));

#else // __cplusplus

extern void _ZN7S9089C1C1Ev();
extern void _ZN7S9089C1D1Ev();
Name_Map name_map_S9089C1[] = {
  NSPAIR(_ZN7S9089C1C1Ev),
  NSPAIR(_ZN7S9089C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9089C2;
extern VTBL_ENTRY _ZTI7S9089C2[];
extern  VTBL_ENTRY _ZTV7S9089C2[];
static Base_Class bases_S9089C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9089C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9089C1[];
extern void _ZN7S9089C1D1Ev();
extern void _ZN7S9089C1D0Ev();
extern void _ZN7S9089C22v2Ev();
extern void _ZN7S9089C12v1Ev();
static  VTBL_ENTRY vtc_S9089C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9089C1[0]),
  (VTBL_ENTRY)&_ZN7S9089C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9089C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9089C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9089C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9089C1[];
extern  VTBL_ENTRY _ZTV7S9089C1[];
Class_Descriptor cd_S9089C1 = {  "S9089C1", // class name
  bases_S9089C1, 1,
  &(vtc_S9089C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,120), // object size
  NSPAIRA(_ZTI7S9089C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9089C1),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  S16163C2  {
  void *s16163c2f0;
  ::S5757C7 s16163c2f1;
  void  mf16163c2(); // _ZN8S16163C29mf16163c2Ev
};
//SIG(-1 S16163C2) C1{ m Fp FC2{ m FC3{ m FC4{ m Fi[3]} FC4 Fc} FC4 FC4 Fi}}


void  S16163C2 ::mf16163c2(){}

static void Test_S16163C2()
{
  {
    init_simple_test("S16163C2");
    S16163C2 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S16163C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16163C2)");
    check_field_offset(lv, s16163c2f0, 0, "S16163C2.s16163c2f0");
    check_field_offset(lv, s16163c2f1, ABISELECT(8,4), "S16163C2.s16163c2f1");
  }
}
static Arrange_To_Call_Me vS16163C2(Test_S16163C2, "S16163C2", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16163C6  {
  ::S16163C2 s16163c6f0[36];
  int s16163c6f1;
  void  mf16163c6(); // _ZN8S16163C69mf16163c6Ev
};
//SIG(-1 S16163C6) C1{ m FC2{ m Fp FC3{ m FC4{ m FC5{ m Fi[3]} FC5 Fc} FC5 FC5 Fi}}[36] Fi}


void  S16163C6 ::mf16163c6(){}

static void Test_S16163C6()
{
  {
    init_simple_test("S16163C6");
    S16163C6 lv;
    check2(sizeof(lv), ABISELECT(2312,2164), "sizeof(S16163C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16163C6)");
    check_field_offset(lv, s16163c6f0, 0, "S16163C6.s16163c6f0");
    check_field_offset(lv, s16163c6f1, ABISELECT(2304,2160), "S16163C6.s16163c6f1");
  }
}
static Arrange_To_Call_Me vS16163C6(Test_S16163C6, "S16163C6", ABISELECT(2312,2164));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16163C1  {
  ::S16163C2 s16163c1f0;
  ::S16163C6 s16163c1f1;
  void  mf16163c1(); // _ZN8S16163C19mf16163c1Ev
};
//SIG(1 S16163C1) C1{ m FC2{ m Fp FC3{ m FC4{ m FC5{ m Fi[3]} FC5 Fc} FC5 FC5 Fi}} FC6{ m FC2[36] Fi}}


void  S16163C1 ::mf16163c1(){}

static void Test_S16163C1()
{
  {
    init_simple_test("S16163C1");
    S16163C1 lv;
    check2(sizeof(lv), ABISELECT(2376,2224), "sizeof(S16163C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16163C1)");
    check_field_offset(lv, s16163c1f0, 0, "S16163C1.s16163c1f0");
    check_field_offset(lv, s16163c1f1, ABISELECT(64,60), "S16163C1.s16163c1f1");
  }
}
static Arrange_To_Call_Me vS16163C1(Test_S16163C1, "S16163C1", ABISELECT(2376,2224));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9557C2  {
  virtual  ~S9557C2(); // _ZN7S9557C2D1Ev
  virtual void  v3(); // _ZN7S9557C22v3Ev
  virtual void  v4(); // _ZN7S9557C22v4Ev
  S9557C2(); // tgen
};
//SIG(-1 S9557C2) C1{ vd v1 v2}


 S9557C2 ::~S9557C2(){ note_dtor("S9557C2", this);}
void  S9557C2 ::v3(){vfunc_called(this, "_ZN7S9557C22v3Ev");}
void  S9557C2 ::v4(){vfunc_called(this, "_ZN7S9557C22v4Ev");}
S9557C2 ::S9557C2(){ note_ctor("S9557C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9557C2C1Ev();
extern void _ZN7S9557C2D1Ev();
Name_Map name_map_S9557C2[] = {
  NSPAIR(_ZN7S9557C2C1Ev),
  NSPAIR(_ZN7S9557C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9557C2[];
extern void _ZN7S9557C2D1Ev();
extern void _ZN7S9557C2D0Ev();
extern void _ZN7S9557C22v3Ev();
extern void _ZN7S9557C22v4Ev();
static  VTBL_ENTRY vtc_S9557C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9557C2[0]),
  (VTBL_ENTRY)&_ZN7S9557C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9557C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9557C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9557C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9557C2[];
extern  VTBL_ENTRY _ZTV7S9557C2[];
Class_Descriptor cd_S9557C2 = {  "S9557C2", // class name
  0,0,//no base classes
  &(vtc_S9557C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9557C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9557C2),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  S9557C1  : S9557C2 {
  void *s9557c1f0;
  ::S5244C21 s9557c1f1;
  virtual void  v1(); // _ZN7S9557C12v1Ev
  virtual void  v2(); // _ZN7S9557C12v2Ev
  ~S9557C1(); // tgen
  S9557C1(); // tgen
};
//SIG(1 S9557C1) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ BC4{ BC5{ FC6{ m Fp Fc[3] Fi} FC6 FC6} FC6} FC6}}


void  S9557C1 ::v1(){vfunc_called(this, "_ZN7S9557C12v1Ev");}
void  S9557C1 ::v2(){vfunc_called(this, "_ZN7S9557C12v2Ev");}
S9557C1 ::~S9557C1(){ note_dtor("S9557C1", this);} // tgen
S9557C1 ::S9557C1(){ note_ctor("S9557C1", this);} // tgen

static void Test_S9557C1()
{
  extern Class_Descriptor cd_S9557C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,18)];
    init_test(&cd_S9557C1, buf);
    S9557C1 *dp, &lv = *(dp=new (buf) S9557C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S9557C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9557C1)");
    check_base_class_offset(lv, (S9557C2*), 0, "S9557C1");
    check_field_offset(lv, s9557c1f0, ABISELECT(8,4), "S9557C1.s9557c1f0");
    check_field_offset(lv, s9557c1f1, ABISELECT(16,8), "S9557C1.s9557c1f1");
    test_class_info(&lv, &cd_S9557C1);
    dp->~S9557C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9557C1(Test_S9557C1, "S9557C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S9557C1C1Ev();
extern void _ZN7S9557C1D1Ev();
Name_Map name_map_S9557C1[] = {
  NSPAIR(_ZN7S9557C1C1Ev),
  NSPAIR(_ZN7S9557C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9557C2;
extern VTBL_ENTRY _ZTI7S9557C2[];
extern  VTBL_ENTRY _ZTV7S9557C2[];
static Base_Class bases_S9557C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9557C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9557C1[];
extern void _ZN7S9557C1D1Ev();
extern void _ZN7S9557C1D0Ev();
extern void _ZN7S9557C22v3Ev();
extern void _ZN7S9557C22v4Ev();
extern void _ZN7S9557C12v1Ev();
extern void _ZN7S9557C12v2Ev();
static  VTBL_ENTRY vtc_S9557C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9557C1[0]),
  (VTBL_ENTRY)&_ZN7S9557C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9557C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9557C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9557C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9557C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9557C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9557C1[];
extern  VTBL_ENTRY _ZTV7S9557C1[];
Class_Descriptor cd_S9557C1 = {  "S9557C1", // class name
  bases_S9557C1, 1,
  &(vtc_S9557C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S9557C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9557C1),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  S9084C2  {
  virtual  ~S9084C2(); // _ZN7S9084C2D1Ev
  virtual void  v2(); // _ZN7S9084C22v2Ev
  S9084C2(); // tgen
};
//SIG(-1 S9084C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9084C2C1Ev();
extern void _ZN7S9084C2D1Ev();
Name_Map name_map_S9084C2[] = {
  NSPAIR(_ZN7S9084C2C1Ev),
  NSPAIR(_ZN7S9084C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9084C2[];
extern void _ZN7S9084C2D1Ev();
extern void _ZN7S9084C2D0Ev();
extern void _ZN7S9084C22v2Ev();
static  VTBL_ENTRY vtc_S9084C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9084C2[0]),
  (VTBL_ENTRY)&_ZN7S9084C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9084C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9084C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9084C2[];
extern  VTBL_ENTRY _ZTV7S9084C2[];
Class_Descriptor cd_S9084C2 = {  "S9084C2", // class name
  0,0,//no base classes
  &(vtc_S9084C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9084C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9084C2),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  S9084C1  : S9084C2 {
  void *s9084c1f0;
  ::S5244C21 s9084c1f1;
  virtual  ~S9084C1(); // _ZN7S9084C1D1Ev
  virtual void  v1(); // _ZN7S9084C12v1Ev
  S9084C1(); // tgen
};
//SIG(1 S9084C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ BC4{ BC5{ FC6{ m Fp Fc[3] Fi} FC6 FC6} FC6} FC6}}


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

static void Test_S9084C1()
{
  extern Class_Descriptor cd_S9084C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,18)];
    init_test(&cd_S9084C1, buf);
    S9084C1 *dp, &lv = *(dp=new (buf) S9084C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S9084C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9084C1)");
    check_base_class_offset(lv, (S9084C2*), 0, "S9084C1");
    check_field_offset(lv, s9084c1f0, ABISELECT(8,4), "S9084C1.s9084c1f0");
    check_field_offset(lv, s9084c1f1, ABISELECT(16,8), "S9084C1.s9084c1f1");
    test_class_info(&lv, &cd_S9084C1);
    dp->~S9084C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9084C1(Test_S9084C1, "S9084C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S9084C1C1Ev();
extern void _ZN7S9084C1D1Ev();
Name_Map name_map_S9084C1[] = {
  NSPAIR(_ZN7S9084C1C1Ev),
  NSPAIR(_ZN7S9084C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9084C2;
extern VTBL_ENTRY _ZTI7S9084C2[];
extern  VTBL_ENTRY _ZTV7S9084C2[];
static Base_Class bases_S9084C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9084C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9084C1[];
extern void _ZN7S9084C1D1Ev();
extern void _ZN7S9084C1D0Ev();
extern void _ZN7S9084C22v2Ev();
extern void _ZN7S9084C12v1Ev();
static  VTBL_ENTRY vtc_S9084C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9084C1[0]),
  (VTBL_ENTRY)&_ZN7S9084C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9084C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9084C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9084C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9084C1[];
extern  VTBL_ENTRY _ZTV7S9084C1[];
Class_Descriptor cd_S9084C1 = {  "S9084C1", // class name
  bases_S9084C1, 1,
  &(vtc_S9084C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S9084C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9084C1),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  S15125C2_nt  {
  void *s15125c2f0[2];
  void  mf15125c2(); // _ZN11S15125C2_nt9mf15125c2Ev
};
//SIG(-1 S15125C2_nt) C1{ m Fp[2]}


void  S15125C2_nt ::mf15125c2(){}

//skip512 S15125C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15125C1  {
  char s15125c1f0;
  void *s15125c1f1;
  ::S15125C2_nt s15125c1f2;
  void *s15125c1f3[2];
  char s15125c1f4;
  int s15125c1f5[3];
  ::S19894C6_nt s15125c1f6;
  ::S19894C6_nt s15125c1f7;
  ::S19894C6_nt s15125c1f8;
  ::S19894C6_nt s15125c1f9;
  void *s15125c1f10[2];
  void  mf15125c1(); // _ZN8S15125C19mf15125c1Ev
};
//SIG(1 S15125C1) C1{ m Fc Fp FC2{ m Fp[2]} Fp[2] Fc Fi[3] FC3{ m Fp} FC3 FC3 FC3 Fp[2]}


void  S15125C1 ::mf15125c1(){}

static void Test_S15125C1()
{
  {
    init_simple_test("S15125C1");
    S15125C1 lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S15125C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15125C1)");
    check_field_offset(lv, s15125c1f0, 0, "S15125C1.s15125c1f0");
    check_field_offset(lv, s15125c1f1, ABISELECT(8,4), "S15125C1.s15125c1f1");
    check_field_offset(lv, s15125c1f2, ABISELECT(16,8), "S15125C1.s15125c1f2");
    check_field_offset(lv, s15125c1f3, ABISELECT(32,16), "S15125C1.s15125c1f3");
    check_field_offset(lv, s15125c1f4, ABISELECT(48,24), "S15125C1.s15125c1f4");
    check_field_offset(lv, s15125c1f5, ABISELECT(52,28), "S15125C1.s15125c1f5");
    check_field_offset(lv, s15125c1f6, ABISELECT(64,40), "S15125C1.s15125c1f6");
    check_field_offset(lv, s15125c1f7, ABISELECT(72,44), "S15125C1.s15125c1f7");
    check_field_offset(lv, s15125c1f8, ABISELECT(80,48), "S15125C1.s15125c1f8");
    check_field_offset(lv, s15125c1f9, ABISELECT(88,52), "S15125C1.s15125c1f9");
    check_field_offset(lv, s15125c1f10, ABISELECT(96,56), "S15125C1.s15125c1f10");
  }
}
static Arrange_To_Call_Me vS15125C1(Test_S15125C1, "S15125C1", ABISELECT(112,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16209C1  {
  ::S9526C11_nt s16209c1f0;
  ::S9526C11_nt s16209c1f1;
  ::S9526C11_nt s16209c1f2;
  ::S9526C11_nt s16209c1f3;
  __tsi64 s16209c1f4;
  ::S3620C26_nt s16209c1f5;
  __tsi64 s16209c1f6;
  void  mf16209c1(); // _ZN8S16209C19mf16209c1Ev
};
//SIG(1 S16209C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FL FC4{ m Fp Fi[2] FC5{ m}} FL}


void  S16209C1 ::mf16209c1(){}

static void Test_S16209C1()
{
  {
    init_simple_test("S16209C1");
    S16209C1 lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S16209C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16209C1)");
    check_field_offset(lv, s16209c1f0, 0, "S16209C1.s16209c1f0");
    check_field_offset(lv, s16209c1f1, ABISELECT(16,12), "S16209C1.s16209c1f1");
    check_field_offset(lv, s16209c1f2, ABISELECT(32,24), "S16209C1.s16209c1f2");
    check_field_offset(lv, s16209c1f3, ABISELECT(48,36), "S16209C1.s16209c1f3");
    check_field_offset(lv, s16209c1f4, ABISELECT(64,48), "S16209C1.s16209c1f4");
    check_field_offset(lv, s16209c1f5, ABISELECT(72,56), "S16209C1.s16209c1f5");
    check_field_offset(lv, s16209c1f6, ABISELECT(96,72), "S16209C1.s16209c1f6");
  }
}
static Arrange_To_Call_Me vS16209C1(Test_S16209C1, "S16209C1", ABISELECT(104,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9558C2  {
  virtual  ~S9558C2(); // _ZN7S9558C2D1Ev
  virtual void  v3(); // _ZN7S9558C22v3Ev
  virtual void  v4(); // _ZN7S9558C22v4Ev
  S9558C2(); // tgen
};
//SIG(-1 S9558C2) C1{ vd v1 v2}


 S9558C2 ::~S9558C2(){ note_dtor("S9558C2", this);}
void  S9558C2 ::v3(){vfunc_called(this, "_ZN7S9558C22v3Ev");}
void  S9558C2 ::v4(){vfunc_called(this, "_ZN7S9558C22v4Ev");}
S9558C2 ::S9558C2(){ note_ctor("S9558C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9558C2C1Ev();
extern void _ZN7S9558C2D1Ev();
Name_Map name_map_S9558C2[] = {
  NSPAIR(_ZN7S9558C2C1Ev),
  NSPAIR(_ZN7S9558C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9558C2[];
extern void _ZN7S9558C2D1Ev();
extern void _ZN7S9558C2D0Ev();
extern void _ZN7S9558C22v3Ev();
extern void _ZN7S9558C22v4Ev();
static  VTBL_ENTRY vtc_S9558C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9558C2[0]),
  (VTBL_ENTRY)&_ZN7S9558C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9558C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9558C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9558C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9558C2[];
extern  VTBL_ENTRY _ZTV7S9558C2[];
Class_Descriptor cd_S9558C2 = {  "S9558C2", // class name
  0,0,//no base classes
  &(vtc_S9558C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9558C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9558C2),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  S9558C1  : S9558C2 {
  void *s9558c1f0;
  ::S5244C20 s9558c1f1;
  virtual void  v1(); // _ZN7S9558C12v1Ev
  virtual void  v2(); // _ZN7S9558C12v2Ev
  ~S9558C1(); // tgen
  S9558C1(); // tgen
};
//SIG(1 S9558C1) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ BC4{ FC5{ m Fp Fc[3] Fi} FC5 FC5} FC5}}


void  S9558C1 ::v1(){vfunc_called(this, "_ZN7S9558C12v1Ev");}
void  S9558C1 ::v2(){vfunc_called(this, "_ZN7S9558C12v2Ev");}
S9558C1 ::~S9558C1(){ note_dtor("S9558C1", this);} // tgen
S9558C1 ::S9558C1(){ note_ctor("S9558C1", this);} // tgen

static void Test_S9558C1()
{
  extern Class_Descriptor cd_S9558C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,15)];
    init_test(&cd_S9558C1, buf);
    S9558C1 *dp, &lv = *(dp=new (buf) S9558C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S9558C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9558C1)");
    check_base_class_offset(lv, (S9558C2*), 0, "S9558C1");
    check_field_offset(lv, s9558c1f0, ABISELECT(8,4), "S9558C1.s9558c1f0");
    check_field_offset(lv, s9558c1f1, ABISELECT(16,8), "S9558C1.s9558c1f1");
    test_class_info(&lv, &cd_S9558C1);
    dp->~S9558C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9558C1(Test_S9558C1, "S9558C1", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN7S9558C1C1Ev();
extern void _ZN7S9558C1D1Ev();
Name_Map name_map_S9558C1[] = {
  NSPAIR(_ZN7S9558C1C1Ev),
  NSPAIR(_ZN7S9558C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9558C2;
extern VTBL_ENTRY _ZTI7S9558C2[];
extern  VTBL_ENTRY _ZTV7S9558C2[];
static Base_Class bases_S9558C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9558C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9558C1[];
extern void _ZN7S9558C1D1Ev();
extern void _ZN7S9558C1D0Ev();
extern void _ZN7S9558C22v3Ev();
extern void _ZN7S9558C22v4Ev();
extern void _ZN7S9558C12v1Ev();
extern void _ZN7S9558C12v2Ev();
static  VTBL_ENTRY vtc_S9558C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9558C1[0]),
  (VTBL_ENTRY)&_ZN7S9558C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9558C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9558C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9558C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9558C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9558C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9558C1[];
extern  VTBL_ENTRY _ZTV7S9558C1[];
Class_Descriptor cd_S9558C1 = {  "S9558C1", // class name
  bases_S9558C1, 1,
  &(vtc_S9558C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI7S9558C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9558C1),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  S9242C2  {
  ::S9526C11_nt s9242c2f0;
  int s9242c2f1[2];
  char s9242c2f2;
  virtual  ~S9242C2(); // _ZN7S9242C2D1Ev
  virtual void  v3(); // _ZN7S9242C22v3Ev
  virtual void  v4(); // _ZN7S9242C22v4Ev
  virtual void  v5(); // _ZN7S9242C22v5Ev
  S9242C2(); // tgen
};
//SIG(-1 S9242C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9242C2 ::~S9242C2(){ note_dtor("S9242C2", this);}
void  S9242C2 ::v3(){vfunc_called(this, "_ZN7S9242C22v3Ev");}
void  S9242C2 ::v4(){vfunc_called(this, "_ZN7S9242C22v4Ev");}
void  S9242C2 ::v5(){vfunc_called(this, "_ZN7S9242C22v5Ev");}
S9242C2 ::S9242C2(){ note_ctor("S9242C2", this);} // tgen

static void Test_S9242C2()
{
  extern Class_Descriptor cd_S9242C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9242C2, buf);
    S9242C2 *dp, &lv = *(dp=new (buf) S9242C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9242C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9242C2)");
    check_field_offset(lv, s9242c2f0, ABISELECT(8,4), "S9242C2.s9242c2f0");
    check_field_offset(lv, s9242c2f1, ABISELECT(24,16), "S9242C2.s9242c2f1");
    check_field_offset(lv, s9242c2f2, ABISELECT(32,24), "S9242C2.s9242c2f2");
    test_class_info(&lv, &cd_S9242C2);
    dp->~S9242C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9242C2(Test_S9242C2, "S9242C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9242C2C1Ev();
extern void _ZN7S9242C2D1Ev();
Name_Map name_map_S9242C2[] = {
  NSPAIR(_ZN7S9242C2C1Ev),
  NSPAIR(_ZN7S9242C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9242C2[];
extern void _ZN7S9242C2D1Ev();
extern void _ZN7S9242C2D0Ev();
extern void _ZN7S9242C22v3Ev();
extern void _ZN7S9242C22v4Ev();
extern void _ZN7S9242C22v5Ev();
static  VTBL_ENTRY vtc_S9242C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9242C2[0]),
  (VTBL_ENTRY)&_ZN7S9242C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9242C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9242C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9242C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9242C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9242C2[];
extern  VTBL_ENTRY _ZTV7S9242C2[];
Class_Descriptor cd_S9242C2 = {  "S9242C2", // class name
  0,0,//no base classes
  &(vtc_S9242C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9242C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9242C2),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  S9242C1  : S9242C2 {
  char s9242c1f0;
  void *s9242c1f1;
  virtual  ~S9242C1(); // _ZN7S9242C1D1Ev
  virtual void  v1(); // _ZN7S9242C12v1Ev
  virtual void  v2(); // _ZN7S9242C12v2Ev
  S9242C1(); // tgen
};
//SIG(1 S9242C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc Fp}


 S9242C1 ::~S9242C1(){ note_dtor("S9242C1", this);}
void  S9242C1 ::v1(){vfunc_called(this, "_ZN7S9242C12v1Ev");}
void  S9242C1 ::v2(){vfunc_called(this, "_ZN7S9242C12v2Ev");}
S9242C1 ::S9242C1(){ note_ctor("S9242C1", this);} // tgen

static void Test_S9242C1()
{
  extern Class_Descriptor cd_S9242C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S9242C1, buf);
    S9242C1 *dp, &lv = *(dp=new (buf) S9242C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S9242C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9242C1)");
    check_base_class_offset(lv, (S9242C2*), 0, "S9242C1");
    check_field_offset(lv, s9242c1f0, ABISELECT(33,25), "S9242C1.s9242c1f0");
    check_field_offset(lv, s9242c1f1, ABISELECT(40,28), "S9242C1.s9242c1f1");
    test_class_info(&lv, &cd_S9242C1);
    dp->~S9242C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9242C1(Test_S9242C1, "S9242C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S9242C1C1Ev();
extern void _ZN7S9242C1D1Ev();
Name_Map name_map_S9242C1[] = {
  NSPAIR(_ZN7S9242C1C1Ev),
  NSPAIR(_ZN7S9242C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9242C2;
extern VTBL_ENTRY _ZTI7S9242C2[];
extern  VTBL_ENTRY _ZTV7S9242C2[];
static Base_Class bases_S9242C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9242C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9242C1[];
extern void _ZN7S9242C1D1Ev();
extern void _ZN7S9242C1D0Ev();
extern void _ZN7S9242C22v3Ev();
extern void _ZN7S9242C22v4Ev();
extern void _ZN7S9242C22v5Ev();
extern void _ZN7S9242C12v1Ev();
extern void _ZN7S9242C12v2Ev();
static  VTBL_ENTRY vtc_S9242C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9242C1[0]),
  (VTBL_ENTRY)&_ZN7S9242C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9242C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9242C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9242C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9242C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9242C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9242C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9242C1[];
extern  VTBL_ENTRY _ZTV7S9242C1[];
Class_Descriptor cd_S9242C1 = {  "S9242C1", // class name
  bases_S9242C1, 1,
  &(vtc_S9242C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S9242C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9242C1),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  S17953C1  {
  void *s17953c1f0[2];
  ::S3619C13_nt s17953c1f1;
  ::S3619C13_nt s17953c1f2;
  char s17953c1f3;
  ::S9740C25 s17953c1f4;
  void  mf17953c1(); // _ZN8S17953C19mf17953c1Ev
};
//SIG(1 S17953C1) C1{ m Fp[2] FC2{ m FC3{ FL[4]}} FC2 Fc FC4{ m Fp Fi FC5{ m} FC6{ m}}}


void  S17953C1 ::mf17953c1(){}

static void Test_S17953C1()
{
  {
    init_simple_test("S17953C1");
    S17953C1 lv;
    check2(sizeof(lv), ABISELECT(104,88), "sizeof(S17953C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17953C1)");
    check_field_offset(lv, s17953c1f0, 0, "S17953C1.s17953c1f0");
    check_field_offset(lv, s17953c1f1, ABISELECT(16,8), "S17953C1.s17953c1f1");
    check_field_offset(lv, s17953c1f2, ABISELECT(48,40), "S17953C1.s17953c1f2");
    check_field_offset(lv, s17953c1f3, ABISELECT(80,72), "S17953C1.s17953c1f3");
    check_field_offset(lv, s17953c1f4, ABISELECT(88,76), "S17953C1.s17953c1f4");
  }
}
static Arrange_To_Call_Me vS17953C1(Test_S17953C1, "S17953C1", ABISELECT(104,88));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5722C5  : S21216C26_nt , virtual S19894C34 {
  int s5722c5f0;
  virtual  ~S5722C5(); // _ZN7S5722C5D2Ev
  S5722C5(); // tgen
};
//SIG(-1 S5722C5) C1{ BC2{ vd m} VBC3{ m} vd Fi}


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

static void Test_S5722C5()
{
  extern Class_Descriptor cd_S5722C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S5722C5, buf);
    S5722C5 *dp, &lv = *(dp=new (buf) S5722C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5722C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5722C5)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S5722C5");
    check_base_class_offset(lv, (S19894C34*), 0, "S5722C5");
    check_field_offset(lv, s5722c5f0, ABISELECT(8,4), "S5722C5.s5722c5f0");
    test_class_info(&lv, &cd_S5722C5);
    dp->~S5722C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5722C5(Test_S5722C5, "S5722C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S5722C5C1Ev();
extern void _ZN7S5722C5D2Ev();
Name_Map name_map_S5722C5[] = {
  NSPAIR(_ZN7S5722C5C1Ev),
  NSPAIR(_ZN7S5722C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S5722C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5722C5[];
extern void _ZN7S5722C5D1Ev();
extern void _ZN7S5722C5D0Ev();
static  VTBL_ENTRY vtc_S5722C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5722C5[0]),
  (VTBL_ENTRY)&_ZN7S5722C5D1Ev,
  (VTBL_ENTRY)&_ZN7S5722C5D0Ev,
};
extern VTBL_ENTRY _ZTV7S5722C5[];
static  VTT_ENTRY vtt_S5722C5[] = {
  {&(_ZTV7S5722C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5722C5[];
extern  VTBL_ENTRY _ZTV7S5722C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5722C5[];
Class_Descriptor cd_S5722C5 = {  "S5722C5", // class name
  bases_S5722C5, 2,
  &(vtc_S5722C5[0]), // expected_vtbl_contents
  &(vtt_S5722C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S5722C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5722C5),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5722C5),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5722C3  : virtual S19894C34 , S5722C5 , S21216C26_nt {
  long s5722c3f0;
  ~S5722C3(); // tgen
  S5722C3(); // tgen
};
//SIG(-1 S5722C3) C1{ VBC2{ m} BC3{ BC4{ vd m} VBC2 vd Fi} BC4 Fl}


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

static void Test_S5722C3()
{
  extern Class_Descriptor cd_S5722C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S5722C3, buf);
    S5722C3 *dp, &lv = *(dp=new (buf) S5722C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5722C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5722C3)");
    check_base_class_offset(lv, (S19894C34*), 0, "S5722C3");
    check_base_class_offset(lv, (S19894C34*)(S5722C5*), 0, "S5722C3");
    check_base_class_offset(lv, (S21216C26_nt*)(S5722C5*), 0, "S5722C3");
    check_base_class_offset(lv, (S5722C5*), 0, "S5722C3");
    /*is_ambiguous_... S5722C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(16,8), "S5722C3");
    check_field_offset(lv, s5722c3f0, ABISELECT(24,12), "S5722C3.s5722c3f0");
    test_class_info(&lv, &cd_S5722C3);
    dp->~S5722C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5722C3(Test_S5722C3, "S5722C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S5722C3C1Ev();
extern void _ZN7S5722C3D1Ev();
Name_Map name_map_S5722C3[] = {
  NSPAIR(_ZN7S5722C3C1Ev),
  NSPAIR(_ZN7S5722C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5722C5;
extern VTBL_ENTRY _ZTI7S5722C5[];
extern  VTBL_ENTRY _ZTV7S5722C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5722C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S5722C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5722C5,    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_S21216C26_nt,    ABISELECT(16,8), //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 _ZTI7S5722C3[];
extern void _ZN7S5722C3D1Ev();
extern void _ZN7S5722C3D0Ev();
extern void ABISELECT(_ZThn16_N7S5722C3D1Ev,_ZThn8_N7S5722C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S5722C3D0Ev,_ZThn8_N7S5722C3D0Ev)();
static  VTBL_ENTRY vtc_S5722C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5722C3[0]),
  (VTBL_ENTRY)&_ZN7S5722C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5722C3D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S5722C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5722C3D1Ev,_ZThn8_N7S5722C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5722C3D0Ev,_ZThn8_N7S5722C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S5722C3[];
extern void _ZN7S5722C5D1Ev();
extern void _ZN7S5722C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5722C5__7S5722C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5722C5[0]),
  (VTBL_ENTRY)&_ZN7S5722C5D1Ev,
  (VTBL_ENTRY)&_ZN7S5722C5D0Ev,
};
static  VTT_ENTRY vtt_S5722C3[] = {
  {&(_ZTV7S5722C3[3]),  3,9},
  {&(_tg__ZTV7S5722C5__7S5722C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5722C3[];
extern  VTBL_ENTRY _ZTV7S5722C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5722C3[];
Class_Descriptor cd_S5722C3 = {  "S5722C3", // class name
  bases_S5722C3, 4,
  &(vtc_S5722C3[0]), // expected_vtbl_contents
  &(vtt_S5722C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S5722C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5722C3),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5722C3),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  S5722C1  : S19486C9_nt , S5722C3 {
  int s5722c1f0;
  ~S5722C1(); // tgen
  S5722C1(); // tgen
};
//SIG(1 S5722C1) C1{ BC2{ m FD[10]} BC3{ VBC4{ m} BC5{ BC6{ vd m} VBC4 vd Fi} BC6 Fl} Fi}


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

static void Test_S5722C1()
{
  extern Class_Descriptor cd_S5722C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,36)];
    init_test(&cd_S5722C1, buf);
    S5722C1 *dp, &lv = *(dp=new (buf) S5722C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,140), "sizeof(S5722C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5722C1)");
    check_base_class_offset(lv, (S19486C9_nt*), ABISELECT(32,16), "S5722C1");
    check_base_class_offset(lv, (S19894C34*)(S5722C3*), 0, "S5722C1");
    check_base_class_offset(lv, (S19894C34*)(S5722C5*)(S5722C3*), 0, "S5722C1");
    check_base_class_offset(lv, (S21216C26_nt*)(S5722C5*)(S5722C3*), 0, "S5722C1");
    check_base_class_offset(lv, (S5722C5*)(S5722C3*), 0, "S5722C1");
    /*is_ambiguous_... S5722C3::S21216C26_nt */ AMB_check_base_class_offset(lv, (S21216C26_nt*)(S5722C3*), ABISELECT(16,8), "S5722C1");
    check_base_class_offset(lv, (S5722C3*), 0, "S5722C1");
    check_field_offset(lv, s5722c1f0, ABISELECT(192,136), "S5722C1.s5722c1f0");
    test_class_info(&lv, &cd_S5722C1);
    dp->~S5722C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5722C1(Test_S5722C1, "S5722C1", ABISELECT(208,140));

#else // __cplusplus

extern void _ZN7S5722C1C1Ev();
extern void _ZN7S5722C1D1Ev();
Name_Map name_map_S5722C1[] = {
  NSPAIR(_ZN7S5722C1C1Ev),
  NSPAIR(_ZN7S5722C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19486C9_nt;
extern VTBL_ENTRY _ZTI11S19486C9_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5722C5;
extern VTBL_ENTRY _ZTI7S5722C5[];
extern  VTBL_ENTRY _ZTV7S5722C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5722C5[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S5722C3;
extern VTBL_ENTRY _ZTI7S5722C3[];
extern  VTBL_ENTRY _ZTV7S5722C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5722C3[];
static Base_Class bases_S5722C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19486C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5722C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21216C26_nt,    ABISELECT(16,8), //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
    5, //immediately_derived
  0, 0},
  {&cd_S5722C3,    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 _ZTI7S5722C1[];
extern void _ZN7S5722C1D1Ev();
extern void _ZN7S5722C1D0Ev();
extern void ABISELECT(_ZThn16_N7S5722C1D1Ev,_ZThn8_N7S5722C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S5722C1D0Ev,_ZThn8_N7S5722C1D0Ev)();
static  VTBL_ENTRY vtc_S5722C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5722C1[0]),
  (VTBL_ENTRY)&_ZN7S5722C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5722C1D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S5722C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5722C1D1Ev,_ZThn8_N7S5722C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5722C1D0Ev,_ZThn8_N7S5722C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S5722C1[];
extern void _ZN7S5722C3D1Ev();
extern void _ZN7S5722C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5722C3__7S5722C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5722C3[0]),
  (VTBL_ENTRY)&_ZN7S5722C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5722C3D0Ev,
};
extern void _ZN7S5722C5D1Ev();
extern void _ZN7S5722C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5722C57S5722C3__7S5722C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5722C5[0]),
  (VTBL_ENTRY)&_ZN7S5722C5D1Ev,
  (VTBL_ENTRY)&_ZN7S5722C5D0Ev,
};
static  VTT_ENTRY vtt_S5722C1[] = {
  {&(_ZTV7S5722C1[3]),  3,9},
  {&(_tg__ZTV7S5722C3__7S5722C1[3]),  3,5},
  {&(_tg__ZTV7S5722C57S5722C3__7S5722C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5722C1[];
extern  VTBL_ENTRY _ZTV7S5722C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5722C1[];
Class_Descriptor cd_S5722C1 = {  "S5722C1", // class name
  bases_S5722C1, 6,
  &(vtc_S5722C1[0]), // expected_vtbl_contents
  &(vtt_S5722C1[0]), // expected_vtt_contents
  ABISELECT(208,140), // object size
  NSPAIRA(_ZTI7S5722C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5722C1),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5722C1),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9085C2  {
  virtual  ~S9085C2(); // _ZN7S9085C2D1Ev
  virtual void  v2(); // _ZN7S9085C22v2Ev
  S9085C2(); // tgen
};
//SIG(-1 S9085C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9085C2C1Ev();
extern void _ZN7S9085C2D1Ev();
Name_Map name_map_S9085C2[] = {
  NSPAIR(_ZN7S9085C2C1Ev),
  NSPAIR(_ZN7S9085C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9085C2[];
extern void _ZN7S9085C2D1Ev();
extern void _ZN7S9085C2D0Ev();
extern void _ZN7S9085C22v2Ev();
static  VTBL_ENTRY vtc_S9085C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9085C2[0]),
  (VTBL_ENTRY)&_ZN7S9085C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9085C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9085C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9085C2[];
extern  VTBL_ENTRY _ZTV7S9085C2[];
Class_Descriptor cd_S9085C2 = {  "S9085C2", // class name
  0,0,//no base classes
  &(vtc_S9085C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9085C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9085C2),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  S9085C1  : S9085C2 {
  void *s9085c1f0;
  ::S5244C20 s9085c1f1;
  virtual  ~S9085C1(); // _ZN7S9085C1D1Ev
  virtual void  v1(); // _ZN7S9085C12v1Ev
  S9085C1(); // tgen
};
//SIG(1 S9085C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ BC4{ FC5{ m Fp Fc[3] Fi} FC5 FC5} FC5}}


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

static void Test_S9085C1()
{
  extern Class_Descriptor cd_S9085C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,15)];
    init_test(&cd_S9085C1, buf);
    S9085C1 *dp, &lv = *(dp=new (buf) S9085C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S9085C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9085C1)");
    check_base_class_offset(lv, (S9085C2*), 0, "S9085C1");
    check_field_offset(lv, s9085c1f0, ABISELECT(8,4), "S9085C1.s9085c1f0");
    check_field_offset(lv, s9085c1f1, ABISELECT(16,8), "S9085C1.s9085c1f1");
    test_class_info(&lv, &cd_S9085C1);
    dp->~S9085C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9085C1(Test_S9085C1, "S9085C1", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN7S9085C1C1Ev();
extern void _ZN7S9085C1D1Ev();
Name_Map name_map_S9085C1[] = {
  NSPAIR(_ZN7S9085C1C1Ev),
  NSPAIR(_ZN7S9085C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9085C2;
extern VTBL_ENTRY _ZTI7S9085C2[];
extern  VTBL_ENTRY _ZTV7S9085C2[];
static Base_Class bases_S9085C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9085C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9085C1[];
extern void _ZN7S9085C1D1Ev();
extern void _ZN7S9085C1D0Ev();
extern void _ZN7S9085C22v2Ev();
extern void _ZN7S9085C12v1Ev();
static  VTBL_ENTRY vtc_S9085C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9085C1[0]),
  (VTBL_ENTRY)&_ZN7S9085C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9085C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9085C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9085C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9085C1[];
extern  VTBL_ENTRY _ZTV7S9085C1[];
Class_Descriptor cd_S9085C1 = {  "S9085C1", // class name
  bases_S9085C1, 1,
  &(vtc_S9085C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI7S9085C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9085C1),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  S11830C3_nt  {
  void *s11830c3f0;
  int s11830c3f1[2];
};
//SIG(-1 S11830C3_nt) C1{ Fp Fi[2]}



//skip512 S11830C3_nt

#else // __cplusplus

Class_Descriptor cd_S11830C3_nt = {  "S11830C3_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  S11830C4_nt  {
  void *s11830c4f0;
  int s11830c4f1[3];
};
//SIG(1 S11830C4_nt) C1{ Fp Fi[3]}



//skip512 S11830C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11830C1  {
  ::S5757C18_nt s11830c1f0;
  ::S11830C3_nt s11830c1f1;
  ::S11830C4_nt s11830c1f2[2];
  ::S11830C3_nt s11830c1f3;
};
//SIG(1 S11830C1) C1{ FC2{ Fp Fi[2]} FC3{ Fp Fi[2]} FC4{ Fp Fi[3]}[2] FC3}



static void Test_S11830C1()
{
  {
    init_simple_test("S11830C1");
    S11830C1 lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S11830C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11830C1)");
    check_field_offset(lv, s11830c1f0, 0, "S11830C1.s11830c1f0");
    check_field_offset(lv, s11830c1f1, ABISELECT(16,12), "S11830C1.s11830c1f1");
    check_field_offset(lv, s11830c1f2, ABISELECT(32,24), "S11830C1.s11830c1f2");
    check_field_offset(lv, s11830c1f3, ABISELECT(80,56), "S11830C1.s11830c1f3");
  }
}
static Arrange_To_Call_Me vS11830C1(Test_S11830C1, "S11830C1", ABISELECT(96,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4637C3  {
  virtual  ~S4637C3(); // _ZN7S4637C3D1Ev
  virtual void  v2(); // _ZN7S4637C32v2Ev
  S4637C3(); // tgen
};
//SIG(-1 S4637C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4637C3C1Ev();
extern void _ZN7S4637C3D1Ev();
Name_Map name_map_S4637C3[] = {
  NSPAIR(_ZN7S4637C3C1Ev),
  NSPAIR(_ZN7S4637C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4637C3[];
extern void _ZN7S4637C3D1Ev();
extern void _ZN7S4637C3D0Ev();
extern void _ZN7S4637C32v2Ev();
static  VTBL_ENTRY vtc_S4637C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4637C3[0]),
  (VTBL_ENTRY)&_ZN7S4637C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4637C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4637C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4637C3[];
extern  VTBL_ENTRY _ZTV7S4637C3[];
Class_Descriptor cd_S4637C3 = {  "S4637C3", // class name
  0,0,//no base classes
  &(vtc_S4637C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4637C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4637C3),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  S4637C2_nt  : S4637C3 {
  virtual  ~S4637C2_nt(); // _ZN10S4637C2_ntD1Ev
  S4637C2_nt(); // tgen
};
//SIG(-1 S4637C2_nt) C1{ BC2{ vd v1} vd}


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

//skip512 S4637C2_nt

#else // __cplusplus

extern void _ZN10S4637C2_ntC1Ev();
extern void _ZN10S4637C2_ntD1Ev();
Name_Map name_map_S4637C2_nt[] = {
  NSPAIR(_ZN10S4637C2_ntC1Ev),
  NSPAIR(_ZN10S4637C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4637C3;
extern VTBL_ENTRY _ZTI7S4637C3[];
extern  VTBL_ENTRY _ZTV7S4637C3[];
static Base_Class bases_S4637C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4637C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4637C2_nt[];
extern void _ZN10S4637C2_ntD1Ev();
extern void _ZN10S4637C2_ntD0Ev();
extern void _ZN7S4637C32v2Ev();
static  VTBL_ENTRY vtc_S4637C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4637C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4637C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4637C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4637C32v2Ev,
};
extern VTBL_ENTRY _ZTI10S4637C2_nt[];
VTBL_ENTRY *P__ZTI10S4637C2_nt = _ZTI10S4637C2_nt; 
extern  VTBL_ENTRY _ZTV10S4637C2_nt[];
Class_Descriptor cd_S4637C2_nt = {  "S4637C2_nt", // class name
  bases_S4637C2_nt, 1,
  &(vtc_S4637C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4637C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4637C2_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  S4637C1  : S4637C2_nt {
  void *s4637c1f0[2];
  ::S9526C11_nt s4637c1f1;
  void *s4637c1f2[2];
  virtual  ~S4637C1(); // _ZN7S4637C1D1Ev
  virtual void  v1(); // _ZN7S4637C12v1Ev
  S4637C1(); // tgen
};
//SIG(1 S4637C1) C1{ BC2{ BC3{ vd v2} vd} vd v1 Fp[2] FC4{ m Fp Fi FC5{ m}} Fp[2]}


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

static void Test_S4637C1()
{
  extern Class_Descriptor cd_S4637C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S4637C1, buf);
    S4637C1 *dp, &lv = *(dp=new (buf) S4637C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S4637C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4637C1)");
    check_base_class_offset(lv, (S4637C3*)(S4637C2_nt*), 0, "S4637C1");
    check_base_class_offset(lv, (S4637C2_nt*), 0, "S4637C1");
    check_field_offset(lv, s4637c1f0, ABISELECT(8,4), "S4637C1.s4637c1f0");
    check_field_offset(lv, s4637c1f1, ABISELECT(24,12), "S4637C1.s4637c1f1");
    check_field_offset(lv, s4637c1f2, ABISELECT(40,24), "S4637C1.s4637c1f2");
    test_class_info(&lv, &cd_S4637C1);
    dp->~S4637C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4637C1(Test_S4637C1, "S4637C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S4637C1C1Ev();
extern void _ZN7S4637C1D1Ev();
Name_Map name_map_S4637C1[] = {
  NSPAIR(_ZN7S4637C1C1Ev),
  NSPAIR(_ZN7S4637C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4637C3;
extern VTBL_ENTRY _ZTI7S4637C3[];
extern  VTBL_ENTRY _ZTV7S4637C3[];
extern Class_Descriptor cd_S4637C2_nt;
extern VTBL_ENTRY _ZTI10S4637C2_nt[];
extern  VTBL_ENTRY _ZTV10S4637C2_nt[];
static Base_Class bases_S4637C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4637C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4637C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4637C1[];
extern void _ZN7S4637C1D1Ev();
extern void _ZN7S4637C1D0Ev();
extern void _ZN7S4637C32v2Ev();
extern void _ZN7S4637C12v1Ev();
static  VTBL_ENTRY vtc_S4637C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4637C1[0]),
  (VTBL_ENTRY)&_ZN7S4637C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4637C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4637C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4637C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4637C1[];
extern  VTBL_ENTRY _ZTV7S4637C1[];
Class_Descriptor cd_S4637C1 = {  "S4637C1", // class name
  bases_S4637C1, 2,
  &(vtc_S4637C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S4637C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4637C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9561C2  {
  virtual  ~S9561C2(); // _ZN7S9561C2D1Ev
  virtual void  v3(); // _ZN7S9561C22v3Ev
  virtual void  v4(); // _ZN7S9561C22v4Ev
  S9561C2(); // tgen
};
//SIG(-1 S9561C2) C1{ vd v1 v2}


 S9561C2 ::~S9561C2(){ note_dtor("S9561C2", this);}
void  S9561C2 ::v3(){vfunc_called(this, "_ZN7S9561C22v3Ev");}
void  S9561C2 ::v4(){vfunc_called(this, "_ZN7S9561C22v4Ev");}
S9561C2 ::S9561C2(){ note_ctor("S9561C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9561C2C1Ev();
extern void _ZN7S9561C2D1Ev();
Name_Map name_map_S9561C2[] = {
  NSPAIR(_ZN7S9561C2C1Ev),
  NSPAIR(_ZN7S9561C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9561C2[];
extern void _ZN7S9561C2D1Ev();
extern void _ZN7S9561C2D0Ev();
extern void _ZN7S9561C22v3Ev();
extern void _ZN7S9561C22v4Ev();
static  VTBL_ENTRY vtc_S9561C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9561C2[0]),
  (VTBL_ENTRY)&_ZN7S9561C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9561C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9561C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9561C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9561C2[];
extern  VTBL_ENTRY _ZTV7S9561C2[];
Class_Descriptor cd_S9561C2 = {  "S9561C2", // class name
  0,0,//no base classes
  &(vtc_S9561C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9561C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9561C2),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  S9561C1  : S9561C2 {
  void *s9561c1f0;
  ::S7075C15 s9561c1f1;
  virtual void  v1(); // _ZN7S9561C12v1Ev
  virtual void  v2(); // _ZN7S9561C12v2Ev
  ~S9561C1(); // tgen
  S9561C1(); // tgen
};
//SIG(1 S9561C1) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ FC4{ m Fp Fc[3] Fi} FC4 FC4}}


void  S9561C1 ::v1(){vfunc_called(this, "_ZN7S9561C12v1Ev");}
void  S9561C1 ::v2(){vfunc_called(this, "_ZN7S9561C12v2Ev");}
S9561C1 ::~S9561C1(){ note_dtor("S9561C1", this);} // tgen
S9561C1 ::S9561C1(){ note_ctor("S9561C1", this);} // tgen

static void Test_S9561C1()
{
  extern Class_Descriptor cd_S9561C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S9561C1, buf);
    S9561C1 *dp, &lv = *(dp=new (buf) S9561C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S9561C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9561C1)");
    check_base_class_offset(lv, (S9561C2*), 0, "S9561C1");
    check_field_offset(lv, s9561c1f0, ABISELECT(8,4), "S9561C1.s9561c1f0");
    check_field_offset(lv, s9561c1f1, ABISELECT(16,8), "S9561C1.s9561c1f1");
    test_class_info(&lv, &cd_S9561C1);
    dp->~S9561C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9561C1(Test_S9561C1, "S9561C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S9561C1C1Ev();
extern void _ZN7S9561C1D1Ev();
Name_Map name_map_S9561C1[] = {
  NSPAIR(_ZN7S9561C1C1Ev),
  NSPAIR(_ZN7S9561C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9561C2;
extern VTBL_ENTRY _ZTI7S9561C2[];
extern  VTBL_ENTRY _ZTV7S9561C2[];
static Base_Class bases_S9561C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9561C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9561C1[];
extern void _ZN7S9561C1D1Ev();
extern void _ZN7S9561C1D0Ev();
extern void _ZN7S9561C22v3Ev();
extern void _ZN7S9561C22v4Ev();
extern void _ZN7S9561C12v1Ev();
extern void _ZN7S9561C12v2Ev();
static  VTBL_ENTRY vtc_S9561C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9561C1[0]),
  (VTBL_ENTRY)&_ZN7S9561C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9561C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9561C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9561C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9561C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9561C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9561C1[];
extern  VTBL_ENTRY _ZTV7S9561C1[];
Class_Descriptor cd_S9561C1 = {  "S9561C1", // class name
  bases_S9561C1, 1,
  &(vtc_S9561C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S9561C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9561C1),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  S18816C1  {
  ::S20183C10 s18816c1f0;
  virtual void  v1(); // _ZN8S18816C12v1Ev
  virtual void  v2(); // _ZN8S18816C12v2Ev
  virtual void  v3(); // _ZN8S18816C12v3Ev
  virtual void  v4(); // _ZN8S18816C12v4Ev
  virtual void  v5(); // _ZN8S18816C12v5Ev
  virtual void  v6(); // _ZN8S18816C12v6Ev
  virtual void  v7(); // _ZN8S18816C12v7Ev
  virtual void  v8(); // _ZN8S18816C12v8Ev
  ~S18816C1(); // tgen
  S18816C1(); // tgen
};
//SIG(1 S18816C1) C1{ v1 v2 v3 v4 v5 v6 v7 v8 FC2{ v9 v10 v11 FL:52 FL[2]}}


void  S18816C1 ::v1(){vfunc_called(this, "_ZN8S18816C12v1Ev");}
void  S18816C1 ::v2(){vfunc_called(this, "_ZN8S18816C12v2Ev");}
void  S18816C1 ::v3(){vfunc_called(this, "_ZN8S18816C12v3Ev");}
void  S18816C1 ::v4(){vfunc_called(this, "_ZN8S18816C12v4Ev");}
void  S18816C1 ::v5(){vfunc_called(this, "_ZN8S18816C12v5Ev");}
void  S18816C1 ::v6(){vfunc_called(this, "_ZN8S18816C12v6Ev");}
void  S18816C1 ::v7(){vfunc_called(this, "_ZN8S18816C12v7Ev");}
void  S18816C1 ::v8(){vfunc_called(this, "_ZN8S18816C12v8Ev");}
S18816C1 ::~S18816C1(){ note_dtor("S18816C1", this);} // tgen
S18816C1 ::S18816C1(){ note_ctor("S18816C1", this);} // tgen

static void Test_S18816C1()
{
  extern Class_Descriptor cd_S18816C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S18816C1, buf);
    S18816C1 *dp, &lv = *(dp=new (buf) S18816C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S18816C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18816C1)");
    check_field_offset(lv, s18816c1f0, ABISELECT(8,4), "S18816C1.s18816c1f0");
    test_class_info(&lv, &cd_S18816C1);
    dp->~S18816C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18816C1(Test_S18816C1, "S18816C1", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN8S18816C1C1Ev();
extern void _ZN8S18816C1D1Ev();
Name_Map name_map_S18816C1[] = {
  NSPAIR(_ZN8S18816C1C1Ev),
  NSPAIR(_ZN8S18816C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18816C1[];
extern void _ZN8S18816C12v1Ev();
extern void _ZN8S18816C12v2Ev();
extern void _ZN8S18816C12v3Ev();
extern void _ZN8S18816C12v4Ev();
extern void _ZN8S18816C12v5Ev();
extern void _ZN8S18816C12v6Ev();
extern void _ZN8S18816C12v7Ev();
extern void _ZN8S18816C12v8Ev();
static  VTBL_ENTRY vtc_S18816C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18816C1[0]),
  (VTBL_ENTRY)&_ZN8S18816C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18816C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S18816C1[];
extern  VTBL_ENTRY _ZTV8S18816C1[];
Class_Descriptor cd_S18816C1 = {  "S18816C1", // class name
  0,0,//no base classes
  &(vtc_S18816C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI8S18816C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18816C1),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  S19275C3  {
  virtual void  v1(); // _ZN8S19275C32v1Ev
  ~S19275C3(); // tgen
  S19275C3(); // tgen
};
//SIG(-1 S19275C3) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S19275C3C1Ev();
extern void _ZN8S19275C3D1Ev();
Name_Map name_map_S19275C3[] = {
  NSPAIR(_ZN8S19275C3C1Ev),
  NSPAIR(_ZN8S19275C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19275C3[];
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY vtc_S19275C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C3[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
Class_Descriptor cd_S19275C3 = {  "S19275C3", // class name
  0,0,//no base classes
  &(vtc_S19275C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19275C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19275C3),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  S19275C5  : virtual S19894C34 , virtual S19275C3 {
  ::S19275C3 s19275c5f0;
  ~S19275C5(); // tgen
  S19275C5(); // tgen
};
//SIG(-1 S19275C5) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S19275C5()
{
  extern Class_Descriptor cd_S19275C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19275C5, buf);
    S19275C5 *dp, &lv = *(dp=new (buf) S19275C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19275C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19275C5)");
    check_base_class_offset(lv, (S19894C34*), 0, "S19275C5");
    check_base_class_offset(lv, (S19275C3*), 0, "S19275C5");
    check_field_offset(lv, s19275c5f0, ABISELECT(8,4), "S19275C5.s19275c5f0");
    test_class_info(&lv, &cd_S19275C5);
    dp->~S19275C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19275C5(Test_S19275C5, "S19275C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19275C5C1Ev();
extern void _ZN8S19275C5D1Ev();
Name_Map name_map_S19275C5[] = {
  NSPAIR(_ZN8S19275C5C1Ev),
  NSPAIR(_ZN8S19275C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19275C3;
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
static Base_Class bases_S19275C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19275C3,    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 _ZTI8S19275C5[];
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY vtc_S19275C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C5[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S19275C5[];
static  VTT_ENTRY vtt_S19275C5[] = {
  {&(_ZTV8S19275C5[5]),  5,6},
  {&(_ZTV8S19275C5[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19275C5[];
extern  VTBL_ENTRY _ZTV8S19275C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19275C5[];
Class_Descriptor cd_S19275C5 = {  "S19275C5", // class name
  bases_S19275C5, 2,
  &(vtc_S19275C5[0]), // expected_vtbl_contents
  &(vtt_S19275C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19275C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19275C5),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19275C5),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  S19275C2  : S19275C3 , S19894C6_nt , virtual S19275C5 {
  virtual void  v2(); // _ZN8S19275C22v2Ev
  ~S19275C2(); // tgen
  S19275C2(); // tgen
};
//SIG(-1 S19275C2) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S19275C2()
{
  extern Class_Descriptor cd_S19275C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19275C2, buf);
    S19275C2 *dp, &lv = *(dp=new (buf) S19275C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19275C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19275C2)");
    /*is_ambiguous_... S19275C2::S19275C3 */ AMB_check_base_class_offset(lv, (S19275C3*), 0, "S19275C2");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S19275C2");
    check_base_class_offset(lv, (S19894C34*)(S19275C5*), 0, "S19275C2");
    check_base_class_offset(lv, (S19275C3*)(S19275C5*), ABISELECT(16,8), "S19275C2");
    check_base_class_offset(lv, (S19275C5*), ABISELECT(16,8), "S19275C2");
    test_class_info(&lv, &cd_S19275C2);
    dp->~S19275C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19275C2(Test_S19275C2, "S19275C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19275C2C1Ev();
extern void _ZN8S19275C2D1Ev();
Name_Map name_map_S19275C2[] = {
  NSPAIR(_ZN8S19275C2C1Ev),
  NSPAIR(_ZN8S19275C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19275C3;
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19275C3;
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
extern Class_Descriptor cd_S19275C5;
extern VTBL_ENTRY _ZTI8S19275C5[];
extern  VTBL_ENTRY _ZTV8S19275C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19275C5[];
static Base_Class bases_S19275C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19275C3,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19275C5,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI8S19275C2[];
extern void _ZN8S19275C32v1Ev();
extern void _ZN8S19275C22v2Ev();
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY vtc_S19275C2[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C2[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19275C22v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19275C2[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S19275C2[];
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19275C5__8S19275C2[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C5[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
static  VTT_ENTRY vtt_S19275C2[] = {
  {&(_ZTV8S19275C2[5]),  5,13},
  {&(_ZTV8S19275C2[12]),  12,13},
  {&(_ZTV8S19275C2[12]),  12,13},
  {&(_tg__ZTV8S19275C5__8S19275C2[5]),  5,6},
  {&(_tg__ZTV8S19275C5__8S19275C2[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19275C2[];
extern  VTBL_ENTRY _ZTV8S19275C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19275C2[];
Class_Descriptor cd_S19275C2 = {  "S19275C2", // class name
  bases_S19275C2, 5,
  &(vtc_S19275C2[0]), // expected_vtbl_contents
  &(vtt_S19275C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19275C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19275C2),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19275C2),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19275C1  : virtual S19275C2 , S19275C3 {
  __tsi64 s19275c1f0;
  ~S19275C1(); // tgen
  S19275C1(); // tgen
};
//SIG(1 S19275C1) C1{ VBC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2} BC3 FL}


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

static void Test_S19275C1()
{
  extern Class_Descriptor cd_S19275C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S19275C1, buf);
    S19275C1 *dp, &lv = *(dp=new (buf) S19275C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19275C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19275C1)");
    /*is_ambiguous_... S19275C2::S19275C3 */ AMB_check_base_class_offset(lv, (S19275C3*)(S19275C2*), ABISELECT(16,12), "S19275C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S19275C2*), ABISELECT(24,16), "S19275C1");
    check_base_class_offset(lv, (S19894C34*)(S19275C5*), 0, "S19275C1");
    check_base_class_offset(lv, (S19275C3*)(S19275C5*), ABISELECT(32,20), "S19275C1");
    check_base_class_offset(lv, (S19275C5*)(S19275C2*), ABISELECT(32,20), "S19275C1");
    check_base_class_offset(lv, (S19275C2*), ABISELECT(16,12), "S19275C1");
    /*is_ambiguous_... S19275C1::S19275C3 */ AMB_check_base_class_offset(lv, (S19275C3*), 0, "S19275C1");
    check_field_offset(lv, s19275c1f0, ABISELECT(8,4), "S19275C1.s19275c1f0");
    test_class_info(&lv, &cd_S19275C1);
    dp->~S19275C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19275C1(Test_S19275C1, "S19275C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19275C1C1Ev();
extern void _ZN8S19275C1D1Ev();
Name_Map name_map_S19275C1[] = {
  NSPAIR(_ZN8S19275C1C1Ev),
  NSPAIR(_ZN8S19275C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19275C3;
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19275C3;
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
extern Class_Descriptor cd_S19275C5;
extern VTBL_ENTRY _ZTI8S19275C5[];
extern  VTBL_ENTRY _ZTV8S19275C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19275C5[];
extern Class_Descriptor cd_S19275C2;
extern VTBL_ENTRY _ZTI8S19275C2[];
extern  VTBL_ENTRY _ZTV8S19275C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19275C2[];
extern Class_Descriptor cd_S19275C3;
extern VTBL_ENTRY _ZTI8S19275C3[];
extern  VTBL_ENTRY _ZTV8S19275C3[];
static Base_Class bases_S19275C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19275C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C6_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19275C3,    ABISELECT(32,20), //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
    4, //immediately_derived
  0, 1},
  {&cd_S19275C5,    ABISELECT(32,20), //bcp->offset
    16, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19275C2,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19275C1[];
extern void _ZN8S19275C32v1Ev();
extern void _ZN8S19275C32v1Ev();
extern void _ZN8S19275C22v2Ev();
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY vtc_S19275C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C1[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19275C1[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19275C22v2Ev,
  0,
  ABISELECT(-32,-20),
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19275C1[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S19275C1[];
extern void _ZN8S19275C32v1Ev();
extern void _ZN8S19275C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19275C2__8S19275C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C2[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19275C22v2Ev,
};
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19275C5__8S19275C2__8S19275C1[] = {
  0,
  ABISELECT(-32,-20),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19275C2[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
extern void _ZN8S19275C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19275C5__8S19275C1[] = {
  0,
  ABISELECT(-32,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19275C5[0]),
  (VTBL_ENTRY)&_ZN8S19275C32v1Ev,
};
static  VTT_ENTRY vtt_S19275C1[] = {
  {&(_ZTV8S19275C1[6]),  6,22},
  {&(_ZTV8S19275C1[14]),  14,22},
  {&(_ZTV8S19275C1[21]),  21,22},
  {&(_ZTV8S19275C1[21]),  21,22},
  {&(_tg__ZTV8S19275C2__8S19275C1[5]),  5,7},
  {&(_tg__ZTV8S19275C5__8S19275C2__8S19275C1[5]),  5,6},
  {&(_tg__ZTV8S19275C5__8S19275C2__8S19275C1[5]),  5,6},
  {&(_tg__ZTV8S19275C5__8S19275C1[5]),  5,6},
  {&(_tg__ZTV8S19275C5__8S19275C1[5]),  5,6},
};
extern VTBL_ENTRY _ZTI8S19275C1[];
extern  VTBL_ENTRY _ZTV8S19275C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19275C1[];
Class_Descriptor cd_S19275C1 = {  "S19275C1", // class name
  bases_S19275C1, 7,
  &(vtc_S19275C1[0]), // expected_vtbl_contents
  &(vtt_S19275C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19275C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19275C1),22, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19275C1),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S7299C4C1Ev();
extern void _ZN7S7299C4D1Ev();
Name_Map name_map_S7299C4[] = {
  NSPAIR(_ZN7S7299C4C1Ev),
  NSPAIR(_ZN7S7299C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7299C4[];
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY vtc_S7299C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C4[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
Class_Descriptor cd_S7299C4 = {  "S7299C4", // class name
  0,0,//no base classes
  &(vtc_S7299C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7299C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7299C4),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  S7299C6  : virtual S19894C34 , virtual S7299C4 {
  ::S7299C4 s7299c6f0;
  ~S7299C6(); // tgen
  S7299C6(); // tgen
};
//SIG(-1 S7299C6) C1{ VBC2{ m} VBC3{ v1} FC3}


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

static void Test_S7299C6()
{
  extern Class_Descriptor cd_S7299C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7299C6, buf);
    S7299C6 *dp, &lv = *(dp=new (buf) S7299C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7299C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7299C6)");
    check_base_class_offset(lv, (S19894C34*), 0, "S7299C6");
    check_base_class_offset(lv, (S7299C4*), 0, "S7299C6");
    check_field_offset(lv, s7299c6f0, ABISELECT(8,4), "S7299C6.s7299c6f0");
    test_class_info(&lv, &cd_S7299C6);
    dp->~S7299C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7299C6(Test_S7299C6, "S7299C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7299C6C1Ev();
extern void _ZN7S7299C6D1Ev();
Name_Map name_map_S7299C6[] = {
  NSPAIR(_ZN7S7299C6C1Ev),
  NSPAIR(_ZN7S7299C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
static Base_Class bases_S7299C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7299C4,    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 _ZTI7S7299C6[];
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY vtc_S7299C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C6[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7299C6[];
static  VTT_ENTRY vtt_S7299C6[] = {
  {&(_ZTV7S7299C6[5]),  5,6},
  {&(_ZTV7S7299C6[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S7299C6[];
extern  VTBL_ENTRY _ZTV7S7299C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C6[];
Class_Descriptor cd_S7299C6 = {  "S7299C6", // class name
  bases_S7299C6, 2,
  &(vtc_S7299C6[0]), // expected_vtbl_contents
  &(vtt_S7299C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7299C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7299C6),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7299C6),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  S7299C3  : S7299C4 , S19894C6_nt , virtual S7299C6 {
  virtual void  v2(); // _ZN7S7299C32v2Ev
  ~S7299C3(); // tgen
  S7299C3(); // tgen
};
//SIG(-1 S7299C3) C1{ BC2{ v2} BC3{ m Fp} VBC4{ VBC5{ m} VBC2 FC2} v1}


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

static void Test_S7299C3()
{
  extern Class_Descriptor cd_S7299C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7299C3, buf);
    S7299C3 *dp, &lv = *(dp=new (buf) S7299C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7299C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7299C3)");
    /*is_ambiguous_... S7299C3::S7299C4 */ AMB_check_base_class_offset(lv, (S7299C4*), 0, "S7299C3");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(8,4), "S7299C3");
    check_base_class_offset(lv, (S19894C34*)(S7299C6*), 0, "S7299C3");
    check_base_class_offset(lv, (S7299C4*)(S7299C6*), ABISELECT(16,8), "S7299C3");
    check_base_class_offset(lv, (S7299C6*), ABISELECT(16,8), "S7299C3");
    test_class_info(&lv, &cd_S7299C3);
    dp->~S7299C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7299C3(Test_S7299C3, "S7299C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7299C3C1Ev();
extern void _ZN7S7299C3D1Ev();
Name_Map name_map_S7299C3[] = {
  NSPAIR(_ZN7S7299C3C1Ev),
  NSPAIR(_ZN7S7299C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
extern Class_Descriptor cd_S7299C6;
extern VTBL_ENTRY _ZTI7S7299C6[];
extern  VTBL_ENTRY _ZTV7S7299C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C6[];
static Base_Class bases_S7299C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7299C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7299C4,    ABISELECT(16,8), //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
    4, //immediately_derived
  0, 1},
  {&cd_S7299C6,    ABISELECT(16,8), //bcp->offset
    7, //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 _ZTI7S7299C3[];
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C32v2Ev();
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY vtc_S7299C3[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7299C32v2Ev,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7299C3[];
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C6__7S7299C3[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C6[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
static  VTT_ENTRY vtt_S7299C3[] = {
  {&(_ZTV7S7299C3[5]),  5,13},
  {&(_ZTV7S7299C3[12]),  12,13},
  {&(_ZTV7S7299C3[12]),  12,13},
  {&(_tg__ZTV7S7299C6__7S7299C3[5]),  5,6},
  {&(_tg__ZTV7S7299C6__7S7299C3[5]),  5,6},
};
extern VTBL_ENTRY _ZTI7S7299C3[];
extern  VTBL_ENTRY _ZTV7S7299C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C3[];
Class_Descriptor cd_S7299C3 = {  "S7299C3", // class name
  bases_S7299C3, 5,
  &(vtc_S7299C3[0]), // expected_vtbl_contents
  &(vtt_S7299C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7299C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7299C3),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7299C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7299C2  : virtual S7299C3 {
  ~S7299C2(); // tgen
  S7299C2(); // tgen
};
//SIG(-1 S7299C2) C1{ VBC2{ BC3{ v1} BC4{ m Fp} VBC5{ VBC6{ m} VBC3 FC3} v2}}


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

static void Test_S7299C2()
{
  extern Class_Descriptor cd_S7299C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7299C2, buf);
    S7299C2 *dp, &lv = *(dp=new (buf) S7299C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7299C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7299C2)");
    /*is_ambiguous_... S7299C3::S7299C4 */ AMB_check_base_class_offset(lv, (S7299C4*)(S7299C3*), ABISELECT(8,4), "S7299C2");
    check_base_class_offset(lv, (S19894C6_nt*)(S7299C3*), ABISELECT(16,8), "S7299C2");
    check_base_class_offset(lv, (S19894C34*)(S7299C6*), 0, "S7299C2");
    check_base_class_offset(lv, (S7299C4*)(S7299C6*), 0, "S7299C2");
    check_base_class_offset(lv, (S7299C6*)(S7299C3*), ABISELECT(24,12), "S7299C2");
    check_base_class_offset(lv, (S7299C3*), ABISELECT(8,4), "S7299C2");
    test_class_info(&lv, &cd_S7299C2);
    dp->~S7299C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7299C2(Test_S7299C2, "S7299C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7299C2C1Ev();
extern void _ZN7S7299C2D1Ev();
Name_Map name_map_S7299C2[] = {
  NSPAIR(_ZN7S7299C2C1Ev),
  NSPAIR(_ZN7S7299C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
extern Class_Descriptor cd_S7299C6;
extern VTBL_ENTRY _ZTI7S7299C6[];
extern  VTBL_ENTRY _ZTV7S7299C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C6[];
extern Class_Descriptor cd_S7299C3;
extern VTBL_ENTRY _ZTI7S7299C3[];
extern  VTBL_ENTRY _ZTV7S7299C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C3[];
static Base_Class bases_S7299C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7299C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7299C4,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7299C6,    ABISELECT(24,12), //bcp->offset
    17, //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
    5, //immediately_derived
  0, 1},
  {&cd_S7299C3,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7299C2[];
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C32v2Ev();
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY vtc_S7299C2[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C2[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7299C2[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7299C32v2Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7299C2[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7299C2[];
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C3__7S7299C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7299C32v2Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C6__7S7299C3__7S7299C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C4__A1__7S7299C3__7S7299C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C6__7S7299C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C6[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C4__7S7299C6__7S7299C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7299C6[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
static  VTT_ENTRY vtt_S7299C2[] = {
  {&(_ZTV7S7299C2[7]),  7,23},
  {&(_ZTV7S7299C2[15]),  15,23},
  {&(_ZTV7S7299C2[22]),  22,23},
  {&(_ZTV7S7299C2[7]),  7,23},
  {&(_tg__ZTV7S7299C3__7S7299C2[5]),  5,7},
  {&(_tg__ZTV7S7299C6__7S7299C3__7S7299C2[5]),  5,6},
  {&(_tg__ZTV7S7299C4__A1__7S7299C3__7S7299C2[3]),  3,4},
  {&(_tg__ZTV7S7299C6__7S7299C2[5]),  5,6},
  {&(_tg__ZTV7S7299C4__7S7299C6__7S7299C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7299C2[];
extern  VTBL_ENTRY _ZTV7S7299C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C2[];
Class_Descriptor cd_S7299C2 = {  "S7299C2", // class name
  bases_S7299C2, 6,
  &(vtc_S7299C2[0]), // expected_vtbl_contents
  &(vtt_S7299C2[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7299C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7299C2),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7299C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7299C1  : S7299C2 {
  ~S7299C1(); // tgen
  S7299C1(); // tgen
};
//SIG(1 S7299C1) C1{ BC2{ VBC3{ BC4{ v1} BC5{ m Fp} VBC6{ VBC7{ m} VBC4 FC4} v2}}}


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

static void Test_S7299C1()
{
  extern Class_Descriptor cd_S7299C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7299C1, buf);
    S7299C1 *dp, &lv = *(dp=new (buf) S7299C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7299C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7299C1)");
    /*is_ambiguous_... S7299C3::S7299C4 */ AMB_check_base_class_offset(lv, (S7299C4*)(S7299C3*), ABISELECT(8,4), "S7299C1");
    check_base_class_offset(lv, (S19894C6_nt*)(S7299C3*), ABISELECT(16,8), "S7299C1");
    check_base_class_offset(lv, (S19894C34*)(S7299C6*), 0, "S7299C1");
    check_base_class_offset(lv, (S7299C4*)(S7299C6*), 0, "S7299C1");
    check_base_class_offset(lv, (S7299C6*)(S7299C3*), ABISELECT(24,12), "S7299C1");
    check_base_class_offset(lv, (S7299C3*)(S7299C2*), ABISELECT(8,4), "S7299C1");
    check_base_class_offset(lv, (S7299C2*), 0, "S7299C1");
    test_class_info(&lv, &cd_S7299C1);
    dp->~S7299C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7299C1(Test_S7299C1, "S7299C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7299C1C1Ev();
extern void _ZN7S7299C1D1Ev();
Name_Map name_map_S7299C1[] = {
  NSPAIR(_ZN7S7299C1C1Ev),
  NSPAIR(_ZN7S7299C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S7299C4;
extern VTBL_ENTRY _ZTI7S7299C4[];
extern  VTBL_ENTRY _ZTV7S7299C4[];
extern Class_Descriptor cd_S7299C6;
extern VTBL_ENTRY _ZTI7S7299C6[];
extern  VTBL_ENTRY _ZTV7S7299C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C6[];
extern Class_Descriptor cd_S7299C3;
extern VTBL_ENTRY _ZTI7S7299C3[];
extern  VTBL_ENTRY _ZTV7S7299C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C3[];
extern Class_Descriptor cd_S7299C2;
extern VTBL_ENTRY _ZTI7S7299C2[];
extern  VTBL_ENTRY _ZTV7S7299C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C2[];
static Base_Class bases_S7299C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7299C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19894C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7299C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7299C6,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7299C3,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7299C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7299C1[];
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C32v2Ev();
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY vtc_S7299C1[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C1[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7299C1[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7299C32v2Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7299C1[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7299C1[];
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C2__7S7299C1[] = {
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C2[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C3__7S7299C2__7S7299C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7299C2[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7299C32v2Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C6__7S7299C2__7S7299C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7299C2[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
extern void _ZN7S7299C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C3__7S7299C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7299C32v2Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C6__7S7299C3__7S7299C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C4__A1__7S7299C3__7S7299C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7299C3[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C6__7S7299C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7299C6[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
extern void _ZN7S7299C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7299C4__7S7299C6__7S7299C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7299C6[0]),
  (VTBL_ENTRY)&_ZN7S7299C42v1Ev,
};
static  VTT_ENTRY vtt_S7299C1[] = {
  {&(_ZTV7S7299C1[7]),  7,23},
  {&(_tg__ZTV7S7299C2__7S7299C1[7]),  7,8},
  {&(_tg__ZTV7S7299C3__7S7299C2__7S7299C1[7]),  7,9},
  {&(_tg__ZTV7S7299C6__7S7299C2__7S7299C1[5]),  5,6},
  {&(_tg__ZTV7S7299C2__7S7299C1[7]),  7,8},
  {&(_ZTV7S7299C1[15]),  15,23},
  {&(_ZTV7S7299C1[22]),  22,23},
  {&(_ZTV7S7299C1[7]),  7,23},
  {&(_tg__ZTV7S7299C3__7S7299C1[5]),  5,7},
  {&(_tg__ZTV7S7299C6__7S7299C3__7S7299C1[5]),  5,6},
  {&(_tg__ZTV7S7299C4__A1__7S7299C3__7S7299C1[3]),  3,4},
  {&(_tg__ZTV7S7299C6__7S7299C1[5]),  5,6},
  {&(_tg__ZTV7S7299C4__7S7299C6__7S7299C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7299C1[];
extern  VTBL_ENTRY _ZTV7S7299C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7299C1[];
Class_Descriptor cd_S7299C1 = {  "S7299C1", // class name
  bases_S7299C1, 7,
  &(vtc_S7299C1[0]), // expected_vtbl_contents
  &(vtt_S7299C1[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7299C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7299C1),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7299C1),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16353C1  {
  ::S7097C3 s16353c1f0;
  void *s16353c1f1[5];
  int s16353c1f2[5];
  void *s16353c1f3;
  int s16353c1f4;
  void *s16353c1f5[4];
  char s16353c1f6[4];
  void *s16353c1f7;
  void  mf16353c1(); // _ZN8S16353C19mf16353c1Ev
};
//SIG(1 S16353C1) C1{ m FC2{ m Fp FL Fi} Fp[5] Fi[5] Fp Fi Fp[4] Fc[4] Fp}


void  S16353C1 ::mf16353c1(){}

static void Test_S16353C1()
{
  {
    init_simple_test("S16353C1");
    S16353C1 lv;
    check2(sizeof(lv), ABISELECT(152,88), "sizeof(S16353C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16353C1)");
    check_field_offset(lv, s16353c1f0, 0, "S16353C1.s16353c1f0");
    check_field_offset(lv, s16353c1f1, ABISELECT(24,16), "S16353C1.s16353c1f1");
    check_field_offset(lv, s16353c1f2, ABISELECT(64,36), "S16353C1.s16353c1f2");
    check_field_offset(lv, s16353c1f3, ABISELECT(88,56), "S16353C1.s16353c1f3");
    check_field_offset(lv, s16353c1f4, ABISELECT(96,60), "S16353C1.s16353c1f4");
    check_field_offset(lv, s16353c1f5, ABISELECT(104,64), "S16353C1.s16353c1f5");
    check_field_offset(lv, s16353c1f6, ABISELECT(136,80), "S16353C1.s16353c1f6");
    check_field_offset(lv, s16353c1f7, ABISELECT(144,84), "S16353C1.s16353c1f7");
  }
}
static Arrange_To_Call_Me vS16353C1(Test_S16353C1, "S16353C1", ABISELECT(152,88));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21547C3_nt  {
  void *s21547c3f0;
  int s21547c3f1;
};
//SIG(1 S21547C3_nt) C1{ Fp Fi}



//skip512 S21547C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21547C2  {
  ::S21547C3_nt s21547c2f0[256];
  ::S11830C3_nt s21547c2f1[256];
  void  mf21547c2(); // _ZN8S21547C29mf21547c2Ev
  virtual  ~S21547C2(); // _ZN8S21547C2D1Ev
  S21547C2(); // tgen
};
//SIG(-1 S21547C2) C1{ vd m FC2{ Fp Fi}[256] FC3{ Fp Fi[2]}[256]}


void  S21547C2 ::mf21547c2(){}
 S21547C2 ::~S21547C2(){ note_dtor("S21547C2", this);}
S21547C2 ::S21547C2(){ note_ctor("S21547C2", this);} // tgen

static void Test_S21547C2()
{
  extern Class_Descriptor cd_S21547C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1026,1282)];
    init_test(&cd_S21547C2, buf);
    S21547C2 *dp, &lv = *(dp=new (buf) S21547C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8200,5124), "sizeof(S21547C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21547C2)");
    check_field_offset(lv, s21547c2f0, ABISELECT(8,4), "S21547C2.s21547c2f0");
    check_field_offset(lv, s21547c2f1, ABISELECT(4104,2052), "S21547C2.s21547c2f1");
    test_class_info(&lv, &cd_S21547C2);
    dp->~S21547C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21547C2(Test_S21547C2, "S21547C2", ABISELECT(8200,5124));

#else // __cplusplus

extern void _ZN8S21547C2C1Ev();
extern void _ZN8S21547C2D1Ev();
Name_Map name_map_S21547C2[] = {
  NSPAIR(_ZN8S21547C2C1Ev),
  NSPAIR(_ZN8S21547C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21547C2[];
extern void _ZN8S21547C2D1Ev();
extern void _ZN8S21547C2D0Ev();
static  VTBL_ENTRY vtc_S21547C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21547C2[0]),
  (VTBL_ENTRY)&_ZN8S21547C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21547C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21547C2[];
extern  VTBL_ENTRY _ZTV8S21547C2[];
Class_Descriptor cd_S21547C2 = {  "S21547C2", // class name
  0,0,//no base classes
  &(vtc_S21547C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8200,5124), // object size
  NSPAIRA(_ZTI8S21547C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21547C2),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  S21547C1  {
  ::S21547C2 s21547c1f0;
  void  mf21547c1(); // _ZN8S21547C19mf21547c1Ev
  virtual  ~S21547C1(); // _ZN8S21547C1D1Ev
  S21547C1(); // tgen
};
//SIG(1 S21547C1) C1{ vd m FC2{ vd m FC3{ Fp Fi}[256] FC4{ Fp Fi[2]}[256]}}


void  S21547C1 ::mf21547c1(){}
 S21547C1 ::~S21547C1(){ note_dtor("S21547C1", this);}
S21547C1 ::S21547C1(){ note_ctor("S21547C1", this);} // tgen

static void Test_S21547C1()
{
  extern Class_Descriptor cd_S21547C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1027,1283)];
    init_test(&cd_S21547C1, buf);
    S21547C1 *dp, &lv = *(dp=new (buf) S21547C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8208,5128), "sizeof(S21547C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21547C1)");
    check_field_offset(lv, s21547c1f0, ABISELECT(8,4), "S21547C1.s21547c1f0");
    test_class_info(&lv, &cd_S21547C1);
    dp->~S21547C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21547C1(Test_S21547C1, "S21547C1", ABISELECT(8208,5128));

#else // __cplusplus

extern void _ZN8S21547C1C1Ev();
extern void _ZN8S21547C1D1Ev();
Name_Map name_map_S21547C1[] = {
  NSPAIR(_ZN8S21547C1C1Ev),
  NSPAIR(_ZN8S21547C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21547C1[];
extern void _ZN8S21547C1D1Ev();
extern void _ZN8S21547C1D0Ev();
static  VTBL_ENTRY vtc_S21547C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21547C1[0]),
  (VTBL_ENTRY)&_ZN8S21547C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21547C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21547C1[];
extern  VTBL_ENTRY _ZTV8S21547C1[];
Class_Descriptor cd_S21547C1 = {  "S21547C1", // class name
  0,0,//no base classes
  &(vtc_S21547C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8208,5128), // object size
  NSPAIRA(_ZTI8S21547C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21547C1),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  S9088C2  {
  virtual  ~S9088C2(); // _ZN7S9088C2D1Ev
  virtual void  v2(); // _ZN7S9088C22v2Ev
  S9088C2(); // tgen
};
//SIG(-1 S9088C2) C1{ vd v1}


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

static void Test_S9088C2()
{
  extern Class_Descriptor cd_S9088C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9088C2, buf);
    S9088C2 *dp, &lv = *(dp=new (buf) S9088C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9088C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9088C2)");
    test_class_info(&lv, &cd_S9088C2);
    dp->~S9088C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9088C2(Test_S9088C2, "S9088C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9088C2C1Ev();
extern void _ZN7S9088C2D1Ev();
Name_Map name_map_S9088C2[] = {
  NSPAIR(_ZN7S9088C2C1Ev),
  NSPAIR(_ZN7S9088C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9088C2[];
extern void _ZN7S9088C2D1Ev();
extern void _ZN7S9088C2D0Ev();
extern void _ZN7S9088C22v2Ev();
static  VTBL_ENTRY vtc_S9088C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9088C2[0]),
  (VTBL_ENTRY)&_ZN7S9088C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9088C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9088C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9088C2[];
extern  VTBL_ENTRY _ZTV7S9088C2[];
Class_Descriptor cd_S9088C2 = {  "S9088C2", // class name
  0,0,//no base classes
  &(vtc_S9088C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9088C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9088C2),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  S9088C1  : S9088C2 {
  void *s9088c1f0;
  ::S7075C15 s9088c1f1;
  virtual  ~S9088C1(); // _ZN7S9088C1D1Ev
  virtual void  v1(); // _ZN7S9088C12v1Ev
  S9088C1(); // tgen
};
//SIG(1 S9088C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ FC4{ m Fp Fc[3] Fi} FC4 FC4}}


 S9088C1 ::~S9088C1(){ note_dtor("S9088C1", this);}
void  S9088C1 ::v1(){vfunc_called(this, "_ZN7S9088C12v1Ev");}
S9088C1 ::S9088C1(){ note_ctor("S9088C1", this);} // tgen

static void Test_S9088C1()
{
  extern Class_Descriptor cd_S9088C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S9088C1, buf);
    S9088C1 *dp, &lv = *(dp=new (buf) S9088C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S9088C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9088C1)");
    check_base_class_offset(lv, (S9088C2*), 0, "S9088C1");
    check_field_offset(lv, s9088c1f0, ABISELECT(8,4), "S9088C1.s9088c1f0");
    check_field_offset(lv, s9088c1f1, ABISELECT(16,8), "S9088C1.s9088c1f1");
    test_class_info(&lv, &cd_S9088C1);
    dp->~S9088C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9088C1(Test_S9088C1, "S9088C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S9088C1C1Ev();
extern void _ZN7S9088C1D1Ev();
Name_Map name_map_S9088C1[] = {
  NSPAIR(_ZN7S9088C1C1Ev),
  NSPAIR(_ZN7S9088C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9088C2;
extern VTBL_ENTRY _ZTI7S9088C2[];
extern  VTBL_ENTRY _ZTV7S9088C2[];
static Base_Class bases_S9088C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9088C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9088C1[];
extern void _ZN7S9088C1D1Ev();
extern void _ZN7S9088C1D0Ev();
extern void _ZN7S9088C22v2Ev();
extern void _ZN7S9088C12v1Ev();
static  VTBL_ENTRY vtc_S9088C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9088C1[0]),
  (VTBL_ENTRY)&_ZN7S9088C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9088C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9088C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9088C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9088C1[];
extern  VTBL_ENTRY _ZTV7S9088C1[];
Class_Descriptor cd_S9088C1 = {  "S9088C1", // class name
  bases_S9088C1, 1,
  &(vtc_S9088C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S9088C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9088C1),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  S17314C1  {
  long s17314c1f0;
  char s17314c1f1;
  long s17314c1f2;
  __tsi64 s17314c1f3;
  int s17314c1f4;
  long s17314c1f5[4];
  long double s17314c1f6[4];
  short s17314c1f7[4];
  void *s17314c1f8[2];
  int s17314c1f9[2];
  void  mf17314c1(); // _ZN8S17314C19mf17314c1Ev
};
//SIG(1 S17314C1) C1{ m Fl Fc Fl FL Fi Fl[4] FD[4] Fs[4] Fp[2] Fi[2]}


void  S17314C1 ::mf17314c1(){}

static void Test_S17314C1()
{
  {
    init_simple_test("S17314C1");
    S17314C1 lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S17314C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S17314C1)");
    check_field_offset(lv, s17314c1f0, 0, "S17314C1.s17314c1f0");
    check_field_offset(lv, s17314c1f1, ABISELECT(8,4), "S17314C1.s17314c1f1");
    check_field_offset(lv, s17314c1f2, ABISELECT(16,8), "S17314C1.s17314c1f2");
    check_field_offset(lv, s17314c1f3, ABISELECT(24,12), "S17314C1.s17314c1f3");
    check_field_offset(lv, s17314c1f4, ABISELECT(32,20), "S17314C1.s17314c1f4");
    check_field_offset(lv, s17314c1f5, ABISELECT(40,24), "S17314C1.s17314c1f5");
    check_field_offset(lv, s17314c1f6, ABISELECT(80,40), "S17314C1.s17314c1f6");
    check_field_offset(lv, s17314c1f7, ABISELECT(144,88), "S17314C1.s17314c1f7");
    check_field_offset(lv, s17314c1f8, ABISELECT(152,96), "S17314C1.s17314c1f8");
    check_field_offset(lv, s17314c1f9, ABISELECT(168,104), "S17314C1.s17314c1f9");
  }
}
static Arrange_To_Call_Me vS17314C1(Test_S17314C1, "S17314C1", ABISELECT(176,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3488C3_nt  : virtual S3223C8_nt {
  int s3488c3f0;
  ~S3488C3_nt(); // tgen
  S3488C3_nt(); // tgen
};
//SIG(-1 S3488C3_nt) C1{ VBC2{ m Fi} Fi}


S3488C3_nt ::~S3488C3_nt(){ note_dtor("S3488C3_nt", this);} // tgen
S3488C3_nt ::S3488C3_nt(){ note_ctor("S3488C3_nt", this);} // tgen

//skip512 S3488C3_nt

#else // __cplusplus

extern void _ZN10S3488C3_ntC1Ev();
extern void _ZN10S3488C3_ntD1Ev();
Name_Map name_map_S3488C3_nt[] = {
  NSPAIR(_ZN10S3488C3_ntC1Ev),
  NSPAIR(_ZN10S3488C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S3488C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S3488C3_nt[];
static  VTBL_ENTRY vtc_S3488C3_nt[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI10S3488C3_nt[0]),
};
extern VTBL_ENTRY _ZTV10S3488C3_nt[];
static  VTT_ENTRY vtt_S3488C3_nt[] = {
  {&(_ZTV10S3488C3_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI10S3488C3_nt[];
VTBL_ENTRY *P__ZTI10S3488C3_nt = _ZTI10S3488C3_nt; 
extern  VTBL_ENTRY _ZTV10S3488C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S3488C3_nt[];
Class_Descriptor cd_S3488C3_nt = {  "S3488C3_nt", // class name
  bases_S3488C3_nt, 1,
  &(vtc_S3488C3_nt[0]), // expected_vtbl_contents
  &(vtt_S3488C3_nt[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S3488C3_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S3488C3_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S3488C3_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3488C2  : S3488C3_nt {
  int s3488c2f0;
  ~S3488C2(); // tgen
  S3488C2(); // tgen
};
//SIG(-1 S3488C2) C1{ BC2{ VBC3{ m Fi} Fi} Fi}


S3488C2 ::~S3488C2(){ note_dtor("S3488C2", this);} // tgen
S3488C2 ::S3488C2(){ note_ctor("S3488C2", this);} // tgen

static void Test_S3488C2()
{
  extern Class_Descriptor cd_S3488C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3488C2, buf);
    S3488C2 *dp, &lv = *(dp=new (buf) S3488C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3488C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3488C2)");
    check_base_class_offset(lv, (S3223C8_nt*)(S3488C3_nt*), ABISELECT(16,12), "S3488C2");
    check_base_class_offset(lv, (S3488C3_nt*), 0, "S3488C2");
    check_field_offset(lv, s3488c2f0, ABISELECT(12,8), "S3488C2.s3488c2f0");
    test_class_info(&lv, &cd_S3488C2);
    dp->~S3488C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3488C2(Test_S3488C2, "S3488C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3488C2C1Ev();
extern void _ZN7S3488C2D1Ev();
Name_Map name_map_S3488C2[] = {
  NSPAIR(_ZN7S3488C2C1Ev),
  NSPAIR(_ZN7S3488C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S3488C3_nt;
extern VTBL_ENTRY _ZTI10S3488C3_nt[];
extern  VTBL_ENTRY _ZTV10S3488C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S3488C3_nt[];
static Base_Class bases_S3488C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_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, 1},
  {&cd_S3488C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3488C2[];
static  VTBL_ENTRY vtc_S3488C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3488C2[0]),
};
extern VTBL_ENTRY _ZTV7S3488C2[];
static  VTBL_ENTRY _tg__ZTV10S3488C3_nt__7S3488C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S3488C3_nt[0]),
};
static  VTT_ENTRY vtt_S3488C2[] = {
  {&(_ZTV7S3488C2[3]),  3,3},
  {&(_tg__ZTV10S3488C3_nt__7S3488C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3488C2[];
extern  VTBL_ENTRY _ZTV7S3488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3488C2[];
Class_Descriptor cd_S3488C2 = {  "S3488C2", // class name
  bases_S3488C2, 2,
  &(vtc_S3488C2[0]), // expected_vtbl_contents
  &(vtt_S3488C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3488C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3488C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3488C2),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  S3488C5  : virtual S3223C8_nt {
  void *s3488c5f0;
  ~S3488C5(); // tgen
  S3488C5(); // tgen
};
//SIG(-1 S3488C5) C1{ VBC2{ m Fi} Fp}


S3488C5 ::~S3488C5(){ note_dtor("S3488C5", this);} // tgen
S3488C5 ::S3488C5(){ note_ctor("S3488C5", this);} // tgen

static void Test_S3488C5()
{
  extern Class_Descriptor cd_S3488C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3488C5, buf);
    S3488C5 *dp, &lv = *(dp=new (buf) S3488C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3488C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3488C5)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(16,8), "S3488C5");
    check_field_offset(lv, s3488c5f0, ABISELECT(8,4), "S3488C5.s3488c5f0");
    test_class_info(&lv, &cd_S3488C5);
    dp->~S3488C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3488C5(Test_S3488C5, "S3488C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3488C5C1Ev();
extern void _ZN7S3488C5D1Ev();
Name_Map name_map_S3488C5[] = {
  NSPAIR(_ZN7S3488C5C1Ev),
  NSPAIR(_ZN7S3488C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S3488C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3488C5[];
static  VTBL_ENTRY vtc_S3488C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3488C5[0]),
};
extern VTBL_ENTRY _ZTV7S3488C5[];
static  VTT_ENTRY vtt_S3488C5[] = {
  {&(_ZTV7S3488C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3488C5[];
extern  VTBL_ENTRY _ZTV7S3488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3488C5[];
Class_Descriptor cd_S3488C5 = {  "S3488C5", // class name
  bases_S3488C5, 1,
  &(vtc_S3488C5[0]), // expected_vtbl_contents
  &(vtt_S3488C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3488C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3488C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3488C5),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  S3488C1  : S3488C2 , S3488C5 , S19894C6_nt {
  ~S3488C1(); // tgen
  S3488C1(); // tgen
};
//SIG(1 S3488C1) C1{ BC2{ BC3{ VBC4{ m Fi} Fi} Fi} BC5{ VBC4 Fp} BC6{ m Fp}}


S3488C1 ::~S3488C1(){ note_dtor("S3488C1", this);} // tgen
S3488C1 ::S3488C1(){ note_ctor("S3488C1", this);} // tgen

static void Test_S3488C1()
{
  extern Class_Descriptor cd_S3488C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3488C1, buf);
    S3488C1 *dp, &lv = *(dp=new (buf) S3488C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3488C1)");
    check_base_class_offset(lv, (S3223C8_nt*)(S3488C3_nt*)(S3488C2*), ABISELECT(40,24), "S3488C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S3488C5*), ABISELECT(40,24), "S3488C1");
    check_base_class_offset(lv, (S3488C3_nt*)(S3488C2*), 0, "S3488C1");
    check_base_class_offset(lv, (S3488C2*), 0, "S3488C1");
    check_base_class_offset(lv, (S3488C5*), ABISELECT(16,12), "S3488C1");
    check_base_class_offset(lv, (S19894C6_nt*), ABISELECT(32,20), "S3488C1");
    test_class_info(&lv, &cd_S3488C1);
    dp->~S3488C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3488C1(Test_S3488C1, "S3488C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3488C1C1Ev();
extern void _ZN7S3488C1D1Ev();
Name_Map name_map_S3488C1[] = {
  NSPAIR(_ZN7S3488C1C1Ev),
  NSPAIR(_ZN7S3488C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S3488C3_nt;
extern VTBL_ENTRY _ZTI10S3488C3_nt[];
extern  VTBL_ENTRY _ZTV10S3488C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S3488C3_nt[];
extern Class_Descriptor cd_S3488C2;
extern VTBL_ENTRY _ZTI7S3488C2[];
extern  VTBL_ENTRY _ZTV7S3488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3488C2[];
extern Class_Descriptor cd_S3488C5;
extern VTBL_ENTRY _ZTI7S3488C5[];
extern  VTBL_ENTRY _ZTV7S3488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3488C5[];
extern Class_Descriptor cd_S19894C6_nt;
extern VTBL_ENTRY _ZTI11S19894C6_nt[];
static Base_Class bases_S3488C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3488C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3488C2,    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_S3488C5,    ABISELECT(16,12), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C6_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3488C1[];
static  VTBL_ENTRY vtc_S3488C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3488C1[0]),
  ABISELECT(24,12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3488C1[0]),
};
extern VTBL_ENTRY _ZTV7S3488C1[];
static  VTBL_ENTRY _tg__ZTV7S3488C2__7S3488C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3488C2[0]),
};
static  VTBL_ENTRY _tg__ZTV10S3488C3_nt7S3488C2__7S3488C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI10S3488C3_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3488C5__7S3488C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3488C5[0]),
};
static  VTT_ENTRY vtt_S3488C1[] = {
  {&(_ZTV7S3488C1[3]),  3,6},
  {&(_tg__ZTV7S3488C2__7S3488C1[3]),  3,3},
  {&(_tg__ZTV10S3488C3_nt7S3488C2__7S3488C1[3]),  3,3},
  {&(_tg__ZTV7S3488C5__7S3488C1[3]),  3,3},
  {&(_ZTV7S3488C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S3488C1[];
extern  VTBL_ENTRY _ZTV7S3488C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3488C1[];
Class_Descriptor cd_S3488C1 = {  "S3488C1", // class name
  bases_S3488C1, 5,
  &(vtc_S3488C1[0]), // expected_vtbl_contents
  &(vtt_S3488C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3488C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3488C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3488C1),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  S16532C1  {
  int s16532c1f0;
  char s16532c1f1;
  ::S3223C4_nt s16532c1f2;
  ::S3223C4_nt s16532c1f3;
  ::S3223C4_nt s16532c1f4;
  ::S3223C4_nt s16532c1f5;
  int s16532c1f6[3];
  ::S3223C4_nt s16532c1f7;
  int s16532c1f8;
  void  mf16532c1(); // _ZN8S16532C19mf16532c1Ev
};
//SIG(1 S16532C1) C1{ m Fi Fc FC2{ m Fi[2]} FC2 FC2 FC2 Fi[3] FC2 Fi}


void  S16532C1 ::mf16532c1(){}

static void Test_S16532C1()
{
  {
    init_simple_test("S16532C1");
    S16532C1 lv;
    check2(sizeof(lv), 64, "sizeof(S16532C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16532C1)");
    check_field_offset(lv, s16532c1f0, 0, "S16532C1.s16532c1f0");
    check_field_offset(lv, s16532c1f1, 4, "S16532C1.s16532c1f1");
    check_field_offset(lv, s16532c1f2, 8, "S16532C1.s16532c1f2");
    check_field_offset(lv, s16532c1f3, 16, "S16532C1.s16532c1f3");
    check_field_offset(lv, s16532c1f4, 24, "S16532C1.s16532c1f4");
    check_field_offset(lv, s16532c1f5, 32, "S16532C1.s16532c1f5");
    check_field_offset(lv, s16532c1f6, 40, "S16532C1.s16532c1f6");
    check_field_offset(lv, s16532c1f7, 52, "S16532C1.s16532c1f7");
    check_field_offset(lv, s16532c1f8, 60, "S16532C1.s16532c1f8");
  }
}
static Arrange_To_Call_Me vS16532C1(Test_S16532C1, "S16532C1", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14014C1  {
  __tsi64 s14014c1f0[4];
  long s14014c1f1[6];
  __tsi64 s14014c1f2[2];
  long s14014c1f3[2];
  __tsi64 s14014c1f4[2];
  long s14014c1f5;
  __tsi64 s14014c1f6[2];
  void *s14014c1f7[2];
};
//SIG(1 S14014C1) C1{ FL[4] Fl[6] FL[2] Fl[2] FL[2] Fl FL[2] Fp[2]}



static void Test_S14014C1()
{
  {
    init_simple_test("S14014C1");
    S14014C1 lv;
    check2(sizeof(lv), ABISELECT(168,124), "sizeof(S14014C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14014C1)");
    check_field_offset(lv, s14014c1f0, 0, "S14014C1.s14014c1f0");
    check_field_offset(lv, s14014c1f1, 32, "S14014C1.s14014c1f1");
    check_field_offset(lv, s14014c1f2, ABISELECT(80,56), "S14014C1.s14014c1f2");
    check_field_offset(lv, s14014c1f3, ABISELECT(96,72), "S14014C1.s14014c1f3");
    check_field_offset(lv, s14014c1f4, ABISELECT(112,80), "S14014C1.s14014c1f4");
    check_field_offset(lv, s14014c1f5, ABISELECT(128,96), "S14014C1.s14014c1f5");
    check_field_offset(lv, s14014c1f6, ABISELECT(136,100), "S14014C1.s14014c1f6");
    check_field_offset(lv, s14014c1f7, ABISELECT(152,116), "S14014C1.s14014c1f7");
  }
}
static Arrange_To_Call_Me vS14014C1(Test_S14014C1, "S14014C1", ABISELECT(168,124));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2466C4_nt  {
};
//SIG(-1 S2466C4_nt) C1{}



//skip512 S2466C4_nt

#else // __cplusplus

Class_Descriptor cd_S2466C4_nt = {  "S2466C4_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  S2466C3_nt  : S2466C4_nt {
};
//SIG(-1 S2466C3_nt) C1{ BC2{}}



//skip512 S2466C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S2466C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2466C3_nt = {  "S2466C3_nt", // class name
  bases_S2466C3_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2466C2_nt  : S2466C3_nt {
};
//SIG(-1 S2466C2_nt) C1{ BC2{ BC3{}}}



//skip512 S2466C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2466C3_nt;
static Base_Class bases_S2466C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2466C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2466C2_nt = {  "S2466C2_nt", // class name
  bases_S2466C2_nt, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2466C8  : S2466C4_nt {
};
//SIG(-1 S2466C8) C1{ BC2{}}



static void Test_S2466C8()
{
  extern Class_Descriptor cd_S2466C8;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2466C8, buf);
    S2466C8 &lv = *(new (buf) S2466C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2466C8)");
    check2(__alignof__(lv), 1, "__alignof__(S2466C8)");
    check_base_class_offset(lv, (S2466C4_nt*), 0, "S2466C8");
    test_class_info(&lv, &cd_S2466C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2466C8(Test_S2466C8, "S2466C8", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S2466C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2466C8 = {  "S2466C8", // class name
  bases_S2466C8, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2466C7  : S2466C8 {
};
//SIG(-1 S2466C7) C1{ BC2{ BC3{}}}



static void Test_S2466C7()
{
  extern Class_Descriptor cd_S2466C7;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2466C7, buf);
    S2466C7 &lv = *(new (buf) S2466C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2466C7)");
    check2(__alignof__(lv), 1, "__alignof__(S2466C7)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2466C8*), 0, "S2466C7");
    check_base_class_offset(lv, (S2466C8*), 0, "S2466C7");
    test_class_info(&lv, &cd_S2466C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2466C7(Test_S2466C7, "S2466C7", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2466C8;
static Base_Class bases_S2466C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2466C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2466C7 = {  "S2466C7", // class name
  bases_S2466C7, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2466C6_nt  : S2466C7 {
  void *s2466c6f0;
};
//SIG(-1 S2466C6_nt) C1{ BC2{ BC3{ BC4{}}} Fp}



//skip512 S2466C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2466C8;
extern Class_Descriptor cd_S2466C7;
static Base_Class bases_S2466C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2466C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2466C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2466C6_nt = {  "S2466C6_nt", // class name
  bases_S2466C6_nt, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2466C5_nt  : S2466C6_nt {
};
//SIG(-1 S2466C5_nt) C1{ BC2{ BC3{ BC4{ BC5{}}} Fp}}



//skip512 S2466C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2466C8;
extern Class_Descriptor cd_S2466C7;
extern Class_Descriptor cd_S2466C6_nt;
static Base_Class bases_S2466C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2466C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2466C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2466C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2466C1  : S2466C2_nt {
  void *s2466c1f0;
  ::S2466C5_nt s2466c1f1;
};
//SIG(1 S2466C1) C1{ BC2{ BC3{ BC4{}}} Fp FC5{ BC6{ BC7{ BC8{ BC4}} Fp}}}



static void Test_S2466C1()
{
  extern Class_Descriptor cd_S2466C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2466C1, buf);
    S2466C1 &lv = *(new (buf) S2466C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2466C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2466C1)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2466C3_nt*)(S2466C2_nt*), 0, "S2466C1");
    check_base_class_offset(lv, (S2466C3_nt*)(S2466C2_nt*), 0, "S2466C1");
    check_base_class_offset(lv, (S2466C2_nt*), 0, "S2466C1");
    check_field_offset(lv, s2466c1f0, 0, "S2466C1.s2466c1f0");
    check_field_offset(lv, s2466c1f1, ABISELECT(8,4), "S2466C1.s2466c1f1");
    test_class_info(&lv, &cd_S2466C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2466C1(Test_S2466C1, "S2466C1", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2466C3_nt;
extern Class_Descriptor cd_S2466C2_nt;
static Base_Class bases_S2466C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2466C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2466C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2466C1 = {  "S2466C1", // class name
  bases_S2466C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6951C2_nt  {
  virtual void  v5(); // _ZN10S6951C2_nt2v5Ev
  virtual void  v6(); // _ZN10S6951C2_nt2v6Ev
  virtual void  v7(); // _ZN10S6951C2_nt2v7Ev
  ~S6951C2_nt(); // tgen
  S6951C2_nt(); // tgen
};
//SIG(-1 S6951C2_nt) C1{ v1 v2 v3}


void  S6951C2_nt ::v5(){vfunc_called(this, "_ZN10S6951C2_nt2v5Ev");}
void  S6951C2_nt ::v6(){vfunc_called(this, "_ZN10S6951C2_nt2v6Ev");}
void  S6951C2_nt ::v7(){vfunc_called(this, "_ZN10S6951C2_nt2v7Ev");}
S6951C2_nt ::~S6951C2_nt(){ note_dtor("S6951C2_nt", this);} // tgen
S6951C2_nt ::S6951C2_nt(){ note_ctor("S6951C2_nt", this);} // tgen

//skip512 S6951C2_nt

#else // __cplusplus

extern void _ZN10S6951C2_ntC1Ev();
extern void _ZN10S6951C2_ntD1Ev();
Name_Map name_map_S6951C2_nt[] = {
  NSPAIR(_ZN10S6951C2_ntC1Ev),
  NSPAIR(_ZN10S6951C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6951C2_nt[];
extern void _ZN10S6951C2_nt2v5Ev();
extern void _ZN10S6951C2_nt2v6Ev();
extern void _ZN10S6951C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S6951C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6951C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6951C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6951C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6951C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S6951C2_nt[];
VTBL_ENTRY *P__ZTI10S6951C2_nt = _ZTI10S6951C2_nt; 
extern  VTBL_ENTRY _ZTV10S6951C2_nt[];
Class_Descriptor cd_S6951C2_nt = {  "S6951C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6951C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6951C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6951C2_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  S6951C1  : S6951C2_nt {
  int s6951c1f0;
  char s6951c1f1[7];
  long double s6951c1f2;
  short s6951c1f3:16;
  virtual void  v1(); // _ZN7S6951C12v1Ev
  virtual void  v2(); // _ZN7S6951C12v2Ev
  virtual void  v3(); // _ZN7S6951C12v3Ev
  virtual void  v4(); // _ZN7S6951C12v4Ev
  ~S6951C1(); // tgen
  S6951C1(); // tgen
};
//SIG(1 S6951C1) C1{ BC2{ v5 v6 v7} v1 v2 v3 v4 Fi Fc[7] FD Fs:16}


void  S6951C1 ::v1(){vfunc_called(this, "_ZN7S6951C12v1Ev");}
void  S6951C1 ::v2(){vfunc_called(this, "_ZN7S6951C12v2Ev");}
void  S6951C1 ::v3(){vfunc_called(this, "_ZN7S6951C12v3Ev");}
void  S6951C1 ::v4(){vfunc_called(this, "_ZN7S6951C12v4Ev");}
S6951C1 ::~S6951C1(){ note_dtor("S6951C1", this);} // tgen
S6951C1 ::S6951C1(){ note_ctor("S6951C1", this);} // tgen

static void Test_S6951C1()
{
  extern Class_Descriptor cd_S6951C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S6951C1, buf);
    S6951C1 *dp, &lv = *(dp=new (buf) S6951C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S6951C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6951C1)");
    check_base_class_offset(lv, (S6951C2_nt*), 0, "S6951C1");
    check_field_offset(lv, s6951c1f0, ABISELECT(8,4), "S6951C1.s6951c1f0");
    check_field_offset(lv, s6951c1f1, ABISELECT(12,8), "S6951C1.s6951c1f1");
    check_field_offset(lv, s6951c1f2, ABISELECT(32,16), "S6951C1.s6951c1f2");
    set_bf_and_test(lv, s6951c1f3, ABISELECT(48,28), 0, 16, 1, "S6951C1");
    set_bf_and_test(lv, s6951c1f3, ABISELECT(48,28), 0, 16, hide_sll(1LL<<15), "S6951C1");
    test_class_info(&lv, &cd_S6951C1);
    dp->~S6951C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6951C1(Test_S6951C1, "S6951C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S6951C1C1Ev();
extern void _ZN7S6951C1D1Ev();
Name_Map name_map_S6951C1[] = {
  NSPAIR(_ZN7S6951C1C1Ev),
  NSPAIR(_ZN7S6951C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6951C2_nt;
extern VTBL_ENTRY _ZTI10S6951C2_nt[];
extern  VTBL_ENTRY _ZTV10S6951C2_nt[];
static Base_Class bases_S6951C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6951C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6951C1[];
extern void _ZN10S6951C2_nt2v5Ev();
extern void _ZN10S6951C2_nt2v6Ev();
extern void _ZN10S6951C2_nt2v7Ev();
extern void _ZN7S6951C12v1Ev();
extern void _ZN7S6951C12v2Ev();
extern void _ZN7S6951C12v3Ev();
extern void _ZN7S6951C12v4Ev();
static  VTBL_ENTRY vtc_S6951C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6951C1[0]),
  (VTBL_ENTRY)&_ZN10S6951C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6951C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6951C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S6951C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6951C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6951C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6951C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6951C1[];
extern  VTBL_ENTRY _ZTV7S6951C1[];
Class_Descriptor cd_S6951C1 = {  "S6951C1", // class name
  bases_S6951C1, 1,
  &(vtc_S6951C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S6951C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6951C1),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  S13147C2_nt  {
  int s13147c2f0[2];
};
//SIG(-1 S13147C2_nt) C1{ Fi[2]}



//skip512 S13147C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13147C1  {
  int s13147c1f0[2];
  long s13147c1f1;
  ::S13147C2_nt s13147c1f2;
  int s13147c1f3[2];
  void *s13147c1f4;
  int s13147c1f5;
  void *s13147c1f6;
  int s13147c1f7;
  void *s13147c1f8;
  int s13147c1f9;
};
//SIG(1 S13147C1) C1{ Fi[2] Fl FC2{ Fi[2]} Fi[2] Fp Fi Fp Fi Fp Fi}



static void Test_S13147C1()
{
  {
    init_simple_test("S13147C1");
    S13147C1 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S13147C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13147C1)");
    check_field_offset(lv, s13147c1f0, 0, "S13147C1.s13147c1f0");
    check_field_offset(lv, s13147c1f1, 8, "S13147C1.s13147c1f1");
    check_field_offset(lv, s13147c1f2, ABISELECT(16,12), "S13147C1.s13147c1f2");
    check_field_offset(lv, s13147c1f3, ABISELECT(24,20), "S13147C1.s13147c1f3");
    check_field_offset(lv, s13147c1f4, ABISELECT(32,28), "S13147C1.s13147c1f4");
    check_field_offset(lv, s13147c1f5, ABISELECT(40,32), "S13147C1.s13147c1f5");
    check_field_offset(lv, s13147c1f6, ABISELECT(48,36), "S13147C1.s13147c1f6");
    check_field_offset(lv, s13147c1f7, ABISELECT(56,40), "S13147C1.s13147c1f7");
    check_field_offset(lv, s13147c1f8, ABISELECT(64,44), "S13147C1.s13147c1f8");
    check_field_offset(lv, s13147c1f9, ABISELECT(72,48), "S13147C1.s13147c1f9");
  }
}
static Arrange_To_Call_Me vS13147C1(Test_S13147C1, "S13147C1", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18200C2  {
  ::S9526C11_nt s18200c2f0;
  void *s18200c2f1;
  void  mf18200c2(); // _ZN8S18200C29mf18200c2Ev
};
//SIG(-1 S18200C2) C1{ m FC2{ m Fp Fi FC3{ m}} Fp}


void  S18200C2 ::mf18200c2(){}

static void Test_S18200C2()
{
  {
    init_simple_test("S18200C2");
    S18200C2 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18200C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18200C2)");
    check_field_offset(lv, s18200c2f0, 0, "S18200C2.s18200c2f0");
    check_field_offset(lv, s18200c2f1, ABISELECT(16,12), "S18200C2.s18200c2f1");
  }
}
static Arrange_To_Call_Me vS18200C2(Test_S18200C2, "S18200C2", ABISELECT(24,16));

#else // __cplusplus

Class_Descriptor cd_S18200C2 = {  "S18200C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18200C1  {
  void *s18200c1f0[3];
  ::S18200C2 s18200c1f1;
  char s18200c1f2[2];
  void  mf18200c1(); // _ZN8S18200C19mf18200c1Ev
};
//SIG(1 S18200C1) C1{ m Fp[3] FC2{ m FC3{ m Fp Fi FC4{ m}} Fp} Fc[2]}


void  S18200C1 ::mf18200c1(){}

static void Test_S18200C1()
{
  {
    init_simple_test("S18200C1");
    S18200C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S18200C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18200C1)");
    check_field_offset(lv, s18200c1f0, 0, "S18200C1.s18200c1f0");
    check_field_offset(lv, s18200c1f1, ABISELECT(24,12), "S18200C1.s18200c1f1");
    check_field_offset(lv, s18200c1f2, ABISELECT(48,28), "S18200C1.s18200c1f2");
  }
}
static Arrange_To_Call_Me vS18200C1(Test_S18200C1, "S18200C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21360C2  {
  int s21360c2f0;
  ::S11830C3_nt s21360c2f1;
  int s21360c2f2;
  void *s21360c2f3;
  int s21360c2f4;
  void *s21360c2f5;
};
//SIG(1 S21360C2) C1{ Fi FC2{ Fp Fi[2]} Fi Fp Fi Fp}



static void Test_S21360C2()
{
  {
    init_simple_test("S21360C2");
    S21360C2 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21360C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21360C2)");
    check_field_offset(lv, s21360c2f0, 0, "S21360C2.s21360c2f0");
    check_field_offset(lv, s21360c2f1, ABISELECT(8,4), "S21360C2.s21360c2f1");
    check_field_offset(lv, s21360c2f2, ABISELECT(24,16), "S21360C2.s21360c2f2");
    check_field_offset(lv, s21360c2f3, ABISELECT(32,20), "S21360C2.s21360c2f3");
    check_field_offset(lv, s21360c2f4, ABISELECT(40,24), "S21360C2.s21360c2f4");
    check_field_offset(lv, s21360c2f5, ABISELECT(48,28), "S21360C2.s21360c2f5");
  }
}
static Arrange_To_Call_Me vS21360C2(Test_S21360C2, "S21360C2", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21360C1  {
  ::S21360C2 s21360c1f0[5];
  void  mf21360c1(); // _ZN8S21360C19mf21360c1Ev
  virtual  ~S21360C1(); // _ZN8S21360C1D1Ev
  S21360C1(); // tgen
};
//SIG(1 S21360C1) C1{ vd m FC2{ Fi FC3{ Fp Fi[2]} Fi Fp Fi Fp}[5]}


void  S21360C1 ::mf21360c1(){}
 S21360C1 ::~S21360C1(){ note_dtor("S21360C1", this);}
S21360C1 ::S21360C1(){ note_ctor("S21360C1", this);} // tgen

static void Test_S21360C1()
{
  extern Class_Descriptor cd_S21360C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,42)];
    init_test(&cd_S21360C1, buf);
    S21360C1 *dp, &lv = *(dp=new (buf) S21360C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,164), "sizeof(S21360C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21360C1)");
    check_field_offset(lv, s21360c1f0, ABISELECT(8,4), "S21360C1.s21360c1f0");
    test_class_info(&lv, &cd_S21360C1);
    dp->~S21360C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21360C1(Test_S21360C1, "S21360C1", ABISELECT(288,164));

#else // __cplusplus

extern void _ZN8S21360C1C1Ev();
extern void _ZN8S21360C1D1Ev();
Name_Map name_map_S21360C1[] = {
  NSPAIR(_ZN8S21360C1C1Ev),
  NSPAIR(_ZN8S21360C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21360C1[];
extern void _ZN8S21360C1D1Ev();
extern void _ZN8S21360C1D0Ev();
static  VTBL_ENTRY vtc_S21360C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21360C1[0]),
  (VTBL_ENTRY)&_ZN8S21360C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21360C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21360C1[];
extern  VTBL_ENTRY _ZTV8S21360C1[];
Class_Descriptor cd_S21360C1 = {  "S21360C1", // class name
  0,0,//no base classes
  &(vtc_S21360C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,164), // object size
  NSPAIRA(_ZTI8S21360C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21360C1),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  S14299C1  {
  void *s14299c1f0;
  int s14299c1f1[2];
  void *s14299c1f2;
  int s14299c1f3[2];
  char s14299c1f4[24];
  int s14299c1f5;
  void *s14299c1f6;
  int s14299c1f7;
  __tsi64 s14299c1f8;
  int s14299c1f9;
};
//SIG(1 S14299C1) C1{ Fp Fi[2] Fp Fi[2] Fc[24] Fi Fp Fi FL Fi}



static void Test_S14299C1()
{
  {
    init_simple_test("S14299C1");
    S14299C1 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S14299C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14299C1)");
    check_field_offset(lv, s14299c1f0, 0, "S14299C1.s14299c1f0");
    check_field_offset(lv, s14299c1f1, ABISELECT(8,4), "S14299C1.s14299c1f1");
    check_field_offset(lv, s14299c1f2, ABISELECT(16,12), "S14299C1.s14299c1f2");
    check_field_offset(lv, s14299c1f3, ABISELECT(24,16), "S14299C1.s14299c1f3");
    check_field_offset(lv, s14299c1f4, ABISELECT(32,24), "S14299C1.s14299c1f4");
    check_field_offset(lv, s14299c1f5, ABISELECT(56,48), "S14299C1.s14299c1f5");
    check_field_offset(lv, s14299c1f6, ABISELECT(64,52), "S14299C1.s14299c1f6");
    check_field_offset(lv, s14299c1f7, ABISELECT(72,56), "S14299C1.s14299c1f7");
    check_field_offset(lv, s14299c1f8, ABISELECT(80,60), "S14299C1.s14299c1f8");
    check_field_offset(lv, s14299c1f9, ABISELECT(88,68), "S14299C1.s14299c1f9");
  }
}
static Arrange_To_Call_Me vS14299C1(Test_S14299C1, "S14299C1", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9748C2  {
  void *s9748c2f0[3];
  char s9748c2f1;
  virtual  ~S9748C2(); // _ZN7S9748C2D1Ev
  virtual void  v4(); // _ZN7S9748C22v4Ev
  virtual void  v5(); // _ZN7S9748C22v5Ev
  virtual void  v6(); // _ZN7S9748C22v6Ev
  S9748C2(); // tgen
};
//SIG(-1 S9748C2) C1{ vd v1 v2 v3 Fp[3] Fc}


 S9748C2 ::~S9748C2(){ note_dtor("S9748C2", this);}
void  S9748C2 ::v4(){vfunc_called(this, "_ZN7S9748C22v4Ev");}
void  S9748C2 ::v5(){vfunc_called(this, "_ZN7S9748C22v5Ev");}
void  S9748C2 ::v6(){vfunc_called(this, "_ZN7S9748C22v6Ev");}
S9748C2 ::S9748C2(){ note_ctor("S9748C2", this);} // tgen

static void Test_S9748C2()
{
  extern Class_Descriptor cd_S9748C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S9748C2, buf);
    S9748C2 *dp, &lv = *(dp=new (buf) S9748C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S9748C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9748C2)");
    check_field_offset(lv, s9748c2f0, ABISELECT(8,4), "S9748C2.s9748c2f0");
    check_field_offset(lv, s9748c2f1, ABISELECT(32,16), "S9748C2.s9748c2f1");
    test_class_info(&lv, &cd_S9748C2);
    dp->~S9748C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9748C2(Test_S9748C2, "S9748C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S9748C2C1Ev();
extern void _ZN7S9748C2D1Ev();
Name_Map name_map_S9748C2[] = {
  NSPAIR(_ZN7S9748C2C1Ev),
  NSPAIR(_ZN7S9748C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9748C2[];
extern void _ZN7S9748C2D1Ev();
extern void _ZN7S9748C2D0Ev();
extern void _ZN7S9748C22v4Ev();
extern void _ZN7S9748C22v5Ev();
extern void _ZN7S9748C22v6Ev();
static  VTBL_ENTRY vtc_S9748C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9748C2[0]),
  (VTBL_ENTRY)&_ZN7S9748C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9748C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9748C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9748C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9748C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9748C2[];
extern  VTBL_ENTRY _ZTV7S9748C2[];
Class_Descriptor cd_S9748C2 = {  "S9748C2", // class name
  0,0,//no base classes
  &(vtc_S9748C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S9748C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9748C2),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  S9748C1  : S9748C2 {
  int s9748c1f0;
  virtual  ~S9748C1(); // _ZN7S9748C1D1Ev
  virtual void  v1(); // _ZN7S9748C12v1Ev
  virtual void  v2(); // _ZN7S9748C12v2Ev
  virtual void  v3(); // _ZN7S9748C12v3Ev
  S9748C1(); // tgen
};
//SIG(1 S9748C1) C1{ BC2{ vd v4 v5 v6 Fp[3] Fc} vd v1 v2 v3 Fi}


 S9748C1 ::~S9748C1(){ note_dtor("S9748C1", this);}
void  S9748C1 ::v1(){vfunc_called(this, "_ZN7S9748C12v1Ev");}
void  S9748C1 ::v2(){vfunc_called(this, "_ZN7S9748C12v2Ev");}
void  S9748C1 ::v3(){vfunc_called(this, "_ZN7S9748C12v3Ev");}
S9748C1 ::S9748C1(){ note_ctor("S9748C1", this);} // tgen

static void Test_S9748C1()
{
  extern Class_Descriptor cd_S9748C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S9748C1, buf);
    S9748C1 *dp, &lv = *(dp=new (buf) S9748C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S9748C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9748C1)");
    check_base_class_offset(lv, (S9748C2*), 0, "S9748C1");
    check_field_offset(lv, s9748c1f0, ABISELECT(36,20), "S9748C1.s9748c1f0");
    test_class_info(&lv, &cd_S9748C1);
    dp->~S9748C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9748C1(Test_S9748C1, "S9748C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S9748C1C1Ev();
extern void _ZN7S9748C1D1Ev();
Name_Map name_map_S9748C1[] = {
  NSPAIR(_ZN7S9748C1C1Ev),
  NSPAIR(_ZN7S9748C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9748C2;
extern VTBL_ENTRY _ZTI7S9748C2[];
extern  VTBL_ENTRY _ZTV7S9748C2[];
static Base_Class bases_S9748C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9748C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9748C1[];
extern void _ZN7S9748C1D1Ev();
extern void _ZN7S9748C1D0Ev();
extern void _ZN7S9748C22v4Ev();
extern void _ZN7S9748C22v5Ev();
extern void _ZN7S9748C22v6Ev();
extern void _ZN7S9748C12v1Ev();
extern void _ZN7S9748C12v2Ev();
extern void _ZN7S9748C12v3Ev();
static  VTBL_ENTRY vtc_S9748C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9748C1[0]),
  (VTBL_ENTRY)&_ZN7S9748C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9748C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9748C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9748C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9748C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9748C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9748C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9748C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9748C1[];
extern  VTBL_ENTRY _ZTV7S9748C1[];
Class_Descriptor cd_S9748C1 = {  "S9748C1", // class name
  bases_S9748C1, 1,
  &(vtc_S9748C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S9748C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9748C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18436C1  {
  short s18436c1f0[2];
  int s18436c1f1[2];
  short s18436c1f2[4];
  int s18436c1f3;
  char s18436c1f4[16];
  int s18436c1f5;
  char s18436c1f6[4];
  void  mf18436c1(); // _ZN8S18436C19mf18436c1Ev
};
//SIG(1 S18436C1) C1{ m Fs[2] Fi[2] Fs[4] Fi Fc[16] Fi Fc[4]}


void  S18436C1 ::mf18436c1(){}

static void Test_S18436C1()
{
  {
    init_simple_test("S18436C1");
    S18436C1 lv;
    check2(sizeof(lv), 48, "sizeof(S18436C1)");
    check2(__alignof__(lv), 4, "__alignof__(S18436C1)");
    check_field_offset(lv, s18436c1f0, 0, "S18436C1.s18436c1f0");
    check_field_offset(lv, s18436c1f1, 4, "S18436C1.s18436c1f1");
    check_field_offset(lv, s18436c1f2, 12, "S18436C1.s18436c1f2");
    check_field_offset(lv, s18436c1f3, 20, "S18436C1.s18436c1f3");
    check_field_offset(lv, s18436c1f4, 24, "S18436C1.s18436c1f4");
    check_field_offset(lv, s18436c1f5, 40, "S18436C1.s18436c1f5");
    check_field_offset(lv, s18436c1f6, 44, "S18436C1.s18436c1f6");
  }
}
static Arrange_To_Call_Me vS18436C1(Test_S18436C1, "S18436C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21808C1  {
  void *s21808c1f0[2];
  int s21808c1f1[2];
  void *s21808c1f2;
  ::S3619C13_nt s21808c1f3;
  void  mf21808c1(); // _ZN8S21808C19mf21808c1Ev
  virtual  ~S21808C1(); // _ZN8S21808C1D1Ev
  S21808C1(); // tgen
};
//SIG(1 S21808C1) C1{ vd m Fp[2] Fi[2] Fp FC2{ m FC3{ FL[4]}}}


void  S21808C1 ::mf21808c1(){}
 S21808C1 ::~S21808C1(){ note_dtor("S21808C1", this);}
S21808C1 ::S21808C1(){ note_ctor("S21808C1", this);} // tgen

static void Test_S21808C1()
{
  extern Class_Descriptor cd_S21808C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S21808C1, buf);
    S21808C1 *dp, &lv = *(dp=new (buf) S21808C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S21808C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21808C1)");
    check_field_offset(lv, s21808c1f0, ABISELECT(8,4), "S21808C1.s21808c1f0");
    check_field_offset(lv, s21808c1f1, ABISELECT(24,12), "S21808C1.s21808c1f1");
    check_field_offset(lv, s21808c1f2, ABISELECT(32,20), "S21808C1.s21808c1f2");
    check_field_offset(lv, s21808c1f3, ABISELECT(40,24), "S21808C1.s21808c1f3");
    test_class_info(&lv, &cd_S21808C1);
    dp->~S21808C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21808C1(Test_S21808C1, "S21808C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S21808C1C1Ev();
extern void _ZN8S21808C1D1Ev();
Name_Map name_map_S21808C1[] = {
  NSPAIR(_ZN8S21808C1C1Ev),
  NSPAIR(_ZN8S21808C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21808C1[];
extern void _ZN8S21808C1D1Ev();
extern void _ZN8S21808C1D0Ev();
static  VTBL_ENTRY vtc_S21808C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21808C1[0]),
  (VTBL_ENTRY)&_ZN8S21808C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21808C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21808C1[];
extern  VTBL_ENTRY _ZTV8S21808C1[];
Class_Descriptor cd_S21808C1 = {  "S21808C1", // class name
  0,0,//no base classes
  &(vtc_S21808C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S21808C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21808C1),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  S18309C1  {
  void *s18309c1f0[3];
  int s18309c1f1;
  ::S15125C2_nt s18309c1f2;
  __tsi64 s18309c1f3;
  int s18309c1f4;
  void *s18309c1f5[2];
  char s18309c1f6;
  void  mf18309c1(); // _ZN8S18309C19mf18309c1Ev
};
//SIG(1 S18309C1) C1{ m Fp[3] Fi FC2{ m Fp[2]} FL Fi Fp[2] Fc}


void  S18309C1 ::mf18309c1(){}

static void Test_S18309C1()
{
  {
    init_simple_test("S18309C1");
    S18309C1 lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S18309C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18309C1)");
    check_field_offset(lv, s18309c1f0, 0, "S18309C1.s18309c1f0");
    check_field_offset(lv, s18309c1f1, ABISELECT(24,12), "S18309C1.s18309c1f1");
    check_field_offset(lv, s18309c1f2, ABISELECT(32,16), "S18309C1.s18309c1f2");
    check_field_offset(lv, s18309c1f3, ABISELECT(48,24), "S18309C1.s18309c1f3");
    check_field_offset(lv, s18309c1f4, ABISELECT(56,32), "S18309C1.s18309c1f4");
    check_field_offset(lv, s18309c1f5, ABISELECT(64,36), "S18309C1.s18309c1f5");
    check_field_offset(lv, s18309c1f6, ABISELECT(80,44), "S18309C1.s18309c1f6");
  }
}
static Arrange_To_Call_Me vS18309C1(Test_S18309C1, "S18309C1", ABISELECT(88,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18218C2  {
  int s18218c2f0;
  ::S11830C3_nt s18218c2f1;
  void  mf18218c2(); // _ZN8S18218C29mf18218c2Ev
};
//SIG(-1 S18218C2) C1{ m Fi FC2{ Fp Fi[2]}}


void  S18218C2 ::mf18218c2(){}

static void Test_S18218C2()
{
  {
    init_simple_test("S18218C2");
    S18218C2 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18218C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18218C2)");
    check_field_offset(lv, s18218c2f0, 0, "S18218C2.s18218c2f0");
    check_field_offset(lv, s18218c2f1, ABISELECT(8,4), "S18218C2.s18218c2f1");
  }
}
static Arrange_To_Call_Me vS18218C2(Test_S18218C2, "S18218C2", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18218C1  {
  void *s18218c1f0[3];
  ::S18218C2 s18218c1f1;
  char s18218c1f2[2];
  void  mf18218c1(); // _ZN8S18218C19mf18218c1Ev
};
//SIG(1 S18218C1) C1{ m Fp[3] FC2{ m Fi FC3{ Fp Fi[2]}} Fc[2]}


void  S18218C1 ::mf18218c1(){}

static void Test_S18218C1()
{
  {
    init_simple_test("S18218C1");
    S18218C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S18218C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18218C1)");
    check_field_offset(lv, s18218c1f0, 0, "S18218C1.s18218c1f0");
    check_field_offset(lv, s18218c1f1, ABISELECT(24,12), "S18218C1.s18218c1f1");
    check_field_offset(lv, s18218c1f2, ABISELECT(48,28), "S18218C1.s18218c1f2");
  }
}
static Arrange_To_Call_Me vS18218C1(Test_S18218C1, "S18218C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7117C2  {
  long s7117c2f0;
  virtual  ~S7117C2(); // _ZN7S7117C2D1Ev
  virtual void  v7(); // _ZN7S7117C22v7Ev
  virtual void  v8(); // _ZN7S7117C22v8Ev
  S7117C2(); // tgen
};
//SIG(-1 S7117C2) C1{ vd v1 v2 Fl}


 S7117C2 ::~S7117C2(){ note_dtor("S7117C2", this);}
void  S7117C2 ::v7(){vfunc_called(this, "_ZN7S7117C22v7Ev");}
void  S7117C2 ::v8(){vfunc_called(this, "_ZN7S7117C22v8Ev");}
S7117C2 ::S7117C2(){ note_ctor("S7117C2", this);} // tgen

static void Test_S7117C2()
{
  extern Class_Descriptor cd_S7117C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7117C2, buf);
    S7117C2 *dp, &lv = *(dp=new (buf) S7117C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7117C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7117C2)");
    check_field_offset(lv, s7117c2f0, ABISELECT(8,4), "S7117C2.s7117c2f0");
    test_class_info(&lv, &cd_S7117C2);
    dp->~S7117C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7117C2(Test_S7117C2, "S7117C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7117C2C1Ev();
extern void _ZN7S7117C2D1Ev();
Name_Map name_map_S7117C2[] = {
  NSPAIR(_ZN7S7117C2C1Ev),
  NSPAIR(_ZN7S7117C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7117C2[];
extern void _ZN7S7117C2D1Ev();
extern void _ZN7S7117C2D0Ev();
extern void _ZN7S7117C22v7Ev();
extern void _ZN7S7117C22v8Ev();
static  VTBL_ENTRY vtc_S7117C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7117C2[0]),
  (VTBL_ENTRY)&_ZN7S7117C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7117C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7117C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7117C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S7117C2[];
extern  VTBL_ENTRY _ZTV7S7117C2[];
Class_Descriptor cd_S7117C2 = {  "S7117C2", // class name
  0,0,//no base classes
  &(vtc_S7117C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7117C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7117C2),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  S7117C1  : S7117C2 {
  virtual  ~S7117C1(); // _ZN7S7117C1D1Ev
  virtual void  v1(); // _ZN7S7117C12v1Ev
  virtual void  v2(); // _ZN7S7117C12v2Ev
  virtual void  v3(); // _ZN7S7117C12v3Ev
  virtual void  v4(); // _ZN7S7117C12v4Ev
  virtual void  v5(); // _ZN7S7117C12v5Ev
  virtual void  v6(); // _ZN7S7117C12v6Ev
  S7117C1(); // tgen
};
//SIG(1 S7117C1) C1{ BC2{ vd v7 v8 Fl} vd v1 v2 v3 v4 v5 v6}


 S7117C1 ::~S7117C1(){ note_dtor("S7117C1", this);}
void  S7117C1 ::v1(){vfunc_called(this, "_ZN7S7117C12v1Ev");}
void  S7117C1 ::v2(){vfunc_called(this, "_ZN7S7117C12v2Ev");}
void  S7117C1 ::v3(){vfunc_called(this, "_ZN7S7117C12v3Ev");}
void  S7117C1 ::v4(){vfunc_called(this, "_ZN7S7117C12v4Ev");}
void  S7117C1 ::v5(){vfunc_called(this, "_ZN7S7117C12v5Ev");}
void  S7117C1 ::v6(){vfunc_called(this, "_ZN7S7117C12v6Ev");}
S7117C1 ::S7117C1(){ note_ctor("S7117C1", this);} // tgen

static void Test_S7117C1()
{
  extern Class_Descriptor cd_S7117C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7117C1, buf);
    S7117C1 *dp, &lv = *(dp=new (buf) S7117C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7117C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7117C1)");
    check_base_class_offset(lv, (S7117C2*), 0, "S7117C1");
    test_class_info(&lv, &cd_S7117C1);
    dp->~S7117C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7117C1(Test_S7117C1, "S7117C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7117C1C1Ev();
extern void _ZN7S7117C1D1Ev();
Name_Map name_map_S7117C1[] = {
  NSPAIR(_ZN7S7117C1C1Ev),
  NSPAIR(_ZN7S7117C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7117C2;
extern VTBL_ENTRY _ZTI7S7117C2[];
extern  VTBL_ENTRY _ZTV7S7117C2[];
static Base_Class bases_S7117C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7117C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7117C1[];
extern void _ZN7S7117C1D1Ev();
extern void _ZN7S7117C1D0Ev();
extern void _ZN7S7117C22v7Ev();
extern void _ZN7S7117C22v8Ev();
extern void _ZN7S7117C12v1Ev();
extern void _ZN7S7117C12v2Ev();
extern void _ZN7S7117C12v3Ev();
extern void _ZN7S7117C12v4Ev();
extern void _ZN7S7117C12v5Ev();
extern void _ZN7S7117C12v6Ev();
static  VTBL_ENTRY vtc_S7117C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7117C1[0]),
  (VTBL_ENTRY)&_ZN7S7117C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7117C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7117C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7117C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7117C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7117C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7117C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7117C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7117C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7117C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7117C1[];
extern  VTBL_ENTRY _ZTV7S7117C1[];
Class_Descriptor cd_S7117C1 = {  "S7117C1", // class name
  bases_S7117C1, 1,
  &(vtc_S7117C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7117C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7117C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18276C2  {
  void *s18276c2f0;
  ::S11830C3_nt s18276c2f1;
  void  mf18276c2(); // _ZN8S18276C29mf18276c2Ev
};
//SIG(-1 S18276C2) C1{ m Fp FC2{ Fp Fi[2]}}


void  S18276C2 ::mf18276c2(){}

static void Test_S18276C2()
{
  {
    init_simple_test("S18276C2");
    S18276C2 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18276C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18276C2)");
    check_field_offset(lv, s18276c2f0, 0, "S18276C2.s18276c2f0");
    check_field_offset(lv, s18276c2f1, ABISELECT(8,4), "S18276C2.s18276c2f1");
  }
}
static Arrange_To_Call_Me vS18276C2(Test_S18276C2, "S18276C2", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18276C1  {
  void *s18276c1f0[3];
  ::S18276C2 s18276c1f1;
  char s18276c1f2[2];
  void  mf18276c1(); // _ZN8S18276C19mf18276c1Ev
};
//SIG(1 S18276C1) C1{ m Fp[3] FC2{ m Fp FC3{ Fp Fi[2]}} Fc[2]}


void  S18276C1 ::mf18276c1(){}

static void Test_S18276C1()
{
  {
    init_simple_test("S18276C1");
    S18276C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S18276C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18276C1)");
    check_field_offset(lv, s18276c1f0, 0, "S18276C1.s18276c1f0");
    check_field_offset(lv, s18276c1f1, ABISELECT(24,12), "S18276C1.s18276c1f1");
    check_field_offset(lv, s18276c1f2, ABISELECT(48,28), "S18276C1.s18276c1f2");
  }
}
static Arrange_To_Call_Me vS18276C1(Test_S18276C1, "S18276C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5459C2  : S2466C4_nt {
};
//SIG(-1 S5459C2) C1{ BC2{}}



static void Test_S5459C2()
{
  extern Class_Descriptor cd_S5459C2;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S5459C2, buf);
    S5459C2 &lv = *(new (buf) S5459C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S5459C2)");
    check2(__alignof__(lv), 1, "__alignof__(S5459C2)");
    check_base_class_offset(lv, (S2466C4_nt*), 0, "S5459C2");
    test_class_info(&lv, &cd_S5459C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5459C2(Test_S5459C2, "S5459C2", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S5459C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5459C2 = {  "S5459C2", // class name
  bases_S5459C2, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5459C1  : S5459C2 {
  ::S2466C5_nt s5459c1f0;
};
//SIG(1 S5459C1) C1{ BC2{ BC3{}} FC4{ BC5{ BC6{ BC7{ BC3}} Fp}}}



static void Test_S5459C1()
{
  extern Class_Descriptor cd_S5459C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S5459C1, buf);
    S5459C1 &lv = *(new (buf) S5459C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5459C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5459C1)");
    check_base_class_offset(lv, (S2466C4_nt*)(S5459C2*), 0, "S5459C1");
    check_base_class_offset(lv, (S5459C2*), 0, "S5459C1");
    check_field_offset(lv, s5459c1f0, ABISELECT(8,4), "S5459C1.s5459c1f0");
    test_class_info(&lv, &cd_S5459C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5459C1(Test_S5459C1, "S5459C1", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S5459C2;
static Base_Class bases_S5459C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5459C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5459C1 = {  "S5459C1", // class name
  bases_S5459C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20150C2  {
  __tsi64 s20150c2f0;
  int s20150c2f1;
  virtual  ~S20150C2(); // _ZN8S20150C2D1Ev
  virtual void  v3(); // _ZN8S20150C22v3Ev
  virtual void  v4(); // _ZN8S20150C22v4Ev
  virtual void  v5(); // _ZN8S20150C22v5Ev
  virtual void  v6(); // _ZN8S20150C22v6Ev
  S20150C2(); // tgen
};
//SIG(-1 S20150C2) C1{ vd v1 v2 v3 v4 FL Fi}


 S20150C2 ::~S20150C2(){ note_dtor("S20150C2", this);}
void  S20150C2 ::v3(){vfunc_called(this, "_ZN8S20150C22v3Ev");}
void  S20150C2 ::v4(){vfunc_called(this, "_ZN8S20150C22v4Ev");}
void  S20150C2 ::v5(){vfunc_called(this, "_ZN8S20150C22v5Ev");}
void  S20150C2 ::v6(){vfunc_called(this, "_ZN8S20150C22v6Ev");}
S20150C2 ::S20150C2(){ note_ctor("S20150C2", this);} // tgen

static void Test_S20150C2()
{
  extern Class_Descriptor cd_S20150C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20150C2, buf);
    S20150C2 *dp, &lv = *(dp=new (buf) S20150C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20150C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20150C2)");
    check_field_offset(lv, s20150c2f0, ABISELECT(8,4), "S20150C2.s20150c2f0");
    check_field_offset(lv, s20150c2f1, ABISELECT(16,12), "S20150C2.s20150c2f1");
    test_class_info(&lv, &cd_S20150C2);
    dp->~S20150C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20150C2(Test_S20150C2, "S20150C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20150C2C1Ev();
extern void _ZN8S20150C2D1Ev();
Name_Map name_map_S20150C2[] = {
  NSPAIR(_ZN8S20150C2C1Ev),
  NSPAIR(_ZN8S20150C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20150C2[];
extern void _ZN8S20150C2D1Ev();
extern void _ZN8S20150C2D0Ev();
extern void _ZN8S20150C22v3Ev();
extern void _ZN8S20150C22v4Ev();
extern void _ZN8S20150C22v5Ev();
extern void _ZN8S20150C22v6Ev();
static  VTBL_ENTRY vtc_S20150C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20150C2[0]),
  (VTBL_ENTRY)&_ZN8S20150C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20150C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20150C2[];
extern  VTBL_ENTRY _ZTV8S20150C2[];
Class_Descriptor cd_S20150C2 = {  "S20150C2", // class name
  0,0,//no base classes
  &(vtc_S20150C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20150C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20150C2),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  S20150C1  : virtual S20150C2 {
  virtual  ~S20150C1(); // _ZN8S20150C1D2Ev
  virtual void  v1(); // _ZN8S20150C12v1Ev
  virtual void  v2(); // _ZN8S20150C12v2Ev
  S20150C1(); // tgen
};
//SIG(1 S20150C1) C1{ VBC2{ vd v3 v4 v5 v6 FL Fi} vd v1 v2}


 S20150C1 ::~S20150C1(){ note_dtor("S20150C1", this);}
void  S20150C1 ::v1(){vfunc_called(this, "_ZN8S20150C12v1Ev");}
void  S20150C1 ::v2(){vfunc_called(this, "_ZN8S20150C12v2Ev");}
S20150C1 ::S20150C1(){ note_ctor("S20150C1", this);} // tgen

static void Test_S20150C1()
{
  extern Class_Descriptor cd_S20150C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20150C1, buf);
    S20150C1 *dp, &lv = *(dp=new (buf) S20150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20150C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20150C1)");
    check_base_class_offset(lv, (S20150C2*), ABISELECT(8,4), "S20150C1");
    test_class_info(&lv, &cd_S20150C1);
    dp->~S20150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20150C1(Test_S20150C1, "S20150C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20150C1C1Ev();
extern void _ZN8S20150C1D2Ev();
Name_Map name_map_S20150C1[] = {
  NSPAIR(_ZN8S20150C1C1Ev),
  NSPAIR(_ZN8S20150C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20150C2;
extern VTBL_ENTRY _ZTI8S20150C2[];
extern  VTBL_ENTRY _ZTV8S20150C2[];
static Base_Class bases_S20150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20150C2,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20150C1[];
extern void _ZN8S20150C1D1Ev();
extern void _ZN8S20150C1D0Ev();
extern void _ZN8S20150C12v1Ev();
extern void _ZN8S20150C12v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S20150C1D1Ev,_ZTv0_n12_N8S20150C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20150C1D1Ev,_ZThn4_N8S20150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20150C1D0Ev,_ZTv0_n12_N8S20150C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20150C1D0Ev,_ZThn4_N8S20150C1D0Ev)() __attribute__((weak));
extern void _ZN8S20150C22v3Ev();
extern void _ZN8S20150C22v4Ev();
extern void _ZN8S20150C22v5Ev();
extern void _ZN8S20150C22v6Ev();
static  VTBL_ENTRY vtc_S20150C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20150C1[0]),
  (VTBL_ENTRY)&_ZN8S20150C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20150C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20150C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20150C12v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20150C1D1Ev,_ZTv0_n12_N8S20150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20150C1D0Ev,_ZTv0_n12_N8S20150C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20150C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20150C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20150C1[];
static  VTT_ENTRY vtt_S20150C1[] = {
  {&(_ZTV8S20150C1[3]),  3,20},
  {&(_ZTV8S20150C1[14]),  14,20},
};
extern VTBL_ENTRY _ZTI8S20150C1[];
extern  VTBL_ENTRY _ZTV8S20150C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20150C1[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20150C1D0Ev,_ZTv0_n12_N8S20150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20150C1D0Ev,_ZThn4_N8S20150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20150C1D1Ev,_ZTv0_n12_N8S20150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20150C1D1Ev,_ZThn4_N8S20150C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20150C1 = {  "S20150C1", // class name
  bases_S20150C1, 1,
  &(vtc_S20150C1[0]), // expected_vtbl_contents
  &(vtt_S20150C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20150C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20150C1),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20150C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9429C2  {
  void *s9429c2f0[3];
  char s9429c2f1;
  virtual  ~S9429C2(); // _ZN7S9429C2D1Ev
  virtual void  v3(); // _ZN7S9429C22v3Ev
  virtual void  v4(); // _ZN7S9429C22v4Ev
  virtual void  v5(); // _ZN7S9429C22v5Ev
  S9429C2(); // tgen
};
//SIG(-1 S9429C2) C1{ vd v1 v2 v3 Fp[3] Fc}


 S9429C2 ::~S9429C2(){ note_dtor("S9429C2", this);}
void  S9429C2 ::v3(){vfunc_called(this, "_ZN7S9429C22v3Ev");}
void  S9429C2 ::v4(){vfunc_called(this, "_ZN7S9429C22v4Ev");}
void  S9429C2 ::v5(){vfunc_called(this, "_ZN7S9429C22v5Ev");}
S9429C2 ::S9429C2(){ note_ctor("S9429C2", this);} // tgen

static void Test_S9429C2()
{
  extern Class_Descriptor cd_S9429C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S9429C2, buf);
    S9429C2 *dp, &lv = *(dp=new (buf) S9429C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S9429C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9429C2)");
    check_field_offset(lv, s9429c2f0, ABISELECT(8,4), "S9429C2.s9429c2f0");
    check_field_offset(lv, s9429c2f1, ABISELECT(32,16), "S9429C2.s9429c2f1");
    test_class_info(&lv, &cd_S9429C2);
    dp->~S9429C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9429C2(Test_S9429C2, "S9429C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S9429C2C1Ev();
extern void _ZN7S9429C2D1Ev();
Name_Map name_map_S9429C2[] = {
  NSPAIR(_ZN7S9429C2C1Ev),
  NSPAIR(_ZN7S9429C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9429C2[];
extern void _ZN7S9429C2D1Ev();
extern void _ZN7S9429C2D0Ev();
extern void _ZN7S9429C22v3Ev();
extern void _ZN7S9429C22v4Ev();
extern void _ZN7S9429C22v5Ev();
static  VTBL_ENTRY vtc_S9429C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9429C2[0]),
  (VTBL_ENTRY)&_ZN7S9429C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9429C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9429C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9429C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9429C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9429C2[];
extern  VTBL_ENTRY _ZTV7S9429C2[];
Class_Descriptor cd_S9429C2 = {  "S9429C2", // class name
  0,0,//no base classes
  &(vtc_S9429C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S9429C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9429C2),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  S9429C1  : S9429C2 {
  virtual  ~S9429C1(); // _ZN7S9429C1D1Ev
  virtual void  v1(); // _ZN7S9429C12v1Ev
  virtual void  v2(); // _ZN7S9429C12v2Ev
  S9429C1(); // tgen
};
//SIG(1 S9429C1) C1{ BC2{ vd v3 v4 v5 Fp[3] Fc} vd v1 v2}


 S9429C1 ::~S9429C1(){ note_dtor("S9429C1", this);}
void  S9429C1 ::v1(){vfunc_called(this, "_ZN7S9429C12v1Ev");}
void  S9429C1 ::v2(){vfunc_called(this, "_ZN7S9429C12v2Ev");}
S9429C1 ::S9429C1(){ note_ctor("S9429C1", this);} // tgen

static void Test_S9429C1()
{
  extern Class_Descriptor cd_S9429C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S9429C1, buf);
    S9429C1 *dp, &lv = *(dp=new (buf) S9429C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S9429C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9429C1)");
    check_base_class_offset(lv, (S9429C2*), 0, "S9429C1");
    test_class_info(&lv, &cd_S9429C1);
    dp->~S9429C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9429C1(Test_S9429C1, "S9429C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S9429C1C1Ev();
extern void _ZN7S9429C1D1Ev();
Name_Map name_map_S9429C1[] = {
  NSPAIR(_ZN7S9429C1C1Ev),
  NSPAIR(_ZN7S9429C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9429C2;
extern VTBL_ENTRY _ZTI7S9429C2[];
extern  VTBL_ENTRY _ZTV7S9429C2[];
static Base_Class bases_S9429C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9429C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9429C1[];
extern void _ZN7S9429C1D1Ev();
extern void _ZN7S9429C1D0Ev();
extern void _ZN7S9429C22v3Ev();
extern void _ZN7S9429C22v4Ev();
extern void _ZN7S9429C22v5Ev();
extern void _ZN7S9429C12v1Ev();
extern void _ZN7S9429C12v2Ev();
static  VTBL_ENTRY vtc_S9429C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9429C1[0]),
  (VTBL_ENTRY)&_ZN7S9429C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9429C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9429C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9429C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9429C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9429C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9429C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9429C1[];
extern  VTBL_ENTRY _ZTV7S9429C1[];
Class_Descriptor cd_S9429C1 = {  "S9429C1", // class name
  bases_S9429C1, 1,
  &(vtc_S9429C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S9429C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9429C1),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  S11247C3_nt  {
  char s11247c3f0[20];
};
//SIG(-1 S11247C3_nt) C1{ Fc[20]}



//skip512 S11247C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11247C2_nt  {
  ::S11247C3_nt s11247c2f0;
  char s11247c2f1[16];
};
//SIG(-1 S11247C2_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S11247C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11247C4_nt  {
  long s11247c4f0;
};
//SIG(-1 S11247C4_nt) C1{ Fl}



//skip512 S11247C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11247C1  {
  ::S11247C2_nt s11247c1f0;
  int s11247c1f1;
  ::S11247C4_nt s11247c1f2;
};
//SIG(1 S11247C1) C1{ FC2{ FC3{ Fc[20]} Fc[16]} Fi FC4{ Fl}}



static void Test_S11247C1()
{
  {
    init_simple_test("S11247C1");
    S11247C1 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S11247C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11247C1)");
    check_field_offset(lv, s11247c1f0, 0, "S11247C1.s11247c1f0");
    check_field_offset(lv, s11247c1f1, 36, "S11247C1.s11247c1f1");
    check_field_offset(lv, s11247c1f2, 40, "S11247C1.s11247c1f2");
  }
}
static Arrange_To_Call_Me vS11247C1(Test_S11247C1, "S11247C1", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15288C1  {
  ::S2466C5_nt s15288c1f0;
  ::S2466C5_nt s15288c1f1;
  void  mf15288c1(); // _ZN8S15288C19mf15288c1Ev
};
//SIG(1 S15288C1) C1{ m FC2{ BC3{ BC4{ BC5{ BC6{}}} Fp}} FC2}


void  S15288C1 ::mf15288c1(){}

static void Test_S15288C1()
{
  {
    init_simple_test("S15288C1");
    S15288C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15288C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15288C1)");
    check_field_offset(lv, s15288c1f0, 0, "S15288C1.s15288c1f0");
    check_field_offset(lv, s15288c1f1, ABISELECT(8,4), "S15288C1.s15288c1f1");
  }
}
static Arrange_To_Call_Me vS15288C1(Test_S15288C1, "S15288C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17377C1  {
  __tsi64 s17377c1f0;
  void *s17377c1f1[2];
  ::S9526C3 s17377c1f2;
  void  mf17377c1(); // _ZN8S17377C19mf17377c1Ev
};
//SIG(1 S17377C1) C1{ m FL Fp[2] FC2{ m Fp Fi[4] FL[2]}}


void  S17377C1 ::mf17377c1(){}

static void Test_S17377C1()
{
  {
    init_simple_test("S17377C1");
    S17377C1 lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S17377C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17377C1)");
    check_field_offset(lv, s17377c1f0, 0, "S17377C1.s17377c1f0");
    check_field_offset(lv, s17377c1f1, 8, "S17377C1.s17377c1f1");
    check_field_offset(lv, s17377c1f2, ABISELECT(24,16), "S17377C1.s17377c1f2");
  }
}
static Arrange_To_Call_Me vS17377C1(Test_S17377C1, "S17377C1", ABISELECT(64,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19630C2  : S21216C26_nt , virtual S19894C34 {
  int s19630c2f0;
  virtual  ~S19630C2(); // _ZN8S19630C2D2Ev
  S19630C2(); // tgen
};
//SIG(-1 S19630C2) C1{ BC2{ vd m} VBC3{ m} vd Fi}


 S19630C2 ::~S19630C2(){ note_dtor("S19630C2", this);}
S19630C2 ::S19630C2(){ note_ctor("S19630C2", this);} // tgen

static void Test_S19630C2()
{
  extern Class_Descriptor cd_S19630C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19630C2, buf);
    S19630C2 *dp, &lv = *(dp=new (buf) S19630C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19630C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19630C2)");
    check_base_class_offset(lv, (S21216C26_nt*), 0, "S19630C2");
    check_base_class_offset(lv, (S19894C34*), 0, "S19630C2");
    check_field_offset(lv, s19630c2f0, ABISELECT(8,4), "S19630C2.s19630c2f0");
    test_class_info(&lv, &cd_S19630C2);
    dp->~S19630C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19630C2(Test_S19630C2, "S19630C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19630C2C1Ev();
extern void _ZN8S19630C2D2Ev();
Name_Map name_map_S19630C2[] = {
  NSPAIR(_ZN8S19630C2C1Ev),
  NSPAIR(_ZN8S19630C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S19630C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19630C2[];
extern void _ZN8S19630C2D1Ev();
extern void _ZN8S19630C2D0Ev();
static  VTBL_ENTRY vtc_S19630C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19630C2[0]),
  (VTBL_ENTRY)&_ZN8S19630C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19630C2D0Ev,
};
extern VTBL_ENTRY _ZTV8S19630C2[];
static  VTT_ENTRY vtt_S19630C2[] = {
  {&(_ZTV8S19630C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19630C2[];
extern  VTBL_ENTRY _ZTV8S19630C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19630C2[];
Class_Descriptor cd_S19630C2 = {  "S19630C2", // class name
  bases_S19630C2, 2,
  &(vtc_S19630C2[0]), // expected_vtbl_contents
  &(vtt_S19630C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19630C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19630C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19630C2),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19630C1  : virtual S19630C2 {
  __tsi64 s19630c1f0;
  virtual  ~S19630C1(); // _ZN8S19630C1D2Ev
  S19630C1(); // tgen
};
//SIG(1 S19630C1) C1{ VBC2{ BC3{ vd m} VBC4{ m} vd Fi} vd FL}


 S19630C1 ::~S19630C1(){ note_dtor("S19630C1", this);}
S19630C1 ::S19630C1(){ note_ctor("S19630C1", this);} // tgen

static void Test_S19630C1()
{
  extern Class_Descriptor cd_S19630C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19630C1, buf);
    S19630C1 *dp, &lv = *(dp=new (buf) S19630C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19630C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19630C1)");
    check_base_class_offset(lv, (S21216C26_nt*)(S19630C2*), ABISELECT(16,12), "S19630C1");
    check_base_class_offset(lv, (S19894C34*)(S19630C2*), 0, "S19630C1");
    check_base_class_offset(lv, (S19630C2*), ABISELECT(16,12), "S19630C1");
    check_field_offset(lv, s19630c1f0, ABISELECT(8,4), "S19630C1.s19630c1f0");
    test_class_info(&lv, &cd_S19630C1);
    dp->~S19630C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19630C1(Test_S19630C1, "S19630C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19630C1C1Ev();
extern void _ZN8S19630C1D2Ev();
Name_Map name_map_S19630C1[] = {
  NSPAIR(_ZN8S19630C1C1Ev),
  NSPAIR(_ZN8S19630C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
extern Class_Descriptor cd_S19630C2;
extern VTBL_ENTRY _ZTI8S19630C2[];
extern  VTBL_ENTRY _ZTV8S19630C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19630C2[];
static Base_Class bases_S19630C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21216C26_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19630C2,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19630C1[];
extern void _ZN8S19630C1D1Ev();
extern void _ZN8S19630C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19630C1D1Ev,_ZTv0_n16_N8S19630C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19630C1D1Ev,_ZThn12_N8S19630C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19630C1D0Ev,_ZTv0_n16_N8S19630C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19630C1D0Ev,_ZThn12_N8S19630C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19630C1[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19630C1[0]),
  (VTBL_ENTRY)&_ZN8S19630C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19630C1D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19630C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19630C1D1Ev,_ZTv0_n16_N8S19630C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19630C1D0Ev,_ZTv0_n16_N8S19630C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19630C1[];
extern void _ZN8S19630C2D1Ev();
extern void _ZN8S19630C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19630C2__8S19630C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19630C2[0]),
  (VTBL_ENTRY)&_ZN8S19630C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19630C2D0Ev,
};
static  VTT_ENTRY vtt_S19630C1[] = {
  {&(_ZTV8S19630C1[4]),  4,12},
  {&(_ZTV8S19630C1[10]),  10,12},
  {&(_tg__ZTV8S19630C2__8S19630C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19630C1[];
extern  VTBL_ENTRY _ZTV8S19630C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19630C1[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19630C1D0Ev,_ZTv0_n16_N8S19630C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19630C1D0Ev,_ZThn12_N8S19630C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19630C1D1Ev,_ZTv0_n16_N8S19630C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19630C1D1Ev,_ZThn12_N8S19630C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19630C1 = {  "S19630C1", // class name
  bases_S19630C1, 3,
  &(vtc_S19630C1[0]), // expected_vtbl_contents
  &(vtt_S19630C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19630C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19630C1),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19630C1),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15287C1  {
  ::S2466C5_nt s15287c1f0;
  char s15287c1f1;
  void  mf15287c1(); // _ZN8S15287C19mf15287c1Ev
};
//SIG(1 S15287C1) C1{ m FC2{ BC3{ BC4{ BC5{ BC6{}}} Fp}} Fc}


void  S15287C1 ::mf15287c1(){}

static void Test_S15287C1()
{
  {
    init_simple_test("S15287C1");
    S15287C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15287C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15287C1)");
    check_field_offset(lv, s15287c1f0, 0, "S15287C1.s15287c1f0");
    check_field_offset(lv, s15287c1f1, ABISELECT(8,4), "S15287C1.s15287c1f1");
  }
}
static Arrange_To_Call_Me vS15287C1(Test_S15287C1, "S15287C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7418C2  : virtual S3223C8_nt {
  int s7418c2f0;
  ~S7418C2(); // tgen
  S7418C2(); // tgen
};
//SIG(-1 S7418C2) C1{ VBC2{ m Fi} Fi}


S7418C2 ::~S7418C2(){ note_dtor("S7418C2", this);} // tgen
S7418C2 ::S7418C2(){ note_ctor("S7418C2", this);} // tgen

static void Test_S7418C2()
{
  extern Class_Descriptor cd_S7418C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7418C2, buf);
    S7418C2 *dp, &lv = *(dp=new (buf) S7418C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7418C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7418C2)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S7418C2");
    check_field_offset(lv, s7418c2f0, ABISELECT(8,4), "S7418C2.s7418c2f0");
    test_class_info(&lv, &cd_S7418C2);
    dp->~S7418C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7418C2(Test_S7418C2, "S7418C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7418C2C1Ev();
extern void _ZN7S7418C2D1Ev();
Name_Map name_map_S7418C2[] = {
  NSPAIR(_ZN7S7418C2C1Ev),
  NSPAIR(_ZN7S7418C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7418C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7418C2[];
static  VTBL_ENTRY vtc_S7418C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7418C2[0]),
};
extern VTBL_ENTRY _ZTV7S7418C2[];
static  VTT_ENTRY vtt_S7418C2[] = {
  {&(_ZTV7S7418C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7418C2[];
extern  VTBL_ENTRY _ZTV7S7418C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7418C2[];
Class_Descriptor cd_S7418C2 = {  "S7418C2", // class name
  bases_S7418C2, 1,
  &(vtc_S7418C2[0]), // expected_vtbl_contents
  &(vtt_S7418C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7418C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7418C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7418C2),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  S7418C4  : virtual S3223C8_nt {
  int s7418c4f0;
  ~S7418C4(); // tgen
  S7418C4(); // tgen
};
//SIG(-1 S7418C4) C1{ VBC2{ m Fi} Fi}


S7418C4 ::~S7418C4(){ note_dtor("S7418C4", this);} // tgen
S7418C4 ::S7418C4(){ note_ctor("S7418C4", this);} // tgen

static void Test_S7418C4()
{
  extern Class_Descriptor cd_S7418C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7418C4, buf);
    S7418C4 *dp, &lv = *(dp=new (buf) S7418C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7418C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7418C4)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S7418C4");
    check_field_offset(lv, s7418c4f0, ABISELECT(8,4), "S7418C4.s7418c4f0");
    test_class_info(&lv, &cd_S7418C4);
    dp->~S7418C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7418C4(Test_S7418C4, "S7418C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7418C4C1Ev();
extern void _ZN7S7418C4D1Ev();
Name_Map name_map_S7418C4[] = {
  NSPAIR(_ZN7S7418C4C1Ev),
  NSPAIR(_ZN7S7418C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7418C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7418C4[];
static  VTBL_ENTRY vtc_S7418C4[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7418C4[0]),
};
extern VTBL_ENTRY _ZTV7S7418C4[];
static  VTT_ENTRY vtt_S7418C4[] = {
  {&(_ZTV7S7418C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7418C4[];
extern  VTBL_ENTRY _ZTV7S7418C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7418C4[];
Class_Descriptor cd_S7418C4 = {  "S7418C4", // class name
  bases_S7418C4, 1,
  &(vtc_S7418C4[0]), // expected_vtbl_contents
  &(vtt_S7418C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7418C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7418C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7418C4),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  S7418C1  : S7418C2 , S7418C4 {
  int s7418c1f0;
  ~S7418C1(); // tgen
  S7418C1(); // tgen
};
//SIG(1 S7418C1) C1{ BC2{ VBC3{ m Fi} Fi} BC4{ VBC3 Fi} Fi}


S7418C1 ::~S7418C1(){ note_dtor("S7418C1", this);} // tgen
S7418C1 ::S7418C1(){ note_ctor("S7418C1", this);} // tgen

static void Test_S7418C1()
{
  extern Class_Descriptor cd_S7418C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7418C1, buf);
    S7418C1 *dp, &lv = *(dp=new (buf) S7418C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7418C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7418C1)");
    check_base_class_offset(lv, (S3223C8_nt*)(S7418C2*), ABISELECT(32,20), "S7418C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S7418C4*), ABISELECT(32,20), "S7418C1");
    check_base_class_offset(lv, (S7418C2*), 0, "S7418C1");
    check_base_class_offset(lv, (S7418C4*), ABISELECT(16,8), "S7418C1");
    check_field_offset(lv, s7418c1f0, ABISELECT(28,16), "S7418C1.s7418c1f0");
    test_class_info(&lv, &cd_S7418C1);
    dp->~S7418C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7418C1(Test_S7418C1, "S7418C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7418C1C1Ev();
extern void _ZN7S7418C1D1Ev();
Name_Map name_map_S7418C1[] = {
  NSPAIR(_ZN7S7418C1C1Ev),
  NSPAIR(_ZN7S7418C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S7418C2;
extern VTBL_ENTRY _ZTI7S7418C2[];
extern  VTBL_ENTRY _ZTV7S7418C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7418C2[];
extern Class_Descriptor cd_S7418C4;
extern VTBL_ENTRY _ZTI7S7418C4[];
extern  VTBL_ENTRY _ZTV7S7418C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7418C4[];
static Base_Class bases_S7418C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7418C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7418C4,    ABISELECT(16,8), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7418C1[];
static  VTBL_ENTRY vtc_S7418C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7418C1[0]),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7418C1[0]),
};
extern VTBL_ENTRY _ZTV7S7418C1[];
static  VTBL_ENTRY _tg__ZTV7S7418C2__7S7418C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7418C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7418C4__7S7418C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7418C4[0]),
};
static  VTT_ENTRY vtt_S7418C1[] = {
  {&(_ZTV7S7418C1[3]),  3,6},
  {&(_tg__ZTV7S7418C2__7S7418C1[3]),  3,3},
  {&(_tg__ZTV7S7418C4__7S7418C1[3]),  3,3},
  {&(_ZTV7S7418C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7418C1[];
extern  VTBL_ENTRY _ZTV7S7418C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7418C1[];
Class_Descriptor cd_S7418C1 = {  "S7418C1", // class name
  bases_S7418C1, 3,
  &(vtc_S7418C1[0]), // expected_vtbl_contents
  &(vtt_S7418C1[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7418C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7418C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7418C1),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  S15588C1  {
  ::S3619C14_nt s15588c1f0;
  void *s15588c1f1;
  int s15588c1f2;
  void *s15588c1f3[2];
  int s15588c1f4[4];
  void  mf15588c1(); // _ZN8S15588C19mf15588c1Ev
};
//SIG(1 S15588C1) C1{ m FC2{ FL[4]} Fp Fi Fp[2] Fi[4]}


void  S15588C1 ::mf15588c1(){}

static void Test_S15588C1()
{
  {
    init_simple_test("S15588C1");
    S15588C1 lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S15588C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15588C1)");
    check_field_offset(lv, s15588c1f0, 0, "S15588C1.s15588c1f0");
    check_field_offset(lv, s15588c1f1, 32, "S15588C1.s15588c1f1");
    check_field_offset(lv, s15588c1f2, ABISELECT(40,36), "S15588C1.s15588c1f2");
    check_field_offset(lv, s15588c1f3, ABISELECT(48,40), "S15588C1.s15588c1f3");
    check_field_offset(lv, s15588c1f4, ABISELECT(64,48), "S15588C1.s15588c1f4");
  }
}
static Arrange_To_Call_Me vS15588C1(Test_S15588C1, "S15588C1", ABISELECT(80,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7419C2  : virtual S3223C8_nt {
  int s7419c2f0;
  ~S7419C2(); // tgen
  S7419C2(); // tgen
};
//SIG(-1 S7419C2) C1{ VBC2{ m Fi} Fi}


S7419C2 ::~S7419C2(){ note_dtor("S7419C2", this);} // tgen
S7419C2 ::S7419C2(){ note_ctor("S7419C2", this);} // tgen

static void Test_S7419C2()
{
  extern Class_Descriptor cd_S7419C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7419C2, buf);
    S7419C2 *dp, &lv = *(dp=new (buf) S7419C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7419C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7419C2)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S7419C2");
    check_field_offset(lv, s7419c2f0, ABISELECT(8,4), "S7419C2.s7419c2f0");
    test_class_info(&lv, &cd_S7419C2);
    dp->~S7419C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7419C2(Test_S7419C2, "S7419C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7419C2C1Ev();
extern void _ZN7S7419C2D1Ev();
Name_Map name_map_S7419C2[] = {
  NSPAIR(_ZN7S7419C2C1Ev),
  NSPAIR(_ZN7S7419C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7419C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7419C2[];
static  VTBL_ENTRY vtc_S7419C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7419C2[0]),
};
extern VTBL_ENTRY _ZTV7S7419C2[];
static  VTT_ENTRY vtt_S7419C2[] = {
  {&(_ZTV7S7419C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7419C2[];
extern  VTBL_ENTRY _ZTV7S7419C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7419C2[];
Class_Descriptor cd_S7419C2 = {  "S7419C2", // class name
  bases_S7419C2, 1,
  &(vtc_S7419C2[0]), // expected_vtbl_contents
  &(vtt_S7419C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7419C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7419C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7419C2),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  S7419C4  : virtual S3223C8_nt {
  int s7419c4f0;
  ~S7419C4(); // tgen
  S7419C4(); // tgen
};
//SIG(-1 S7419C4) C1{ VBC2{ m Fi} Fi}


S7419C4 ::~S7419C4(){ note_dtor("S7419C4", this);} // tgen
S7419C4 ::S7419C4(){ note_ctor("S7419C4", this);} // tgen

static void Test_S7419C4()
{
  extern Class_Descriptor cd_S7419C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7419C4, buf);
    S7419C4 *dp, &lv = *(dp=new (buf) S7419C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7419C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7419C4)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S7419C4");
    check_field_offset(lv, s7419c4f0, ABISELECT(8,4), "S7419C4.s7419c4f0");
    test_class_info(&lv, &cd_S7419C4);
    dp->~S7419C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7419C4(Test_S7419C4, "S7419C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7419C4C1Ev();
extern void _ZN7S7419C4D1Ev();
Name_Map name_map_S7419C4[] = {
  NSPAIR(_ZN7S7419C4C1Ev),
  NSPAIR(_ZN7S7419C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7419C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7419C4[];
static  VTBL_ENTRY vtc_S7419C4[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7419C4[0]),
};
extern VTBL_ENTRY _ZTV7S7419C4[];
static  VTT_ENTRY vtt_S7419C4[] = {
  {&(_ZTV7S7419C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7419C4[];
extern  VTBL_ENTRY _ZTV7S7419C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7419C4[];
Class_Descriptor cd_S7419C4 = {  "S7419C4", // class name
  bases_S7419C4, 1,
  &(vtc_S7419C4[0]), // expected_vtbl_contents
  &(vtt_S7419C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7419C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7419C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7419C4),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  S7419C1  : S7419C2 , S7419C4 {
  ~S7419C1(); // tgen
  S7419C1(); // tgen
};
//SIG(1 S7419C1) C1{ BC2{ VBC3{ m Fi} Fi} BC4{ VBC3 Fi}}


S7419C1 ::~S7419C1(){ note_dtor("S7419C1", this);} // tgen
S7419C1 ::S7419C1(){ note_ctor("S7419C1", this);} // tgen

static void Test_S7419C1()
{
  extern Class_Descriptor cd_S7419C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7419C1, buf);
    S7419C1 *dp, &lv = *(dp=new (buf) S7419C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7419C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7419C1)");
    check_base_class_offset(lv, (S3223C8_nt*)(S7419C2*), ABISELECT(28,16), "S7419C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S7419C4*), ABISELECT(28,16), "S7419C1");
    check_base_class_offset(lv, (S7419C2*), 0, "S7419C1");
    check_base_class_offset(lv, (S7419C4*), ABISELECT(16,8), "S7419C1");
    test_class_info(&lv, &cd_S7419C1);
    dp->~S7419C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7419C1(Test_S7419C1, "S7419C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7419C1C1Ev();
extern void _ZN7S7419C1D1Ev();
Name_Map name_map_S7419C1[] = {
  NSPAIR(_ZN7S7419C1C1Ev),
  NSPAIR(_ZN7S7419C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S7419C2;
extern VTBL_ENTRY _ZTI7S7419C2[];
extern  VTBL_ENTRY _ZTV7S7419C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7419C2[];
extern Class_Descriptor cd_S7419C4;
extern VTBL_ENTRY _ZTI7S7419C4[];
extern  VTBL_ENTRY _ZTV7S7419C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7419C4[];
static Base_Class bases_S7419C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7419C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7419C4,    ABISELECT(16,8), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7419C1[];
static  VTBL_ENTRY vtc_S7419C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7419C1[0]),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7419C1[0]),
};
extern VTBL_ENTRY _ZTV7S7419C1[];
static  VTBL_ENTRY _tg__ZTV7S7419C2__7S7419C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7419C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7419C4__7S7419C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7419C4[0]),
};
static  VTT_ENTRY vtt_S7419C1[] = {
  {&(_ZTV7S7419C1[3]),  3,6},
  {&(_tg__ZTV7S7419C2__7S7419C1[3]),  3,3},
  {&(_tg__ZTV7S7419C4__7S7419C1[3]),  3,3},
  {&(_ZTV7S7419C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7419C1[];
extern  VTBL_ENTRY _ZTV7S7419C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7419C1[];
Class_Descriptor cd_S7419C1 = {  "S7419C1", // class name
  bases_S7419C1, 3,
  &(vtc_S7419C1[0]), // expected_vtbl_contents
  &(vtt_S7419C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7419C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7419C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7419C1),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  S5681C1  : S18200C2 {
};
//SIG(1 S5681C1) C1{ BC2{ m FC3{ m Fp Fi FC4{ m}} Fp}}



static void Test_S5681C1()
{
  extern Class_Descriptor cd_S5681C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S5681C1, buf);
    S5681C1 &lv = *(new (buf) S5681C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S5681C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5681C1)");
    check_base_class_offset(lv, (S18200C2*), 0, "S5681C1");
    test_class_info(&lv, &cd_S5681C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5681C1(Test_S5681C1, "S5681C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S18200C2;
static Base_Class bases_S5681C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18200C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5681C1 = {  "S5681C1", // class name
  bases_S5681C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11349C3  {
  char s11349c3f0[2];
  int s11349c3f1[18];
};
//SIG(-1 S11349C3) C1{ Fc[2] Fi[18]}



static void Test_S11349C3()
{
  {
    init_simple_test("S11349C3");
    S11349C3 lv;
    check2(sizeof(lv), 76, "sizeof(S11349C3)");
    check2(__alignof__(lv), 4, "__alignof__(S11349C3)");
    check_field_offset(lv, s11349c3f0, 0, "S11349C3.s11349c3f0");
    check_field_offset(lv, s11349c3f1, 4, "S11349C3.s11349c3f1");
  }
}
static Arrange_To_Call_Me vS11349C3(Test_S11349C3, "S11349C3", 76);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11349C1  {
  ::S3619C36_nt s11349c1f0;
  ::S11349C3 s11349c1f1;
};
//SIG(1 S11349C1) C1{ FC2{ Fi Fc} FC3{ Fc[2] Fi[18]}}



static void Test_S11349C1()
{
  {
    init_simple_test("S11349C1");
    S11349C1 lv;
    check2(sizeof(lv), 84, "sizeof(S11349C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11349C1)");
    check_field_offset(lv, s11349c1f0, 0, "S11349C1.s11349c1f0");
    check_field_offset(lv, s11349c1f1, 8, "S11349C1.s11349c1f1");
  }
}
static Arrange_To_Call_Me vS11349C1(Test_S11349C1, "S11349C1", 84);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7423C2_nt  : virtual S3223C8_nt {
  ~S7423C2_nt(); // tgen
  S7423C2_nt(); // tgen
};
//SIG(-1 S7423C2_nt) C1{ VBC2{ m Fi}}


S7423C2_nt ::~S7423C2_nt(){ note_dtor("S7423C2_nt", this);} // tgen
S7423C2_nt ::S7423C2_nt(){ note_ctor("S7423C2_nt", this);} // tgen

//skip512 S7423C2_nt

#else // __cplusplus

extern void _ZN10S7423C2_ntC1Ev();
extern void _ZN10S7423C2_ntD1Ev();
Name_Map name_map_S7423C2_nt[] = {
  NSPAIR(_ZN10S7423C2_ntC1Ev),
  NSPAIR(_ZN10S7423C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7423C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S7423C2_nt[];
static  VTBL_ENTRY vtc_S7423C2_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S7423C2_nt[0]),
};
extern VTBL_ENTRY _ZTV10S7423C2_nt[];
static  VTT_ENTRY vtt_S7423C2_nt[] = {
  {&(_ZTV10S7423C2_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI10S7423C2_nt[];
VTBL_ENTRY *P__ZTI10S7423C2_nt = _ZTI10S7423C2_nt; 
extern  VTBL_ENTRY _ZTV10S7423C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7423C2_nt[];
Class_Descriptor cd_S7423C2_nt = {  "S7423C2_nt", // class name
  bases_S7423C2_nt, 1,
  &(vtc_S7423C2_nt[0]), // expected_vtbl_contents
  &(vtt_S7423C2_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7423C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S7423C2_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S7423C2_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7423C4  : virtual S3223C8_nt {
  int s7423c4f0;
  ~S7423C4(); // tgen
  S7423C4(); // tgen
};
//SIG(-1 S7423C4) C1{ VBC2{ m Fi} Fi}


S7423C4 ::~S7423C4(){ note_dtor("S7423C4", this);} // tgen
S7423C4 ::S7423C4(){ note_ctor("S7423C4", this);} // tgen

static void Test_S7423C4()
{
  extern Class_Descriptor cd_S7423C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7423C4, buf);
    S7423C4 *dp, &lv = *(dp=new (buf) S7423C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7423C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7423C4)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S7423C4");
    check_field_offset(lv, s7423c4f0, ABISELECT(8,4), "S7423C4.s7423c4f0");
    test_class_info(&lv, &cd_S7423C4);
    dp->~S7423C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7423C4(Test_S7423C4, "S7423C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7423C4C1Ev();
extern void _ZN7S7423C4D1Ev();
Name_Map name_map_S7423C4[] = {
  NSPAIR(_ZN7S7423C4C1Ev),
  NSPAIR(_ZN7S7423C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7423C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7423C4[];
static  VTBL_ENTRY vtc_S7423C4[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7423C4[0]),
};
extern VTBL_ENTRY _ZTV7S7423C4[];
static  VTT_ENTRY vtt_S7423C4[] = {
  {&(_ZTV7S7423C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7423C4[];
extern  VTBL_ENTRY _ZTV7S7423C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7423C4[];
Class_Descriptor cd_S7423C4 = {  "S7423C4", // class name
  bases_S7423C4, 1,
  &(vtc_S7423C4[0]), // expected_vtbl_contents
  &(vtt_S7423C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7423C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7423C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7423C4),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  S7423C1  : S7423C2_nt , S7423C4 {
  ~S7423C1(); // tgen
  S7423C1(); // tgen
};
//SIG(1 S7423C1) C1{ BC2{ VBC3{ m Fi}} BC4{ VBC3 Fi}}


S7423C1 ::~S7423C1(){ note_dtor("S7423C1", this);} // tgen
S7423C1 ::S7423C1(){ note_ctor("S7423C1", this);} // tgen

static void Test_S7423C1()
{
  extern Class_Descriptor cd_S7423C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7423C1, buf);
    S7423C1 *dp, &lv = *(dp=new (buf) S7423C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7423C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7423C1)");
    check_base_class_offset(lv, (S3223C8_nt*)(S7423C2_nt*), ABISELECT(20,12), "S7423C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S7423C4*), ABISELECT(20,12), "S7423C1");
    check_base_class_offset(lv, (S7423C2_nt*), 0, "S7423C1");
    check_base_class_offset(lv, (S7423C4*), ABISELECT(8,4), "S7423C1");
    test_class_info(&lv, &cd_S7423C1);
    dp->~S7423C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7423C1(Test_S7423C1, "S7423C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7423C1C1Ev();
extern void _ZN7S7423C1D1Ev();
Name_Map name_map_S7423C1[] = {
  NSPAIR(_ZN7S7423C1C1Ev),
  NSPAIR(_ZN7S7423C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S7423C2_nt;
extern VTBL_ENTRY _ZTI10S7423C2_nt[];
extern  VTBL_ENTRY _ZTV10S7423C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7423C2_nt[];
extern Class_Descriptor cd_S7423C4;
extern VTBL_ENTRY _ZTI7S7423C4[];
extern  VTBL_ENTRY _ZTV7S7423C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7423C4[];
static Base_Class bases_S7423C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7423C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7423C4,    ABISELECT(8,4), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7423C1[];
static  VTBL_ENTRY vtc_S7423C1[] = {
  ABISELECT(20,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7423C1[0]),
  ABISELECT(12,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7423C1[0]),
};
extern VTBL_ENTRY _ZTV7S7423C1[];
static  VTBL_ENTRY _tg__ZTV10S7423C2_nt__7S7423C1[] = {
  ABISELECT(20,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S7423C2_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7423C4__7S7423C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7423C4[0]),
};
static  VTT_ENTRY vtt_S7423C1[] = {
  {&(_ZTV7S7423C1[3]),  3,6},
  {&(_tg__ZTV10S7423C2_nt__7S7423C1[3]),  3,3},
  {&(_tg__ZTV7S7423C4__7S7423C1[3]),  3,3},
  {&(_ZTV7S7423C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7423C1[];
extern  VTBL_ENTRY _ZTV7S7423C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7423C1[];
Class_Descriptor cd_S7423C1 = {  "S7423C1", // class name
  bases_S7423C1, 3,
  &(vtc_S7423C1[0]), // expected_vtbl_contents
  &(vtt_S7423C1[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7423C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7423C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7423C1),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  S15326C1  {
  ::S2466C6_nt s15326c1f0;
  ::S2466C6_nt s15326c1f1;
  void  mf15326c1(); // _ZN8S15326C19mf15326c1Ev
};
//SIG(1 S15326C1) C1{ m FC2{ BC3{ BC4{ BC5{}}} Fp} FC2}


void  S15326C1 ::mf15326c1(){}

static void Test_S15326C1()
{
  {
    init_simple_test("S15326C1");
    S15326C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15326C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15326C1)");
    check_field_offset(lv, s15326c1f0, 0, "S15326C1.s15326c1f0");
    check_field_offset(lv, s15326c1f1, ABISELECT(8,4), "S15326C1.s15326c1f1");
  }
}
static Arrange_To_Call_Me vS15326C1(Test_S15326C1, "S15326C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7420C2  : virtual S3223C8_nt {
  int s7420c2f0;
  ~S7420C2(); // tgen
  S7420C2(); // tgen
};
//SIG(-1 S7420C2) C1{ VBC2{ m Fi} Fi}


S7420C2 ::~S7420C2(){ note_dtor("S7420C2", this);} // tgen
S7420C2 ::S7420C2(){ note_ctor("S7420C2", this);} // tgen

static void Test_S7420C2()
{
  extern Class_Descriptor cd_S7420C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7420C2, buf);
    S7420C2 *dp, &lv = *(dp=new (buf) S7420C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7420C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7420C2)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S7420C2");
    check_field_offset(lv, s7420c2f0, ABISELECT(8,4), "S7420C2.s7420c2f0");
    test_class_info(&lv, &cd_S7420C2);
    dp->~S7420C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7420C2(Test_S7420C2, "S7420C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7420C2C1Ev();
extern void _ZN7S7420C2D1Ev();
Name_Map name_map_S7420C2[] = {
  NSPAIR(_ZN7S7420C2C1Ev),
  NSPAIR(_ZN7S7420C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7420C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7420C2[];
static  VTBL_ENTRY vtc_S7420C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7420C2[0]),
};
extern VTBL_ENTRY _ZTV7S7420C2[];
static  VTT_ENTRY vtt_S7420C2[] = {
  {&(_ZTV7S7420C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7420C2[];
extern  VTBL_ENTRY _ZTV7S7420C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7420C2[];
Class_Descriptor cd_S7420C2 = {  "S7420C2", // class name
  bases_S7420C2, 1,
  &(vtc_S7420C2[0]), // expected_vtbl_contents
  &(vtt_S7420C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7420C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7420C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7420C2),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  S7420C4  : virtual S3223C8_nt {
  ~S7420C4(); // tgen
  S7420C4(); // tgen
};
//SIG(-1 S7420C4) C1{ VBC2{ m Fi}}


S7420C4 ::~S7420C4(){ note_dtor("S7420C4", this);} // tgen
S7420C4 ::S7420C4(){ note_ctor("S7420C4", this);} // tgen

static void Test_S7420C4()
{
  extern Class_Descriptor cd_S7420C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7420C4, buf);
    S7420C4 *dp, &lv = *(dp=new (buf) S7420C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7420C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7420C4)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(8,4), "S7420C4");
    test_class_info(&lv, &cd_S7420C4);
    dp->~S7420C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7420C4(Test_S7420C4, "S7420C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7420C4C1Ev();
extern void _ZN7S7420C4D1Ev();
Name_Map name_map_S7420C4[] = {
  NSPAIR(_ZN7S7420C4C1Ev),
  NSPAIR(_ZN7S7420C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S7420C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7420C4[];
static  VTBL_ENTRY vtc_S7420C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7420C4[0]),
};
extern VTBL_ENTRY _ZTV7S7420C4[];
static  VTT_ENTRY vtt_S7420C4[] = {
  {&(_ZTV7S7420C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7420C4[];
extern  VTBL_ENTRY _ZTV7S7420C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7420C4[];
Class_Descriptor cd_S7420C4 = {  "S7420C4", // class name
  bases_S7420C4, 1,
  &(vtc_S7420C4[0]), // expected_vtbl_contents
  &(vtt_S7420C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7420C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7420C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7420C4),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  S7420C1  : S7420C2 , S7420C4 {
  ~S7420C1(); // tgen
  S7420C1(); // tgen
};
//SIG(1 S7420C1) C1{ BC2{ VBC3{ m Fi} Fi} BC4{ VBC3}}


S7420C1 ::~S7420C1(){ note_dtor("S7420C1", this);} // tgen
S7420C1 ::S7420C1(){ note_ctor("S7420C1", this);} // tgen

static void Test_S7420C1()
{
  extern Class_Descriptor cd_S7420C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7420C1, buf);
    S7420C1 *dp, &lv = *(dp=new (buf) S7420C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7420C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7420C1)");
    check_base_class_offset(lv, (S3223C8_nt*)(S7420C2*), ABISELECT(24,12), "S7420C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S7420C4*), ABISELECT(24,12), "S7420C1");
    check_base_class_offset(lv, (S7420C2*), 0, "S7420C1");
    check_base_class_offset(lv, (S7420C4*), ABISELECT(16,8), "S7420C1");
    test_class_info(&lv, &cd_S7420C1);
    dp->~S7420C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7420C1(Test_S7420C1, "S7420C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7420C1C1Ev();
extern void _ZN7S7420C1D1Ev();
Name_Map name_map_S7420C1[] = {
  NSPAIR(_ZN7S7420C1C1Ev),
  NSPAIR(_ZN7S7420C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S7420C2;
extern VTBL_ENTRY _ZTI7S7420C2[];
extern  VTBL_ENTRY _ZTV7S7420C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7420C2[];
extern Class_Descriptor cd_S7420C4;
extern VTBL_ENTRY _ZTI7S7420C4[];
extern  VTBL_ENTRY _ZTV7S7420C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7420C4[];
static Base_Class bases_S7420C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7420C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7420C4,    ABISELECT(16,8), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7420C1[];
static  VTBL_ENTRY vtc_S7420C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7420C1[0]),
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7420C1[0]),
};
extern VTBL_ENTRY _ZTV7S7420C1[];
static  VTBL_ENTRY _tg__ZTV7S7420C2__7S7420C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7420C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7420C4__7S7420C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7420C4[0]),
};
static  VTT_ENTRY vtt_S7420C1[] = {
  {&(_ZTV7S7420C1[3]),  3,6},
  {&(_tg__ZTV7S7420C2__7S7420C1[3]),  3,3},
  {&(_tg__ZTV7S7420C4__7S7420C1[3]),  3,3},
  {&(_ZTV7S7420C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7420C1[];
extern  VTBL_ENTRY _ZTV7S7420C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7420C1[];
Class_Descriptor cd_S7420C1 = {  "S7420C1", // class name
  bases_S7420C1, 3,
  &(vtc_S7420C1[0]), // expected_vtbl_contents
  &(vtt_S7420C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7420C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7420C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7420C1),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  S21375C1  {
  ::S3619C11 s21375c1f0;
  void  mf21375c1(); // _ZN8S21375C19mf21375c1Ev
  virtual  ~S21375C1(); // _ZN8S21375C1D1Ev
  S21375C1(); // tgen
};
//SIG(1 S21375C1) C1{ vd m FC2{ m Fc Fl[4] Fi[4]}}


void  S21375C1 ::mf21375c1(){}
 S21375C1 ::~S21375C1(){ note_dtor("S21375C1", this);}
S21375C1 ::S21375C1(){ note_ctor("S21375C1", this);} // tgen

static void Test_S21375C1()
{
  extern Class_Descriptor cd_S21375C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S21375C1, buf);
    S21375C1 *dp, &lv = *(dp=new (buf) S21375C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21375C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21375C1)");
    check_field_offset(lv, s21375c1f0, ABISELECT(8,4), "S21375C1.s21375c1f0");
    test_class_info(&lv, &cd_S21375C1);
    dp->~S21375C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21375C1(Test_S21375C1, "S21375C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21375C1C1Ev();
extern void _ZN8S21375C1D1Ev();
Name_Map name_map_S21375C1[] = {
  NSPAIR(_ZN8S21375C1C1Ev),
  NSPAIR(_ZN8S21375C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21375C1[];
extern void _ZN8S21375C1D1Ev();
extern void _ZN8S21375C1D0Ev();
static  VTBL_ENTRY vtc_S21375C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21375C1[0]),
  (VTBL_ENTRY)&_ZN8S21375C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21375C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21375C1[];
extern  VTBL_ENTRY _ZTV8S21375C1[];
Class_Descriptor cd_S21375C1 = {  "S21375C1", // class name
  0,0,//no base classes
  &(vtc_S21375C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21375C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21375C1),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  S21570C1  {
  int s21570c1f0;
  char s21570c1f1[2];
  int s21570c1f2;
  char s21570c1f3[2048];
  void  mf21570c1(); // _ZN8S21570C19mf21570c1Ev
  virtual  ~S21570C1(); // _ZN8S21570C1D1Ev
  S21570C1(); // tgen
};
//SIG(1 S21570C1) C1{ vd m Fi Fc[2] Fi Fc[2048]}


void  S21570C1 ::mf21570c1(){}
 S21570C1 ::~S21570C1(){ note_dtor("S21570C1", this);}
S21570C1 ::S21570C1(){ note_ctor("S21570C1", this);} // tgen

static void Test_S21570C1()
{
  extern Class_Descriptor cd_S21570C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(260,517)];
    init_test(&cd_S21570C1, buf);
    S21570C1 *dp, &lv = *(dp=new (buf) S21570C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2072,2064), "sizeof(S21570C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21570C1)");
    check_field_offset(lv, s21570c1f0, ABISELECT(8,4), "S21570C1.s21570c1f0");
    check_field_offset(lv, s21570c1f1, ABISELECT(12,8), "S21570C1.s21570c1f1");
    check_field_offset(lv, s21570c1f2, ABISELECT(16,12), "S21570C1.s21570c1f2");
    check_field_offset(lv, s21570c1f3, ABISELECT(20,16), "S21570C1.s21570c1f3");
    test_class_info(&lv, &cd_S21570C1);
    dp->~S21570C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21570C1(Test_S21570C1, "S21570C1", ABISELECT(2072,2064));

#else // __cplusplus

extern void _ZN8S21570C1C1Ev();
extern void _ZN8S21570C1D1Ev();
Name_Map name_map_S21570C1[] = {
  NSPAIR(_ZN8S21570C1C1Ev),
  NSPAIR(_ZN8S21570C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21570C1[];
extern void _ZN8S21570C1D1Ev();
extern void _ZN8S21570C1D0Ev();
static  VTBL_ENTRY vtc_S21570C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21570C1[0]),
  (VTBL_ENTRY)&_ZN8S21570C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21570C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21570C1[];
extern  VTBL_ENTRY _ZTV8S21570C1[];
Class_Descriptor cd_S21570C1 = {  "S21570C1", // class name
  0,0,//no base classes
  &(vtc_S21570C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2072,2064), // object size
  NSPAIRA(_ZTI8S21570C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21570C1),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  S949C4  : S2466C4_nt {
};
//SIG(-1 S949C4) C1{ BC2{}}



static void Test_S949C4()
{
  extern Class_Descriptor cd_S949C4;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S949C4, buf);
    S949C4 &lv = *(new (buf) S949C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S949C4)");
    check2(__alignof__(lv), 1, "__alignof__(S949C4)");
    check_base_class_offset(lv, (S2466C4_nt*), 0, "S949C4");
    test_class_info(&lv, &cd_S949C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS949C4(Test_S949C4, "S949C4", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S949C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S949C4 = {  "S949C4", // class name
  bases_S949C4, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S949C3  : S949C4 {
};
//SIG(-1 S949C3) C1{ BC2{ BC3{}}}



static void Test_S949C3()
{
  extern Class_Descriptor cd_S949C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S949C3, buf);
    S949C3 &lv = *(new (buf) S949C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S949C3)");
    check2(__alignof__(lv), 1, "__alignof__(S949C3)");
    check_base_class_offset(lv, (S2466C4_nt*)(S949C4*), 0, "S949C3");
    check_base_class_offset(lv, (S949C4*), 0, "S949C3");
    test_class_info(&lv, &cd_S949C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS949C3(Test_S949C3, "S949C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S949C4;
static Base_Class bases_S949C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S949C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S949C3 = {  "S949C3", // class name
  bases_S949C3, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S949C2  : S949C3 {
  void *s949c2f0;
  int s949c2f1;
};
//SIG(-1 S949C2) C1{ BC2{ BC3{ BC4{}}} Fp Fi}



static void Test_S949C2()
{
  extern Class_Descriptor cd_S949C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S949C2, buf);
    S949C2 &lv = *(new (buf) S949C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S949C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S949C2)");
    check_base_class_offset(lv, (S2466C4_nt*)(S949C4*)(S949C3*), 0, "S949C2");
    check_base_class_offset(lv, (S949C4*)(S949C3*), 0, "S949C2");
    check_base_class_offset(lv, (S949C3*), 0, "S949C2");
    check_field_offset(lv, s949c2f0, 0, "S949C2.s949c2f0");
    check_field_offset(lv, s949c2f1, ABISELECT(8,4), "S949C2.s949c2f1");
    test_class_info(&lv, &cd_S949C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS949C2(Test_S949C2, "S949C2", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S949C4;
extern Class_Descriptor cd_S949C3;
static Base_Class bases_S949C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S949C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S949C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S949C2 = {  "S949C2", // class name
  bases_S949C2, 3,
  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  S949C1  : S949C2 {
};
//SIG(1 S949C1) C1{ BC2{ BC3{ BC4{ BC5{}}} Fp Fi}}



static void Test_S949C1()
{
  extern Class_Descriptor cd_S949C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S949C1, buf);
    S949C1 &lv = *(new (buf) S949C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S949C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S949C1)");
    check_base_class_offset(lv, (S2466C4_nt*)(S949C4*)(S949C3*)(S949C2*), 0, "S949C1");
    check_base_class_offset(lv, (S949C4*)(S949C3*)(S949C2*), 0, "S949C1");
    check_base_class_offset(lv, (S949C3*)(S949C2*), 0, "S949C1");
    check_base_class_offset(lv, (S949C2*), 0, "S949C1");
    test_class_info(&lv, &cd_S949C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS949C1(Test_S949C1, "S949C1", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S949C4;
extern Class_Descriptor cd_S949C3;
extern Class_Descriptor cd_S949C2;
static Base_Class bases_S949C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S949C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S949C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S949C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S949C1 = {  "S949C1", // class name
  bases_S949C1, 4,
  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  S18784C1  {
  void *s18784c1f0[19];
  virtual void  v1(); // _ZN8S18784C12v1Ev
  virtual void  v2(); // _ZN8S18784C12v2Ev
  virtual void  v3(); // _ZN8S18784C12v3Ev
  virtual void  v4(); // _ZN8S18784C12v4Ev
  virtual void  v5(); // _ZN8S18784C12v5Ev
  virtual void  v6(); // _ZN8S18784C12v6Ev
  ~S18784C1(); // tgen
  S18784C1(); // tgen
};
//SIG(1 S18784C1) C1{ v1 v2 v3 v4 v5 v6 Fp[19]}


void  S18784C1 ::v1(){vfunc_called(this, "_ZN8S18784C12v1Ev");}
void  S18784C1 ::v2(){vfunc_called(this, "_ZN8S18784C12v2Ev");}
void  S18784C1 ::v3(){vfunc_called(this, "_ZN8S18784C12v3Ev");}
void  S18784C1 ::v4(){vfunc_called(this, "_ZN8S18784C12v4Ev");}
void  S18784C1 ::v5(){vfunc_called(this, "_ZN8S18784C12v5Ev");}
void  S18784C1 ::v6(){vfunc_called(this, "_ZN8S18784C12v6Ev");}
S18784C1 ::~S18784C1(){ note_dtor("S18784C1", this);} // tgen
S18784C1 ::S18784C1(){ note_ctor("S18784C1", this);} // tgen

static void Test_S18784C1()
{
  extern Class_Descriptor cd_S18784C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[21];
    init_test(&cd_S18784C1, buf);
    S18784C1 *dp, &lv = *(dp=new (buf) S18784C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S18784C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18784C1)");
    check_field_offset(lv, s18784c1f0, ABISELECT(8,4), "S18784C1.s18784c1f0");
    test_class_info(&lv, &cd_S18784C1);
    dp->~S18784C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18784C1(Test_S18784C1, "S18784C1", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S18784C1C1Ev();
extern void _ZN8S18784C1D1Ev();
Name_Map name_map_S18784C1[] = {
  NSPAIR(_ZN8S18784C1C1Ev),
  NSPAIR(_ZN8S18784C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18784C1[];
extern void _ZN8S18784C12v1Ev();
extern void _ZN8S18784C12v2Ev();
extern void _ZN8S18784C12v3Ev();
extern void _ZN8S18784C12v4Ev();
extern void _ZN8S18784C12v5Ev();
extern void _ZN8S18784C12v6Ev();
static  VTBL_ENTRY vtc_S18784C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18784C1[0]),
  (VTBL_ENTRY)&_ZN8S18784C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18784C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18784C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18784C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18784C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18784C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18784C1[];
extern  VTBL_ENTRY _ZTV8S18784C1[];
Class_Descriptor cd_S18784C1 = {  "S18784C1", // class name
  0,0,//no base classes
  &(vtc_S18784C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S18784C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18784C1),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  S12004C3_nt  {
  __tsi64 s12004c3f0;
  void  mf12004c3(); // _ZN11S12004C3_nt9mf12004c3Ev
};
//SIG(-1 S12004C3_nt) C1{ m FL}


void  S12004C3_nt ::mf12004c3(){}

//skip512 S12004C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12004C2_nt  {
  ::S12004C3_nt s12004c2f0;
  void  mf12004c2(); // _ZN11S12004C2_nt9mf12004c2Ev
};
//SIG(-1 S12004C2_nt) C1{ m FC2{ m FL}}


void  S12004C2_nt ::mf12004c2(){}

//skip512 S12004C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12004C1  {
  ::S12004C2_nt s12004c1f0;
  int s12004c1f1;
  char s12004c1f2[2];
};
//SIG(1 S12004C1) C1{ FC2{ m FC3{ m FL}} Fi Fc[2]}



static void Test_S12004C1()
{
  {
    init_simple_test("S12004C1");
    S12004C1 lv;
    check2(sizeof(lv), 16, "sizeof(S12004C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12004C1)");
    check_field_offset(lv, s12004c1f0, 0, "S12004C1.s12004c1f0");
    check_field_offset(lv, s12004c1f1, 8, "S12004C1.s12004c1f1");
    check_field_offset(lv, s12004c1f2, 12, "S12004C1.s12004c1f2");
  }
}
static Arrange_To_Call_Me vS12004C1(Test_S12004C1, "S12004C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19721C3  : virtual S3223C8_nt {
  int s19721c3f0;
  ~S19721C3(); // tgen
  S19721C3(); // tgen
};
//SIG(-1 S19721C3) C1{ VBC2{ m Fi} Fi}


S19721C3 ::~S19721C3(){ note_dtor("S19721C3", this);} // tgen
S19721C3 ::S19721C3(){ note_ctor("S19721C3", this);} // tgen

static void Test_S19721C3()
{
  extern Class_Descriptor cd_S19721C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19721C3, buf);
    S19721C3 *dp, &lv = *(dp=new (buf) S19721C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19721C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19721C3)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(12,8), "S19721C3");
    check_field_offset(lv, s19721c3f0, ABISELECT(8,4), "S19721C3.s19721c3f0");
    test_class_info(&lv, &cd_S19721C3);
    dp->~S19721C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19721C3(Test_S19721C3, "S19721C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19721C3C1Ev();
extern void _ZN8S19721C3D1Ev();
Name_Map name_map_S19721C3[] = {
  NSPAIR(_ZN8S19721C3C1Ev),
  NSPAIR(_ZN8S19721C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
static Base_Class bases_S19721C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19721C3[];
static  VTBL_ENTRY vtc_S19721C3[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19721C3[0]),
};
extern VTBL_ENTRY _ZTV8S19721C3[];
static  VTT_ENTRY vtt_S19721C3[] = {
  {&(_ZTV8S19721C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19721C3[];
extern  VTBL_ENTRY _ZTV8S19721C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19721C3[];
Class_Descriptor cd_S19721C3 = {  "S19721C3", // class name
  bases_S19721C3, 1,
  &(vtc_S19721C3[0]), // expected_vtbl_contents
  &(vtt_S19721C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19721C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19721C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19721C3),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  S19721C1  : virtual S3223C8_nt , S19721C3 {
  int s19721c1f0;
  ~S19721C1(); // tgen
  S19721C1(); // tgen
};
//SIG(1 S19721C1) C1{ VBC2{ m Fi} BC3{ VBC2 Fi} Fi}


S19721C1 ::~S19721C1(){ note_dtor("S19721C1", this);} // tgen
S19721C1 ::S19721C1(){ note_ctor("S19721C1", this);} // tgen

static void Test_S19721C1()
{
  extern Class_Descriptor cd_S19721C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19721C1, buf);
    S19721C1 *dp, &lv = *(dp=new (buf) S19721C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19721C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19721C1)");
    check_base_class_offset(lv, (S3223C8_nt*), ABISELECT(16,12), "S19721C1");
    check_base_class_offset(lv, (S3223C8_nt*)(S19721C3*), ABISELECT(16,12), "S19721C1");
    check_base_class_offset(lv, (S19721C3*), 0, "S19721C1");
    check_field_offset(lv, s19721c1f0, ABISELECT(12,8), "S19721C1.s19721c1f0");
    test_class_info(&lv, &cd_S19721C1);
    dp->~S19721C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19721C1(Test_S19721C1, "S19721C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19721C1C1Ev();
extern void _ZN8S19721C1D1Ev();
Name_Map name_map_S19721C1[] = {
  NSPAIR(_ZN8S19721C1C1Ev),
  NSPAIR(_ZN8S19721C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3223C8_nt;
extern VTBL_ENTRY _ZTI10S3223C8_nt[];
extern Class_Descriptor cd_S19721C3;
extern VTBL_ENTRY _ZTI8S19721C3[];
extern  VTBL_ENTRY _ZTV8S19721C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19721C3[];
static Base_Class bases_S19721C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3223C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19721C3,    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 _ZTI8S19721C1[];
static  VTBL_ENTRY vtc_S19721C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19721C1[0]),
};
extern VTBL_ENTRY _ZTV8S19721C1[];
static  VTBL_ENTRY _tg__ZTV8S19721C3__8S19721C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19721C3[0]),
};
static  VTT_ENTRY vtt_S19721C1[] = {
  {&(_ZTV8S19721C1[3]),  3,3},
  {&(_tg__ZTV8S19721C3__8S19721C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19721C1[];
extern  VTBL_ENTRY _ZTV8S19721C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19721C1[];
Class_Descriptor cd_S19721C1 = {  "S19721C1", // class name
  bases_S19721C1, 2,
  &(vtc_S19721C1[0]), // expected_vtbl_contents
  &(vtt_S19721C1[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19721C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19721C1),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19721C1),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  S13270C2  {
  int s13270c2f0;
  ::S3619C43 s13270c2f1;
};
//SIG(1 S13270C2) U1{ Fi FC2{ Fc Fc}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S13270C1  {
  int s13270c1f0[2];
  ::S13270C2 s13270c1f1;
};
//SIG(1 S13270C1) C1{ Fi[2] FU2{ Fi FC3{ Fc Fc}}}



static void Test_S13270C1()
{
  {
    init_simple_test("S13270C1");
    S13270C1 lv;
    check2(sizeof(lv), 12, "sizeof(S13270C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13270C1)");
    check_field_offset(lv, s13270c1f0, 0, "S13270C1.s13270c1f0");
    check_field_offset(lv, s13270c1f1, 8, "S13270C1.s13270c1f1");
  }
}
static Arrange_To_Call_Me vS13270C1(Test_S13270C1, "S13270C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2464C3  : S2466C4_nt {
};
//SIG(-1 S2464C3) C1{ BC2{}}



static void Test_S2464C3()
{
  extern Class_Descriptor cd_S2464C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2464C3, buf);
    S2464C3 &lv = *(new (buf) S2464C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2464C3)");
    check2(__alignof__(lv), 1, "__alignof__(S2464C3)");
    check_base_class_offset(lv, (S2466C4_nt*), 0, "S2464C3");
    test_class_info(&lv, &cd_S2464C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2464C3(Test_S2464C3, "S2464C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S2464C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2464C3 = {  "S2464C3", // class name
  bases_S2464C3, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2464C2  : S2464C3 {
};
//SIG(-1 S2464C2) C1{ BC2{ BC3{}}}



static void Test_S2464C2()
{
  extern Class_Descriptor cd_S2464C2;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2464C2, buf);
    S2464C2 &lv = *(new (buf) S2464C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2464C2)");
    check2(__alignof__(lv), 1, "__alignof__(S2464C2)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2464C3*), 0, "S2464C2");
    check_base_class_offset(lv, (S2464C3*), 0, "S2464C2");
    test_class_info(&lv, &cd_S2464C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2464C2(Test_S2464C2, "S2464C2", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2464C3;
static Base_Class bases_S2464C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2464C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2464C2 = {  "S2464C2", // class name
  bases_S2464C2, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2464C5  : S2464C3 {
};
//SIG(-1 S2464C5) C1{ BC2{ BC3{}}}



static void Test_S2464C5()
{
  extern Class_Descriptor cd_S2464C5;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2464C5, buf);
    S2464C5 &lv = *(new (buf) S2464C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2464C5)");
    check2(__alignof__(lv), 1, "__alignof__(S2464C5)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2464C3*), 0, "S2464C5");
    check_base_class_offset(lv, (S2464C3*), 0, "S2464C5");
    test_class_info(&lv, &cd_S2464C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2464C5(Test_S2464C5, "S2464C5", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2464C3;
static Base_Class bases_S2464C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2464C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2464C5 = {  "S2464C5", // class name
  bases_S2464C5, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2464C1  : S2464C2 , S2464C5 {
};
//SIG(1 S2464C1) C1{ BC2{ BC3{ BC4{}}} BC5{ BC3}}



static void Test_S2464C1()
{
  extern Class_Descriptor cd_S2464C1;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S2464C1, buf);
    S2464C1 &lv = *(new (buf) S2464C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S2464C1)");
    check2(__alignof__(lv), 1, "__alignof__(S2464C1)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2464C3*)(S2464C2*), 0, "S2464C1");
    check_base_class_offset(lv, (S2464C3*)(S2464C2*), 0, "S2464C1");
    check_base_class_offset(lv, (S2464C2*), 0, "S2464C1");
    check_base_class_offset(lv, (S2466C4_nt*)(S2464C3*)(S2464C5*), 1, "S2464C1");
    check_base_class_offset(lv, (S2464C3*)(S2464C5*), 1, "S2464C1");
    check_base_class_offset(lv, (S2464C5*), 1, "S2464C1");
    test_class_info(&lv, &cd_S2464C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2464C1(Test_S2464C1, "S2464C1", 2);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2464C3;
extern Class_Descriptor cd_S2464C2;
extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2464C3;
extern Class_Descriptor cd_S2464C5;
static Base_Class bases_S2464C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2464C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2464C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2466C4_nt,    1, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2464C3,    1, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2464C5,    1, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2464C1 = {  "S2464C1", // class name
  bases_S2464C1, 6,
  0, // no vftv
  0, //no vtt
  2, // 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  S13112C1  {
  int s13112c1f0[2];
  ::S11247C4_nt s13112c1f1;
  ::S11247C4_nt s13112c1f2;
  int s13112c1f3[2];
};
//SIG(1 S13112C1) C1{ Fi[2] FC2{ Fl} FC2 Fi[2]}



static void Test_S13112C1()
{
  {
    init_simple_test("S13112C1");
    S13112C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13112C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13112C1)");
    check_field_offset(lv, s13112c1f0, 0, "S13112C1.s13112c1f0");
    check_field_offset(lv, s13112c1f1, 8, "S13112C1.s13112c1f1");
    check_field_offset(lv, s13112c1f2, ABISELECT(16,12), "S13112C1.s13112c1f2");
    check_field_offset(lv, s13112c1f3, ABISELECT(24,16), "S13112C1.s13112c1f3");
  }
}
static Arrange_To_Call_Me vS13112C1(Test_S13112C1, "S13112C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9026C2  {
  virtual  ~S9026C2(); // _ZN7S9026C2D1Ev
  virtual void  v2(); // _ZN7S9026C22v2Ev
  S9026C2(); // tgen
};
//SIG(-1 S9026C2) C1{ vd v1}


 S9026C2 ::~S9026C2(){ note_dtor("S9026C2", this);}
void  S9026C2 ::v2(){vfunc_called(this, "_ZN7S9026C22v2Ev");}
S9026C2 ::S9026C2(){ note_ctor("S9026C2", this);} // tgen

static void Test_S9026C2()
{
  extern Class_Descriptor cd_S9026C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9026C2, buf);
    S9026C2 *dp, &lv = *(dp=new (buf) S9026C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9026C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9026C2)");
    test_class_info(&lv, &cd_S9026C2);
    dp->~S9026C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9026C2(Test_S9026C2, "S9026C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9026C2C1Ev();
extern void _ZN7S9026C2D1Ev();
Name_Map name_map_S9026C2[] = {
  NSPAIR(_ZN7S9026C2C1Ev),
  NSPAIR(_ZN7S9026C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9026C2[];
extern void _ZN7S9026C2D1Ev();
extern void _ZN7S9026C2D0Ev();
extern void _ZN7S9026C22v2Ev();
static  VTBL_ENTRY vtc_S9026C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9026C2[0]),
  (VTBL_ENTRY)&_ZN7S9026C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9026C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9026C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9026C2[];
extern  VTBL_ENTRY _ZTV7S9026C2[];
Class_Descriptor cd_S9026C2 = {  "S9026C2", // class name
  0,0,//no base classes
  &(vtc_S9026C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9026C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9026C2),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  S9026C1  : S9026C2 , S21216C26_nt {
  virtual void  v1(); // _ZN7S9026C12v1Ev
  ~S9026C1(); // tgen
  S9026C1(); // tgen
};
//SIG(1 S9026C1) C1{ BC2{ vd v2} BC3{ vd m} v1}


void  S9026C1 ::v1(){vfunc_called(this, "_ZN7S9026C12v1Ev");}
S9026C1 ::~S9026C1(){ note_dtor("S9026C1", this);} // tgen
S9026C1 ::S9026C1(){ note_ctor("S9026C1", this);} // tgen

static void Test_S9026C1()
{
  extern Class_Descriptor cd_S9026C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S9026C1, buf);
    S9026C1 *dp, &lv = *(dp=new (buf) S9026C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S9026C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9026C1)");
    check_base_class_offset(lv, (S9026C2*), 0, "S9026C1");
    check_base_class_offset(lv, (S21216C26_nt*), ABISELECT(8,4), "S9026C1");
    test_class_info(&lv, &cd_S9026C1);
    dp->~S9026C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9026C1(Test_S9026C1, "S9026C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S9026C1C1Ev();
extern void _ZN7S9026C1D1Ev();
Name_Map name_map_S9026C1[] = {
  NSPAIR(_ZN7S9026C1C1Ev),
  NSPAIR(_ZN7S9026C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9026C2;
extern VTBL_ENTRY _ZTI7S9026C2[];
extern  VTBL_ENTRY _ZTV7S9026C2[];
extern Class_Descriptor cd_S21216C26_nt;
extern VTBL_ENTRY _ZTI12S21216C26_nt[];
extern  VTBL_ENTRY _ZTV12S21216C26_nt[];
static Base_Class bases_S9026C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9026C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21216C26_nt,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9026C1[];
extern void _ZN7S9026C1D1Ev();
extern void _ZN7S9026C1D0Ev();
extern void _ZN7S9026C22v2Ev();
extern void _ZN7S9026C12v1Ev();
extern void ABISELECT(_ZThn8_N7S9026C1D1Ev,_ZThn4_N7S9026C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S9026C1D0Ev,_ZThn4_N7S9026C1D0Ev)();
static  VTBL_ENTRY vtc_S9026C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9026C1[0]),
  (VTBL_ENTRY)&_ZN7S9026C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9026C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9026C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9026C12v1Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S9026C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9026C1D1Ev,_ZThn4_N7S9026C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9026C1D0Ev,_ZThn4_N7S9026C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S9026C1[];
extern  VTBL_ENTRY _ZTV7S9026C1[];
Class_Descriptor cd_S9026C1 = {  "S9026C1", // class name
  bases_S9026C1, 2,
  &(vtc_S9026C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S9026C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9026C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12303C1  {
  int s12303c1f0;
  char s12303c1f1[4];
  __tsi64 s12303c1f2[4];
  char s12303c1f3[16];
};
//SIG(1 S12303C1) C1{ Fi Fc[4] FL[4] Fc[16]}



static void Test_S12303C1()
{
  {
    init_simple_test("S12303C1");
    S12303C1 lv;
    check2(sizeof(lv), 56, "sizeof(S12303C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12303C1)");
    check_field_offset(lv, s12303c1f0, 0, "S12303C1.s12303c1f0");
    check_field_offset(lv, s12303c1f1, 4, "S12303C1.s12303c1f1");
    check_field_offset(lv, s12303c1f2, 8, "S12303C1.s12303c1f2");
    check_field_offset(lv, s12303c1f3, 40, "S12303C1.s12303c1f3");
  }
}
static Arrange_To_Call_Me vS12303C1(Test_S12303C1, "S12303C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11617C1  {
  ::S21646C7_nt s11617c1f0;
  ::S21646C7_nt s11617c1f1;
  char s11617c1f2[24];
};
//SIG(1 S11617C1) C1{ FC2{ Fi[3]} FC2 Fc[24]}



static void Test_S11617C1()
{
  {
    init_simple_test("S11617C1");
    S11617C1 lv;
    check2(sizeof(lv), 48, "sizeof(S11617C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11617C1)");
    check_field_offset(lv, s11617c1f0, 0, "S11617C1.s11617c1f0");
    check_field_offset(lv, s11617c1f1, 12, "S11617C1.s11617c1f1");
    check_field_offset(lv, s11617c1f2, 24, "S11617C1.s11617c1f2");
  }
}
static Arrange_To_Call_Me vS11617C1(Test_S11617C1, "S11617C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S951C4  : S2466C4_nt {
};
//SIG(-1 S951C4) C1{ BC2{}}



static void Test_S951C4()
{
  extern Class_Descriptor cd_S951C4;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S951C4, buf);
    S951C4 &lv = *(new (buf) S951C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S951C4)");
    check2(__alignof__(lv), 1, "__alignof__(S951C4)");
    check_base_class_offset(lv, (S2466C4_nt*), 0, "S951C4");
    test_class_info(&lv, &cd_S951C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS951C4(Test_S951C4, "S951C4", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S951C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S951C4 = {  "S951C4", // class name
  bases_S951C4, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S951C3  : S951C4 {
};
//SIG(-1 S951C3) C1{ BC2{ BC3{}}}



static void Test_S951C3()
{
  extern Class_Descriptor cd_S951C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S951C3, buf);
    S951C3 &lv = *(new (buf) S951C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S951C3)");
    check2(__alignof__(lv), 1, "__alignof__(S951C3)");
    check_base_class_offset(lv, (S2466C4_nt*)(S951C4*), 0, "S951C3");
    check_base_class_offset(lv, (S951C4*), 0, "S951C3");
    test_class_info(&lv, &cd_S951C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS951C3(Test_S951C3, "S951C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S951C4;
static Base_Class bases_S951C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S951C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S951C3 = {  "S951C3", // class name
  bases_S951C3, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S951C2  : S951C3 {
};
//SIG(-1 S951C2) C1{ BC2{ BC3{ BC4{}}}}



static void Test_S951C2()
{
  extern Class_Descriptor cd_S951C2;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S951C2, buf);
    S951C2 &lv = *(new (buf) S951C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S951C2)");
    check2(__alignof__(lv), 1, "__alignof__(S951C2)");
    check_base_class_offset(lv, (S2466C4_nt*)(S951C4*)(S951C3*), 0, "S951C2");
    check_base_class_offset(lv, (S951C4*)(S951C3*), 0, "S951C2");
    check_base_class_offset(lv, (S951C3*), 0, "S951C2");
    test_class_info(&lv, &cd_S951C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS951C2(Test_S951C2, "S951C2", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S951C4;
extern Class_Descriptor cd_S951C3;
static Base_Class bases_S951C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S951C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S951C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S951C2 = {  "S951C2", // class name
  bases_S951C2, 3,
  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  S951C1  : S951C2 {
};
//SIG(1 S951C1) C1{ BC2{ BC3{ BC4{ BC5{}}}}}



static void Test_S951C1()
{
  extern Class_Descriptor cd_S951C1;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S951C1, buf);
    S951C1 &lv = *(new (buf) S951C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S951C1)");
    check2(__alignof__(lv), 1, "__alignof__(S951C1)");
    check_base_class_offset(lv, (S2466C4_nt*)(S951C4*)(S951C3*)(S951C2*), 0, "S951C1");
    check_base_class_offset(lv, (S951C4*)(S951C3*)(S951C2*), 0, "S951C1");
    check_base_class_offset(lv, (S951C3*)(S951C2*), 0, "S951C1");
    check_base_class_offset(lv, (S951C2*), 0, "S951C1");
    test_class_info(&lv, &cd_S951C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS951C1(Test_S951C1, "S951C1", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S951C4;
extern Class_Descriptor cd_S951C3;
extern Class_Descriptor cd_S951C2;
static Base_Class bases_S951C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S951C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S951C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S951C1 = {  "S951C1", // class name
  bases_S951C1, 4,
  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  S2465C3  : S2466C4_nt {
};
//SIG(-1 S2465C3) C1{ BC2{}}



static void Test_S2465C3()
{
  extern Class_Descriptor cd_S2465C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2465C3, buf);
    S2465C3 &lv = *(new (buf) S2465C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2465C3)");
    check2(__alignof__(lv), 1, "__alignof__(S2465C3)");
    check_base_class_offset(lv, (S2466C4_nt*), 0, "S2465C3");
    test_class_info(&lv, &cd_S2465C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2465C3(Test_S2465C3, "S2465C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
static Base_Class bases_S2465C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2465C3 = {  "S2465C3", // class name
  bases_S2465C3, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2465C2  : S2465C3 {
};
//SIG(-1 S2465C2) C1{ BC2{ BC3{}}}



static void Test_S2465C2()
{
  extern Class_Descriptor cd_S2465C2;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2465C2, buf);
    S2465C2 &lv = *(new (buf) S2465C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2465C2)");
    check2(__alignof__(lv), 1, "__alignof__(S2465C2)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2465C3*), 0, "S2465C2");
    check_base_class_offset(lv, (S2465C3*), 0, "S2465C2");
    test_class_info(&lv, &cd_S2465C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2465C2(Test_S2465C2, "S2465C2", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2465C3;
static Base_Class bases_S2465C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2465C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2465C2 = {  "S2465C2", // class name
  bases_S2465C2, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2465C1  : S2465C2 {
  char s2465c1f0;
  void *s2465c1f1;
};
//SIG(1 S2465C1) C1{ BC2{ BC3{ BC4{}}} Fc Fp}



static void Test_S2465C1()
{
  extern Class_Descriptor cd_S2465C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2465C1, buf);
    S2465C1 &lv = *(new (buf) S2465C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2465C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2465C1)");
    check_base_class_offset(lv, (S2466C4_nt*)(S2465C3*)(S2465C2*), 0, "S2465C1");
    check_base_class_offset(lv, (S2465C3*)(S2465C2*), 0, "S2465C1");
    check_base_class_offset(lv, (S2465C2*), 0, "S2465C1");
    check_field_offset(lv, s2465c1f0, 0, "S2465C1.s2465c1f0");
    check_field_offset(lv, s2465c1f1, ABISELECT(8,4), "S2465C1.s2465c1f1");
    test_class_info(&lv, &cd_S2465C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2465C1(Test_S2465C1, "S2465C1", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2466C4_nt;
extern Class_Descriptor cd_S2465C3;
extern Class_Descriptor cd_S2465C2;
static Base_Class bases_S2465C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2466C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2465C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2465C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2465C1 = {  "S2465C1", // class name
  bases_S2465C1, 3,
  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

union  S14967C2  {
  ::S3619C43 s14967c2f0;
  int s14967c2f1;
};
//SIG(1 S14967C2) U1{ FC2{ Fc Fc} Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S14967C1  {
  ::S14967C2 s14967c1f0;
  int s14967c1f1;
};
//SIG(1 S14967C1) C1{ FU2{ FC3{ Fc Fc} Fi} Fi}



static void Test_S14967C1()
{
  {
    init_simple_test("S14967C1");
    S14967C1 lv;
    check2(sizeof(lv), 8, "sizeof(S14967C1)");
    check2(__alignof__(lv), 4, "__alignof__(S14967C1)");
    check_field_offset(lv, s14967c1f0, 0, "S14967C1.s14967c1f0");
    check_field_offset(lv, s14967c1f1, 4, "S14967C1.s14967c1f1");
  }
}
static Arrange_To_Call_Me vS14967C1(Test_S14967C1, "S14967C1", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16057C1  {
  ::S3223C13_nt s16057c1f0;
  void *s16057c1f1[2];
  void  mf16057c1(); // _ZN8S16057C19mf16057c1Ev
};
//SIG(1 S16057C1) C1{ m FC2{ m Fi[3]} Fp[2]}


void  S16057C1 ::mf16057c1(){}

static void Test_S16057C1()
{
  {
    init_simple_test("S16057C1");
    S16057C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16057C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16057C1)");
    check_field_offset(lv, s16057c1f0, 0, "S16057C1.s16057c1f0");
    check_field_offset(lv, s16057c1f1, ABISELECT(16,12), "S16057C1.s16057c1f1");
  }
}
static Arrange_To_Call_Me vS16057C1(Test_S16057C1, "S16057C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10897C1  {
  char s10897c1f0[4];
  int s10897c1f1;
  __tsi64 s10897c1f2;
  char s10897c1f3[48];
};
//SIG(1 S10897C1) C1{ Fc[4] Fi FL Fc[48]}



static void Test_S10897C1()
{
  {
    init_simple_test("S10897C1");
    S10897C1 lv;
    check2(sizeof(lv), 64, "sizeof(S10897C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10897C1)");
    check_field_offset(lv, s10897c1f0, 0, "S10897C1.s10897c1f0");
    check_field_offset(lv, s10897c1f1, 4, "S10897C1.s10897c1f1");
    check_field_offset(lv, s10897c1f2, 8, "S10897C1.s10897c1f2");
    check_field_offset(lv, s10897c1f3, 16, "S10897C1.s10897c1f3");
  }
}
static Arrange_To_Call_Me vS10897C1(Test_S10897C1, "S10897C1", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12733C1  {
  int s12733c1f0;
  void *s12733c1f1[11];
  short s12733c1f2[2];
  void *s12733c1f3;
};
//SIG(1 S12733C1) C1{ Fi Fp[11] Fs[2] Fp}



static void Test_S12733C1()
{
  {
    init_simple_test("S12733C1");
    S12733C1 lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S12733C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12733C1)");
    check_field_offset(lv, s12733c1f0, 0, "S12733C1.s12733c1f0");
    check_field_offset(lv, s12733c1f1, ABISELECT(8,4), "S12733C1.s12733c1f1");
    check_field_offset(lv, s12733c1f2, ABISELECT(96,48), "S12733C1.s12733c1f2");
    check_field_offset(lv, s12733c1f3, ABISELECT(104,52), "S12733C1.s12733c1f3");
  }
}
static Arrange_To_Call_Me vS12733C1(Test_S12733C1, "S12733C1", ABISELECT(112,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13660C1  {
  __tsi64 s13660c1f0;
  char s13660c1f1[4];
  int s13660c1f2;
  __tsi64 s13660c1f3[2];
};
//SIG(1 S13660C1) C1{ FL Fc[4] Fi FL[2]}



static void Test_S13660C1()
{
  {
    init_simple_test("S13660C1");
    S13660C1 lv;
    check2(sizeof(lv), 32, "sizeof(S13660C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13660C1)");
    check_field_offset(lv, s13660c1f0, 0, "S13660C1.s13660c1f0");
    check_field_offset(lv, s13660c1f1, 8, "S13660C1.s13660c1f1");
    check_field_offset(lv, s13660c1f2, 12, "S13660C1.s13660c1f2");
    check_field_offset(lv, s13660c1f3, 16, "S13660C1.s13660c1f3");
  }
}
static Arrange_To_Call_Me vS13660C1(Test_S13660C1, "S13660C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16123C1  {
  ::S9526C10_nt s16123c1f0;
  ::S9526C10_nt s16123c1f1;
  void  mf16123c1(); // _ZN8S16123C19mf16123c1Ev
};
//SIG(1 S16123C1) C1{ m FC2{ m FL[2]} FC2}


void  S16123C1 ::mf16123c1(){}

static void Test_S16123C1()
{
  {
    init_simple_test("S16123C1");
    S16123C1 lv;
    check2(sizeof(lv), 32, "sizeof(S16123C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16123C1)");
    check_field_offset(lv, s16123c1f0, 0, "S16123C1.s16123c1f0");
    check_field_offset(lv, s16123c1f1, 16, "S16123C1.s16123c1f1");
  }
}
static Arrange_To_Call_Me vS16123C1(Test_S16123C1, "S16123C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18578C1  {
  int s18578c1f0;
  __tsi64 s18578c1f1;
  int s18578c1f2;
  long double s18578c1f3;
  virtual void  v1(); // _ZN8S18578C12v1Ev
  virtual void  v2(); // _ZN8S18578C12v2Ev
  ~S18578C1(); // tgen
  S18578C1(); // tgen
};
//SIG(1 S18578C1) C1{ v1 v2 Fi FL Fi FD}


void  S18578C1 ::v1(){vfunc_called(this, "_ZN8S18578C12v1Ev");}
void  S18578C1 ::v2(){vfunc_called(this, "_ZN8S18578C12v2Ev");}
S18578C1 ::~S18578C1(){ note_dtor("S18578C1", this);} // tgen
S18578C1 ::S18578C1(){ note_ctor("S18578C1", this);} // tgen

static void Test_S18578C1()
{
  extern Class_Descriptor cd_S18578C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,9)];
    init_test(&cd_S18578C1, buf);
    S18578C1 *dp, &lv = *(dp=new (buf) S18578C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S18578C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18578C1)");
    check_field_offset(lv, s18578c1f0, ABISELECT(8,4), "S18578C1.s18578c1f0");
    check_field_offset(lv, s18578c1f1, ABISELECT(16,8), "S18578C1.s18578c1f1");
    check_field_offset(lv, s18578c1f2, ABISELECT(24,16), "S18578C1.s18578c1f2");
    check_field_offset(lv, s18578c1f3, ABISELECT(32,20), "S18578C1.s18578c1f3");
    test_class_info(&lv, &cd_S18578C1);
    dp->~S18578C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18578C1(Test_S18578C1, "S18578C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S18578C1C1Ev();
extern void _ZN8S18578C1D1Ev();
Name_Map name_map_S18578C1[] = {
  NSPAIR(_ZN8S18578C1C1Ev),
  NSPAIR(_ZN8S18578C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18578C1[];
extern void _ZN8S18578C12v1Ev();
extern void _ZN8S18578C12v2Ev();
static  VTBL_ENTRY vtc_S18578C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18578C1[0]),
  (VTBL_ENTRY)&_ZN8S18578C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18578C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18578C1[];
extern  VTBL_ENTRY _ZTV8S18578C1[];
Class_Descriptor cd_S18578C1 = {  "S18578C1", // class name
  0,0,//no base classes
  &(vtc_S18578C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S18578C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18578C1),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  S10992C1  {
  char s10992c1f0[64];
  short s10992c1f1;
  char s10992c1f2[64];
};
//SIG(1 S10992C1) C1{ Fc[64] Fs Fc[64]}



static void Test_S10992C1()
{
  {
    init_simple_test("S10992C1");
    S10992C1 lv;
    check2(sizeof(lv), 130, "sizeof(S10992C1)");
    check2(__alignof__(lv), 2, "__alignof__(S10992C1)");
    check_field_offset(lv, s10992c1f0, 0, "S10992C1.s10992c1f0");
    check_field_offset(lv, s10992c1f1, 64, "S10992C1.s10992c1f1");
    check_field_offset(lv, s10992c1f2, 66, "S10992C1.s10992c1f2");
  }
}
static Arrange_To_Call_Me vS10992C1(Test_S10992C1, "S10992C1", 130);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16879C1  {
  int s16879c1f0;
  void *s16879c1f1;
  char s16879c1f2[2];
  int s16879c1f3;
  void  mf16879c1(); // _ZN8S16879C19mf16879c1Ev
};
//SIG(1 S16879C1) C1{ m Fi Fp Fc[2] Fi}


void  S16879C1 ::mf16879c1(){}

static void Test_S16879C1()
{
  {
    init_simple_test("S16879C1");
    S16879C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S16879C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16879C1)");
    check_field_offset(lv, s16879c1f0, 0, "S16879C1.s16879c1f0");
    check_field_offset(lv, s16879c1f1, ABISELECT(8,4), "S16879C1.s16879c1f1");
    check_field_offset(lv, s16879c1f2, ABISELECT(16,8), "S16879C1.s16879c1f2");
    check_field_offset(lv, s16879c1f3, ABISELECT(20,12), "S16879C1.s16879c1f3");
  }
}
static Arrange_To_Call_Me vS16879C1(Test_S16879C1, "S16879C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S12880C2  {
  void *s12880c2f0;
  int s12880c2f1;
  int s12880c2f2;
};
//SIG(1 S12880C2) U1{ Fp Fi Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S12880C1  {
  int s12880c1f0;
  ::S12880C2 s12880c1f1;
};
//SIG(1 S12880C1) C1{ Fi FU2{ Fp Fi Fi}}



static void Test_S12880C1()
{
  {
    init_simple_test("S12880C1");
    S12880C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S12880C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12880C1)");
    check_field_offset(lv, s12880c1f0, 0, "S12880C1.s12880c1f0");
    check_field_offset(lv, s12880c1f1, ABISELECT(8,4), "S12880C1.s12880c1f1");
  }
}
static Arrange_To_Call_Me vS12880C1(Test_S12880C1, "S12880C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11878C2_nt  {
  void *s11878c2f0[2];
};
//SIG(-1 S11878C2_nt) C1{ Fp[2]}



//skip512 S11878C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11878C1  {
  ::S11878C2_nt s11878c1f0;
  void *s11878c1f1[2];
};
//SIG(1 S11878C1) C1{ FC2{ Fp[2]} Fp[2]}



static void Test_S11878C1()
{
  {
    init_simple_test("S11878C1");
    S11878C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S11878C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11878C1)");
    check_field_offset(lv, s11878c1f0, 0, "S11878C1.s11878c1f0");
    check_field_offset(lv, s11878c1f1, ABISELECT(16,8), "S11878C1.s11878c1f1");
  }
}
static Arrange_To_Call_Me vS11878C1(Test_S11878C1, "S11878C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10692C1  {
  char s10692c1f0[2];
  short s10692c1f1;
  int s10692c1f2[5];
};
//SIG(1 S10692C1) C1{ Fc[2] Fs Fi[5]}



static void Test_S10692C1()
{
  {
    init_simple_test("S10692C1");
    S10692C1 lv;
    check2(sizeof(lv), 24, "sizeof(S10692C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10692C1)");
    check_field_offset(lv, s10692c1f0, 0, "S10692C1.s10692c1f0");
    check_field_offset(lv, s10692c1f1, 2, "S10692C1.s10692c1f1");
    check_field_offset(lv, s10692c1f2, 4, "S10692C1.s10692c1f2");
  }
}
static Arrange_To_Call_Me vS10692C1(Test_S10692C1, "S10692C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13164C1  {
  int s13164c1f0[2];
  __tsi64 s13164c1f1;
  int s13164c1f2[4];
};
//SIG(1 S13164C1) C1{ Fi[2] FL Fi[4]}



static void Test_S13164C1()
{
  {
    init_simple_test("S13164C1");
    S13164C1 lv;
    check2(sizeof(lv), 32, "sizeof(S13164C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13164C1)");
    check_field_offset(lv, s13164c1f0, 0, "S13164C1.s13164c1f0");
    check_field_offset(lv, s13164c1f1, 8, "S13164C1.s13164c1f1");
    check_field_offset(lv, s13164c1f2, 16, "S13164C1.s13164c1f2");
  }
}
static Arrange_To_Call_Me vS13164C1(Test_S13164C1, "S13164C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12805C1  {
  int s12805c1f0;
  void *s12805c1f1[8];
  char s12805c1f2[8];
};
//SIG(1 S12805C1) C1{ Fi Fp[8] Fc[8]}



static void Test_S12805C1()
{
  {
    init_simple_test("S12805C1");
    S12805C1 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S12805C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12805C1)");
    check_field_offset(lv, s12805c1f0, 0, "S12805C1.s12805c1f0");
    check_field_offset(lv, s12805c1f1, ABISELECT(8,4), "S12805C1.s12805c1f1");
    check_field_offset(lv, s12805c1f2, ABISELECT(72,36), "S12805C1.s12805c1f2");
  }
}
static Arrange_To_Call_Me vS12805C1(Test_S12805C1, "S12805C1", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15133C1  {
  char s15133c1f0;
  void *s15133c1f1;
  int s15133c1f2[3];
  void  mf15133c1(); // _ZN8S15133C19mf15133c1Ev
};
//SIG(1 S15133C1) C1{ m Fc Fp Fi[3]}


void  S15133C1 ::mf15133c1(){}

static void Test_S15133C1()
{
  {
    init_simple_test("S15133C1");
    S15133C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S15133C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15133C1)");
    check_field_offset(lv, s15133c1f0, 0, "S15133C1.s15133c1f0");
    check_field_offset(lv, s15133c1f1, ABISELECT(8,4), "S15133C1.s15133c1f1");
    check_field_offset(lv, s15133c1f2, ABISELECT(16,8), "S15133C1.s15133c1f2");
  }
}
static Arrange_To_Call_Me vS15133C1(Test_S15133C1, "S15133C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5554C1  : S11830C3_nt {
};
//SIG(1 S5554C1) C1{ BC2{ Fp Fi[2]}}



static void Test_S5554C1()
{
  extern Class_Descriptor cd_S5554C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5554C1, buf);
    S5554C1 &lv = *(new (buf) S5554C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5554C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5554C1)");
    check_base_class_offset(lv, (S11830C3_nt*), 0, "S5554C1");
    test_class_info(&lv, &cd_S5554C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5554C1(Test_S5554C1, "S5554C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S11830C3_nt;
static Base_Class bases_S5554C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11830C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5554C1 = {  "S5554C1", // class name
  bases_S5554C1, 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  S6187C1  : S19894C34 {
  ::S19894C17_nt s6187c1f0;
};
//SIG(1 S6187C1) C1{ BC2{ m} FC3{ m}}



static void Test_S6187C1()
{
  extern Class_Descriptor cd_S6187C1;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S6187C1, buf);
    S6187C1 &lv = *(new (buf) S6187C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S6187C1)");
    check2(__alignof__(lv), 1, "__alignof__(S6187C1)");
    check_base_class_offset(lv, (S19894C34*), 0, "S6187C1");
    check_field_offset(lv, s6187c1f0, 0, "S6187C1.s6187c1f0");
    test_class_info(&lv, &cd_S6187C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6187C1(Test_S6187C1, "S6187C1", 1);

#else // __cplusplus

extern Class_Descriptor cd_S19894C34;
extern VTBL_ENTRY _ZTI9S19894C34[];
static Base_Class bases_S6187C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19894C34,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6187C1 = {  "S6187C1", // class name
  bases_S6187C1, 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  S10869C1  {
  char s10869c1f0[38];
  int s10869c1f1[5];
};
//SIG(1 S10869C1) C1{ Fc[38] Fi[5]}



static void Test_S10869C1()
{
  {
    init_simple_test("S10869C1");
    S10869C1 lv;
    check2(sizeof(lv), 60, "sizeof(S10869C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10869C1)");
    check_field_offset(lv, s10869c1f0, 0, "S10869C1.s10869c1f0");
    check_field_offset(lv, s10869c1f1, 40, "S10869C1.s10869c1f1");
  }
}
static Arrange_To_Call_Me vS10869C1(Test_S10869C1, "S10869C1", 60);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17390C1  {
  long s17390c1f0[10];
  int s17390c1f1;
  void  mf17390c1(); // _ZN8S17390C19mf17390c1Ev
};
//SIG(1 S17390C1) C1{ m Fl[10] Fi}


void  S17390C1 ::mf17390c1(){}

static void Test_S17390C1()
{
  {
    init_simple_test("S17390C1");
    S17390C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S17390C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17390C1)");
    check_field_offset(lv, s17390c1f0, 0, "S17390C1.s17390c1f0");
    check_field_offset(lv, s17390c1f1, ABISELECT(80,40), "S17390C1.s17390c1f1");
  }
}
static Arrange_To_Call_Me vS17390C1(Test_S17390C1, "S17390C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18542C1  {
  void *s18542c1f0[2];
  int s18542c1f1;
  virtual void  v1(); // _ZN8S18542C12v1Ev
  ~S18542C1(); // tgen
  S18542C1(); // tgen
};
//SIG(1 S18542C1) C1{ v1 Fp[2] Fi}


void  S18542C1 ::v1(){vfunc_called(this, "_ZN8S18542C12v1Ev");}
S18542C1 ::~S18542C1(){ note_dtor("S18542C1", this);} // tgen
S18542C1 ::S18542C1(){ note_ctor("S18542C1", this);} // tgen

static void Test_S18542C1()
{
  extern Class_Descriptor cd_S18542C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S18542C1, buf);
    S18542C1 *dp, &lv = *(dp=new (buf) S18542C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18542C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18542C1)");
    check_field_offset(lv, s18542c1f0, ABISELECT(8,4), "S18542C1.s18542c1f0");
    check_field_offset(lv, s18542c1f1, ABISELECT(24,12), "S18542C1.s18542c1f1");
    test_class_info(&lv, &cd_S18542C1);
    dp->~S18542C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18542C1(Test_S18542C1, "S18542C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S18542C1C1Ev();
extern void _ZN8S18542C1D1Ev();
Name_Map name_map_S18542C1[] = {
  NSPAIR(_ZN8S18542C1C1Ev),
  NSPAIR(_ZN8S18542C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18542C1[];
extern void _ZN8S18542C12v1Ev();
static  VTBL_ENTRY vtc_S18542C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18542C1[0]),
  (VTBL_ENTRY)&_ZN8S18542C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18542C1[];
extern  VTBL_ENTRY _ZTV8S18542C1[];
Class_Descriptor cd_S18542C1 = {  "S18542C1", // class name
  0,0,//no base classes
  &(vtc_S18542C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S18542C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18542C1),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  S13888C1  {
  long s13888c1f0;
  short s13888c1f1[4];
  long s13888c1f2;
};
//SIG(1 S13888C1) C1{ Fl Fs[4] Fl}



static void Test_S13888C1()
{
  {
    init_simple_test("S13888C1");
    S13888C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13888C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13888C1)");
    check_field_offset(lv, s13888c1f0, 0, "S13888C1.s13888c1f0");
    check_field_offset(lv, s13888c1f1, ABISELECT(8,4), "S13888C1.s13888c1f1");
    check_field_offset(lv, s13888c1f2, ABISELECT(16,12), "S13888C1.s13888c1f2");
  }
}
static Arrange_To_Call_Me vS13888C1(Test_S13888C1, "S13888C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14852C1  {
  short s14852c1f0[128];
  int s14852c1f1;
};
//SIG(1 S14852C1) C1{ Fs[128] Fi}



static void Test_S14852C1()
{
  {
    init_simple_test("S14852C1");
    S14852C1 lv;
    check2(sizeof(lv), 260, "sizeof(S14852C1)");
    check2(__alignof__(lv), 4, "__alignof__(S14852C1)");
    check_field_offset(lv, s14852c1f0, 0, "S14852C1.s14852c1f0");
    check_field_offset(lv, s14852c1f1, 256, "S14852C1.s14852c1f1");
  }
}
static Arrange_To_Call_Me vS14852C1(Test_S14852C1, "S14852C1", 260);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10836C1  {
  char s10836c1f0[32768];
};
//SIG(1 S10836C1) C1{ Fc[32768]}



static void Test_S10836C1()
{
  {
    init_simple_test("S10836C1");
    S10836C1 lv;
    check2(sizeof(lv), 32768, "sizeof(S10836C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10836C1)");
    check_field_offset(lv, s10836c1f0, 0, "S10836C1.s10836c1f0");
  }
}
static Arrange_To_Call_Me vS10836C1(Test_S10836C1, "S10836C1", 32768);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17042C1  {
  int s17042c1f0[14];
  void  mf17042c1(); // _ZN8S17042C19mf17042c1Ev
};
//SIG(1 S17042C1) C1{ m Fi[14]}


void  S17042C1 ::mf17042c1(){}

static void Test_S17042C1()
{
  {
    init_simple_test("S17042C1");
    S17042C1 lv;
    check2(sizeof(lv), 56, "sizeof(S17042C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17042C1)");
    check_field_offset(lv, s17042c1f0, 0, "S17042C1.s17042c1f0");
  }
}
static Arrange_To_Call_Me vS17042C1(Test_S17042C1, "S17042C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14370C1  {
  void *s14370c1f0;
  int s14370c1f1[6];
};
//SIG(1 S14370C1) C1{ Fp Fi[6]}



static void Test_S14370C1()
{
  {
    init_simple_test("S14370C1");
    S14370C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S14370C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14370C1)");
    check_field_offset(lv, s14370c1f0, 0, "S14370C1.s14370c1f0");
    check_field_offset(lv, s14370c1f1, ABISELECT(8,4), "S14370C1.s14370c1f1");
  }
}
static Arrange_To_Call_Me vS14370C1(Test_S14370C1, "S14370C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14741C1  {
  void *s14741c1f0[83];
};
//SIG(1 S14741C1) C1{ Fp[83]}



static void Test_S14741C1()
{
  {
    init_simple_test("S14741C1");
    S14741C1 lv;
    check2(sizeof(lv), ABISELECT(664,332), "sizeof(S14741C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14741C1)");
    check_field_offset(lv, s14741c1f0, 0, "S14741C1.s14741c1f0");
  }
}
static Arrange_To_Call_Me vS14741C1(Test_S14741C1, "S14741C1", ABISELECT(664,332));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

